diff options
| author | Joel Klinghed <the_jk@spawned.biz> | 2025-09-04 22:24:31 +0200 |
|---|---|---|
| committer | Joel Klinghed <the_jk@spawned.biz> | 2025-09-04 22:24:31 +0200 |
| commit | bf900719174913774e9559302ac90e11c68ac87a (patch) | |
| tree | d9cbc9bba5cbc8ab1fb6082fcd12162d9072b8a7 /test/args.cc | |
| parent | 65860e6c873e6e056fe3d1dadd1d309b1bd66e7b (diff) | |
args: Increase test coverage
Diffstat (limited to 'test/args.cc')
| -rw-r--r-- | test/args.cc | 54 |
1 files changed, 54 insertions, 0 deletions
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()); +} |
