#include #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"); }