1 #include <cppunit/config/SourcePrefix.h>
2 #include "FailureException.h"
3 #include "HelperMacrosTest.h"
4 #include "HelperSuite.h"
5 #include "MockTestCase.h"
6 #include "SubclassedTestCase.h"
7 #include <cppunit/TestResult.h>
8 #include <memory>
9
10 /* Note:
11 - no unit test for CPPUNIT_TEST_SUITE_REGISTRATION...
12 */
13
14 class FailTestFixture : public CPPUNIT_NS::TestFixture
15 {
16 CPPUNIT_TEST_SUITE( FailTestFixture );
17 CPPUNIT_TEST_FAIL( testFail );
18 CPPUNIT_TEST_SUITE_END();
19 public:
testFail()20 void testFail()
21 {
22 CPPUNIT_ASSERT_MESSAGE( "Failure", false );
23 }
24 };
25
26
27 class FailToFailTestFixture : public CPPUNIT_NS::TestFixture
28 {
29 CPPUNIT_TEST_SUITE( FailToFailTestFixture );
30 CPPUNIT_TEST_FAIL( testFailToFail );
31 CPPUNIT_TEST_SUITE_END();
32 public:
testFailToFail()33 void testFailToFail()
34 {
35 }
36 };
37
38
39 class ExceptionTestFixture : public CPPUNIT_NS::TestFixture
40 {
41 CPPUNIT_TEST_SUITE( ExceptionTestFixture );
42 CPPUNIT_TEST_EXCEPTION( testException, FailureException );
43 CPPUNIT_TEST_SUITE_END();
44 public:
testException()45 void testException()
46 {
47 throw FailureException();
48 }
49 };
50
51
52 class ExceptionNotCaughtTestFixture : public CPPUNIT_NS::TestFixture
53 {
54 CPPUNIT_TEST_SUITE( ExceptionNotCaughtTestFixture );
55 CPPUNIT_TEST_EXCEPTION( testExceptionNotCaught, FailureException );
56 CPPUNIT_TEST_SUITE_END();
57 public:
testExceptionNotCaught()58 void testExceptionNotCaught()
59 {
60 }
61 };
62
63
64 class CustomsTestTestFixture : public CPPUNIT_NS::TestFixture
65 {
66 CPPUNIT_TEST_SUITE( CustomsTestTestFixture );
67 CPPUNIT_TEST_SUITE_ADD_CUSTOM_TESTS( addCustomTests );
68 CPPUNIT_TEST_SUITE_END();
69 public:
addCustomTests(TestSuiteBuilderContextType & context)70 static void addCustomTests( TestSuiteBuilderContextType &context )
71 {
72 MockTestCase *test1 = new MockTestCase( context.getTestNameFor( "myCustomTest1" ) );
73 test1->makeRunTestThrow();
74 MockTestCase *test2 = new MockTestCase( context.getTestNameFor( "myCustomTest2" ) );
75 context.addTest( test1 );
76 context.addTest( test2 );
77 }
78 };
79
80 class ParameterizedTestFixture : public CPPUNIT_NS::TestFixture
81 {
82 CPPUNIT_TEST_SUITE(ParameterizedTestFixture);
83 CPPUNIT_TEST_PARAMETERIZED(testMethod, {1, 2, 3, 4});
84 CPPUNIT_TEST_SUITE_END();
85
86 public:
87
testMethod(int)88 void testMethod(int /*val*/)
89 {
90 }
91 };
92
93
94 #undef TEST_ADD_N_MOCK
95 #define TEST_ADD_N_MOCK( totalCount ) \
96 { \
97 for ( int count = (totalCount); count > 0; --count ) \
98 CPPUNIT_TEST_SUITE_ADD_TEST( \
99 new MockTestCase( context.getTestNameFor( "dummyName" ) ) ); \
100 }
101
102
103
104 class AddTestTestFixture : public CPPUNIT_NS::TestFixture
105 {
106 CPPUNIT_TEST_SUITE( AddTestTestFixture );
107 TEST_ADD_N_MOCK( 7 );
108 CPPUNIT_TEST_SUITE_END();
109 public:
110 };
111
112
113
114 CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( HelperMacrosTest,
115 helperSuiteName() );
116
117
HelperMacrosTest()118 HelperMacrosTest::HelperMacrosTest()
119 {
120 }
121
122
~HelperMacrosTest()123 HelperMacrosTest::~HelperMacrosTest()
124 {
125 }
126
127
128 void
setUp()129 HelperMacrosTest::setUp()
130 {
131 m_testListener = new MockTestListener( "mock-testlistener" );
132 m_result = new CPPUNIT_NS::TestResult();
133 m_result->addListener( m_testListener );
134 }
135
136
137 void
tearDown()138 HelperMacrosTest::tearDown()
139 {
140 delete m_result;
141 delete m_testListener;
142 }
143
144
145 void
testNoSubclassing()146 HelperMacrosTest::testNoSubclassing()
147 {
148 std::unique_ptr<CPPUNIT_NS::TestSuite> suite( BaseTestCase::suite() );
149 CPPUNIT_ASSERT_EQUAL( 1, suite->countTestCases() );
150 m_testListener->setExpectedStartTestCall( 1 );
151 m_testListener->setExpectNoFailure();
152
153 suite->run( m_result );
154 m_testListener->verify();
155 }
156
157
158 void
testSubclassing()159 HelperMacrosTest::testSubclassing()
160 {
161 std::unique_ptr<CPPUNIT_NS::TestSuite> suite( SubclassedTestCase::suite() );
162 CPPUNIT_ASSERT_EQUAL( 2, suite->countTestCases() );
163 m_testListener->setExpectedStartTestCall( 2 );
164 m_testListener->setExpectedAddFailureCall( 1 );
165
166 suite->run( m_result );
167 m_testListener->verify();
168 }
169
170
171 void
testFail()172 HelperMacrosTest::testFail()
173 {
174 std::unique_ptr<CPPUNIT_NS::TestSuite> suite( FailTestFixture::suite() );
175 m_testListener->setExpectedStartTestCall( 1 );
176 m_testListener->setExpectNoFailure();
177
178 suite->run( m_result );
179 m_testListener->verify();
180 }
181
182
183 void
testFailToFail()184 HelperMacrosTest::testFailToFail()
185 {
186 std::unique_ptr<CPPUNIT_NS::TestSuite> suite( FailToFailTestFixture::suite() );
187 m_testListener->setExpectedStartTestCall( 1 );
188 m_testListener->setExpectedAddFailureCall( 1 );
189
190 suite->run( m_result );
191 m_testListener->verify();
192 }
193
194
195 void
testException()196 HelperMacrosTest::testException()
197 {
198 std::unique_ptr<CPPUNIT_NS::TestSuite> suite( ExceptionTestFixture::suite() );
199 m_testListener->setExpectedStartTestCall( 1 );
200 m_testListener->setExpectNoFailure();
201
202 suite->run( m_result );
203 m_testListener->verify();
204 }
205
206
207 void
testExceptionNotCaught()208 HelperMacrosTest::testExceptionNotCaught()
209 {
210 std::unique_ptr<CPPUNIT_NS::TestSuite> suite( ExceptionNotCaughtTestFixture::suite() );
211 m_testListener->setExpectedStartTestCall( 1 );
212 m_testListener->setExpectedAddFailureCall( 1 );
213
214 suite->run( m_result );
215 m_testListener->verify();
216 }
217
218
219 void
testCustomTests()220 HelperMacrosTest::testCustomTests()
221 {
222 std::unique_ptr<CPPUNIT_NS::TestSuite> suite( CustomsTestTestFixture::suite() );
223 m_testListener->setExpectedStartTestCall( 2 );
224 m_testListener->setExpectedAddFailureCall( 1 );
225
226 suite->run( m_result );
227 m_testListener->verify();
228 }
229
230
231 void
testAddTest()232 HelperMacrosTest::testAddTest()
233 {
234 std::unique_ptr<CPPUNIT_NS::TestSuite> suite( AddTestTestFixture::suite() );
235 m_testListener->setExpectedStartTestCall( 7 );
236 m_testListener->setExpectedAddFailureCall( 0 );
237
238 suite->run( m_result );
239 m_testListener->verify();
240 }
241
242 void
testParameterizedTests()243 HelperMacrosTest::testParameterizedTests()
244 {
245 std::unique_ptr<CPPUNIT_NS::TestSuite> suite( ParameterizedTestFixture::suite() );
246 m_testListener->setExpectedStartTestCall(4);
247 m_testListener->setExpectedAddFailureCall( 0 );
248 suite->run(m_result);
249 m_testListener->verify();
250 }
251