From bf900719174913774e9559302ac90e11c68ac87a Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Thu, 4 Sep 2025 22:24:31 +0200 Subject: args: Increase test coverage --- test/args.cc | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/test/args.cc b/test/args.cc index 8c8c06c..b60a4a4 100644 --- a/test/args.cc +++ b/test/args.cc @@ -188,6 +188,19 @@ TEST(args, options_short_missing_value) { EXPECT_EQ("foo: option requires an argument -- 'd'\n", ss.str()); } +TEST(args, options_short_unknown_value) { + auto args = Args::create(); + SETUP_OPTIONS(args); + Builder builder; + auto arg = builder.add("foo") + .add("-X") + .build(); + EXPECT_FALSE(args->run(arg.c(), arg.v())); + std::stringstream ss; + args->print_error(ss); + EXPECT_EQ("foo: invalid option -- 'X'\n", ss.str()); +} + TEST(args, options_long_missing_value) { auto args = Args::create(); SETUP_OPTIONS(args); @@ -201,6 +214,32 @@ TEST(args, options_long_missing_value) { EXPECT_EQ("foo: option '--form' requires an argument\n", ss.str()); } +TEST(args, options_long_unsupported_value) { + auto args = Args::create(); + SETUP_OPTIONS(args); + Builder builder; + auto arg = builder.add("foo") + .add("--cold=feet") + .build(); + EXPECT_FALSE(args->run(arg.c(), arg.v())); + std::stringstream ss; + args->print_error(ss); + EXPECT_EQ("foo: option '--cold' doesn't allow an argument\n", ss.str()); +} + +TEST(args, options_long_unknown_value) { + auto args = Args::create(); + SETUP_OPTIONS(args); + Builder builder; + auto arg = builder.add("foo") + .add("--experience") + .build(); + EXPECT_FALSE(args->run(arg.c(), arg.v())); + std::stringstream ss; + args->print_error(ss); + EXPECT_EQ("foo: unrecognized option '--experience'\n", ss.str()); +} + TEST(args, options_short_dash_value) { auto args = Args::create(); SETUP_OPTIONS(args); @@ -356,3 +395,18 @@ circle, shape or --invert=[ARG] )", ss.str()); } + +TEST(args, help_long_word) { + auto args = Args::create(); + std::stringstream ss; + auto opt = args->option('a', "arg", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + args->print_help(ss, 20); + EXPECT_EQ(R"(Mandatory arguments + to long options are + mandatory for short + options too. + -a, --arg +aaaaaaaaaaaaaaaaaaa- +aaaaaaaaaaaaaaaaaaa +)", ss.str()); +} -- cgit v1.3