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);