Mercurial > code
changeset 237:887d43215b90
OptionParser: add more tests
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sat, 05 Jul 2014 09:06:39 +0200 |
parents | ff2db0ed78f1 |
children | b97d75a78e22 9b69f810d3b9 |
files | C++/Tests/OptionParser/main.cpp |
diffstat | 1 files changed, 43 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/C++/Tests/OptionParser/main.cpp Fri Jul 04 22:16:04 2014 +0200 +++ b/C++/Tests/OptionParser/main.cpp Sat Jul 05 09:06:39 2014 +0200 @@ -187,6 +187,49 @@ ASSERT_EQ("false", option->value()); } +/* + * -o readonly -o loop -v -v -f true -f false + */ +TEST(OptionParser, numberedstrict) +{ + OptionParser parser; + const char *argv[] = { "-o", "readonly", "-o", "loop", "-v", "-v", "-f", "true", "-f", "false" }; + + parser.add(Option("o", "option", Option::Argument)); + parser.add(Option("v", "verbose")); + parser.add(Option("f", "fullscreen", Option::Argument, Option::Single)); + + auto result = parser.parse(LENGTH(argv), argv, OptionParser::Silent | OptionParser::Strict); + auto option = result.cbegin(); + + ASSERT_EQ(5, result.count()); + ASSERT_EQ(8, result.total()); + + // -o readonly + ASSERT_EQ("o", option->name()); + ASSERT_EQ("readonly", option->value()); + + // -o loop + std::advance(option, 1); + ASSERT_EQ("o", option->name()); + ASSERT_EQ("loop", option->value()); + + // -v + std::advance(option, 1); + ASSERT_EQ("v", option->name()); + ASSERT_EQ("", option->value()); + + // -v + std::advance(option, 1); + ASSERT_EQ("v", option->name()); + ASSERT_EQ("", option->value()); + + // -f true + std::advance(option, 1); + ASSERT_EQ("f", option->name()); + ASSERT_EQ("true", option->value()); +} + int main(int argc, char **argv) { testing::InitGoogleTest(&argc, argv);