diff options
| -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()); +} |
