diff options
Diffstat (limited to 'src/test-option-parser.cc')
-rw-r--r-- | src/test-option-parser.cc | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/test-option-parser.cc b/src/test-option-parser.cc index 3d190e71..9295c581 100644 --- a/src/test-option-parser.cc +++ b/src/test-option-parser.cc @@ -150,3 +150,32 @@ TEST(OptionParser, OneOrMoreArguments) { parser.Parse(3, const_cast<char**>(args)); EXPECT_EQ("hellogoodbye", argument); } + +TEST(OptionParser, ZeroOrMoreArguments) { + std::string argument; + OptionParser parser("prog", "desc"); + parser.AddArgument("arg", OptionParser::ArgumentCount::ZeroOrMore, + [&](const char* arg) { argument += arg; }); + + const char* args_none[] = {"prog name"}; + parser.Parse(1, const_cast<char**>(args_none)); + EXPECT_EQ("", argument); + + const char* args_many[] = {"prog name", "hello", "goodbye"}; + parser.Parse(3, const_cast<char**>(args_many)); + EXPECT_EQ("hellogoodbye", argument); +} + +TEST(OptionParser, StopProccessing) { + std::string argument; + bool has_x = false; + OptionParser parser("prog", "desc"); + parser.AddArgument("arg", OptionParser::ArgumentCount::ZeroOrMore, + [&](const char* arg) { argument += arg; }); + parser.AddOption('x', "x", "help", [&]() { has_x = true; }); + + const char* args_many[] = {"prog name", "-x", "--", "foo", "-x", "-y", "bar"}; + parser.Parse(7, const_cast<char**>(args_many)); + EXPECT_TRUE(has_x); + EXPECT_EQ("foo-x-ybar", argument); +} |