summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@spawned.biz>2025-09-04 22:24:31 +0200
committerJoel Klinghed <the_jk@spawned.biz>2025-09-04 22:24:31 +0200
commitbf900719174913774e9559302ac90e11c68ac87a (patch)
treed9cbc9bba5cbc8ab1fb6082fcd12162d9072b8a7 /test
parent65860e6c873e6e056fe3d1dadd1d309b1bd66e7b (diff)
args: Increase test coverage
Diffstat (limited to 'test')
-rw-r--r--test/args.cc54
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());
+}