@@ -35,16 +35,15 @@ class TestOptions : public TestFixture {
3535 TEST_CASE(which_test);
3636 TEST_CASE(which_test_method);
3737 TEST_CASE(no_test_method);
38- TEST_CASE(not_quiet);
3938 TEST_CASE(quiet);
40- TEST_CASE(not_help);
4139 TEST_CASE(help);
4240 TEST_CASE(help_long);
4341 TEST_CASE(multiple_testcases);
4442 TEST_CASE(multiple_testcases_ignore_duplicates);
4543 TEST_CASE(invalid_switches);
4644 TEST_CASE(summary);
4745 TEST_CASE(dry_run);
46+ TEST_CASE(exclude_tests);
4847 }
4948
5049
@@ -55,6 +54,7 @@ class TestOptions : public TestFixture {
5554 { "TestClass", {} }
5655 };
5756 ASSERT(expected == args.which_tests());
57+ ASSERT(args.errors().empty());
5858 }
5959
6060
@@ -65,6 +65,7 @@ class TestOptions : public TestFixture {
6565 { "TestClass", {"TestMethod"} }
6666 };
6767 ASSERT(expected == args.which_tests());
68+ ASSERT(args.errors().empty());
6869 }
6970
7071
@@ -73,40 +74,41 @@ class TestOptions : public TestFixture {
7374 options args(getArrayLength(argv), argv);
7475 const std::map<std::string, std::set<std::string>> expected{};
7576 ASSERT(expected == args.which_tests());
77+ ASSERT(args.errors().empty());
7678 }
7779
7880
79- void not_quiet () const {
80- const char* argv[] = {"./test_runner", "TestClass::TestMethod", "-v" };
81+ void defaults () const {
82+ const char* argv[] = {"./test_runner", "TestClass::TestMethod"};
8183 options args(getArrayLength(argv), argv);
8284 ASSERT_EQUALS(false, args.quiet());
85+ ASSERT_EQUALS(false, args.help());
86+ ASSERT_EQUALS(false, args.summary());
87+ ASSERT_EQUALS(false, args.dry_run());
88+ ASSERT_EQUALS(false, args.exclude_tests());
89+ ASSERT(args.errors().empty());
8390 }
8491
85-
8692 void quiet() const {
8793 const char* argv[] = {"./test_runner", "TestClass::TestMethod", "-q"};
8894 options args(getArrayLength(argv), argv);
8995 ASSERT_EQUALS(true, args.quiet());
96+ ASSERT(args.errors().empty());
9097 }
9198
92- void not_help() const {
93- const char* argv[] = {"./test_runner", "TestClass::TestMethod", "-v"};
94- options args(getArrayLength(argv), argv);
95- ASSERT_EQUALS(false, args.help());
96- }
97-
98-
9999 void help() const {
100100 const char* argv[] = {"./test_runner", "TestClass::TestMethod", "-h"};
101101 options args(getArrayLength(argv), argv);
102102 ASSERT_EQUALS(true, args.help());
103+ ASSERT(args.errors().empty());
103104 }
104105
105106
106107 void help_long() const {
107108 const char* argv[] = {"./test_runner", "TestClass::TestMethod", "--help"};
108109 options args(getArrayLength(argv), argv);
109110 ASSERT_EQUALS(true, args.help());
111+ ASSERT(args.errors().empty());
110112 }
111113
112114 void multiple_testcases() const {
@@ -116,6 +118,7 @@ class TestOptions : public TestFixture {
116118 { "TestClass", { "TestMethod", "AnotherTestMethod" } }
117119 };
118120 ASSERT(expected == args.which_tests());
121+ ASSERT(args.errors().empty());
119122 }
120123
121124 void multiple_testcases_ignore_duplicates() const {
@@ -125,6 +128,7 @@ class TestOptions : public TestFixture {
125128 { "TestClass", {} }
126129 };
127130 ASSERT(expected == args.which_tests());
131+ ASSERT(args.errors().empty());
128132 }
129133
130134 void invalid_switches() const {
@@ -135,18 +139,32 @@ class TestOptions : public TestFixture {
135139 };
136140 ASSERT(expected == args.which_tests());
137141 ASSERT_EQUALS(true, args.quiet());
142+ ASSERT_EQUALS(2, args.errors().size());
143+ auto it = args.errors().cbegin();
144+ ASSERT_EQUALS("unknown option '-a'", *it);
145+ ++it;
146+ ASSERT_EQUALS("unknown option '-v'", *it);
138147 }
139148
140149 void summary() const {
141150 const char* argv[] = {"./test_runner", "TestClass::TestMethod", "-n"};
142151 options args(getArrayLength(argv), argv);
143152 ASSERT_EQUALS(false, args.summary());
153+ ASSERT(args.errors().empty());
144154 }
145155
146156 void dry_run() const {
147157 const char* argv[] = {"./test_runner", "TestClass::TestMethod", "-d"};
148158 options args(getArrayLength(argv), argv);
149159 ASSERT_EQUALS(true, args.dry_run());
160+ ASSERT(args.errors().empty());
161+ }
162+
163+ void exclude_tests() const {
164+ const char* argv[] = {"./test_runner", "TestClass::TestMethod", "-x"};
165+ options args(getArrayLength(argv), argv);
166+ ASSERT_EQUALS(true, args.exclude_tests());
167+ ASSERT(args.errors().empty());
150168 }
151169};
152170
0 commit comments