Files
oak-editor/tests/gtest/common_commandlineparser_test.cpp
T
Mike-Solar c57608b8f8 test: expand gtest coverage for common/core utilities
Add unit tests for:
- CommandLineParser, Debug handler, Decibel, Digit, JobTime, FFmpegUtils
- Core StringUtils, Timecode, TimeRange, Bezier, Color
- Extend Frame tests to cover pixel access, interlace, conversion

Coverage improvements (app + ext/core):
- commandlineparser.cpp: 0% -> 93%
- debug.cpp: 0% -> 85%
- decibel.h: 25% -> 88%
- digit.h: 0% -> 100%
- ffmpegutils.cpp: 29% -> 90%
- frame.cpp: 53% -> 97%
- bezier.cpp: 16% -> 98%
- color.cpp: 13% -> 71%
- Overall line coverage: 17% -> 19%
2026-07-13 10:19:30 +08:00

84 lines
2.5 KiB
C++

#include <gtest/gtest.h>
#include "common/commandlineparser.h"
TEST(CommonCommandLineParser, OptionWithoutArgument)
{
CommandLineParser parser;
const CommandLineParser::Option *opt = parser.AddOption(
{QStringLiteral("help"), QStringLiteral("h")},
QStringLiteral("Show help"), false);
parser.Process({QStringLiteral("app"), QStringLiteral("-help")});
EXPECT_TRUE(opt->IsSet());
}
TEST(CommonCommandLineParser, ShortOption)
{
CommandLineParser parser;
const CommandLineParser::Option *opt = parser.AddOption(
{QStringLiteral("help"), QStringLiteral("h")},
QStringLiteral("Show help"), false);
parser.Process({QStringLiteral("app"), QStringLiteral("-h")});
EXPECT_TRUE(opt->IsSet());
}
TEST(CommonCommandLineParser, OptionWithArgument)
{
CommandLineParser parser;
const CommandLineParser::Option *opt = parser.AddOption(
{QStringLiteral("project")}, QStringLiteral("Project file"), true,
QStringLiteral("file"));
parser.Process({QStringLiteral("app"), QStringLiteral("-project"),
QStringLiteral("test.ove")});
EXPECT_TRUE(opt->IsSet());
EXPECT_EQ(opt->GetSetting(), QStringLiteral("test.ove"));
}
TEST(CommonCommandLineParser, PositionalArgument)
{
CommandLineParser parser;
const CommandLineParser::PositionalArgument *arg =
parser.AddPositionalArgument(QStringLiteral("filename"),
QStringLiteral("Project file"), true);
parser.Process({QStringLiteral("app"), QStringLiteral("test.ove")});
EXPECT_EQ(arg->GetSetting(), QStringLiteral("test.ove"));
}
TEST(CommonCommandLineParser, UnknownOptionWarning)
{
CommandLineParser parser;
parser.AddOption({QStringLiteral("known")}, QStringLiteral("Known"));
// Should not crash; unknown option is logged
parser.Process({QStringLiteral("app"), QStringLiteral("-unknown")});
}
TEST(CommonCommandLineParser, UnknownPositionalWarning)
{
CommandLineParser parser;
// Should not crash; unknown positional is logged
parser.Process({QStringLiteral("app"), QStringLiteral("extra")});
}
TEST(CommonCommandLineParser, HiddenOptionExcludedFromHelp)
{
CommandLineParser parser;
parser.AddOption({QStringLiteral("visible")}, QStringLiteral("Visible"));
parser.AddOption({QStringLiteral("hidden")}, QStringLiteral("Hidden"),
false, QString(), true);
parser.AddPositionalArgument(QStringLiteral("file"),
QStringLiteral("Input file"));
// Should not crash; hidden option should be skipped during help output
parser.PrintHelp("/usr/bin/app");
}