1 #include "CoreSuite.h"
2 #include "TestSuiteTest.h"
3 #include <cppunit/TestResult.h>
4 #include "MockTestCase.h"
5 
6 
7 CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestSuiteTest,
8                                        coreSuiteName() );
9 
10 
TestSuiteTest()11 TestSuiteTest::TestSuiteTest()
12 {
13 }
14 
15 
~TestSuiteTest()16 TestSuiteTest::~TestSuiteTest()
17 {
18 }
19 
20 
21 void
setUp()22 TestSuiteTest::setUp()
23 {
24   m_suite = new CPPUNIT_NS::TestSuite();
25 }
26 
27 
28 void
tearDown()29 TestSuiteTest::tearDown()
30 {
31   delete m_suite;
32 }
33 
34 
35 void
testConstructor()36 TestSuiteTest::testConstructor()
37 {
38   std::string name( "MySuite" );
39   CPPUNIT_NS::TestSuite suite( name );
40   CPPUNIT_ASSERT_EQUAL( name, suite.getName() );
41 }
42 
43 
44 void
testCountTestCasesWithNoTest()45 TestSuiteTest::testCountTestCasesWithNoTest()
46 {
47   CPPUNIT_ASSERT_EQUAL( 0, m_suite->countTestCases() );
48 }
49 
50 
51 void
testCountTestCasesWithTwoTests()52 TestSuiteTest::testCountTestCasesWithTwoTests()
53 {
54   MockTestCase *case1 = new MockTestCase( "test1" );
55   case1->setExpectedCountTestCasesCall();
56   MockTestCase *case2 = new MockTestCase( "test2" );
57   case2->setExpectedCountTestCasesCall();
58   m_suite->addTest( case1 );
59   m_suite->addTest( case2 );
60 
61   CPPUNIT_ASSERT_EQUAL( 2, m_suite->countTestCases() );
62   case1->verify();
63   case2->verify();
64 }
65 
66 
67 void
testCountTestCasesWithSubSuite()68 TestSuiteTest::testCountTestCasesWithSubSuite()
69 {
70   MockTestCase *case1 = new MockTestCase( "test1" );
71   case1->setExpectedCountTestCasesCall();
72   MockTestCase *case2 = new MockTestCase( "test2" );
73   case2->setExpectedCountTestCasesCall();
74   MockTestCase *case3 = new MockTestCase( "test3" );
75   case3->setExpectedCountTestCasesCall();
76   CPPUNIT_NS::TestSuite *subSuite = new CPPUNIT_NS::TestSuite( "SubSuite");
77   subSuite->addTest( case1 );
78   subSuite->addTest( case2 );
79   m_suite->addTest( case3 );
80   m_suite->addTest( subSuite );
81 
82   CPPUNIT_ASSERT_EQUAL( 3, m_suite->countTestCases() );
83   case1->verify();
84   case2->verify();
85   case3->verify();
86 }
87 
88 
89 void
testRunWithOneTest()90 TestSuiteTest::testRunWithOneTest()
91 {
92   MockTestCase *case1 = new MockTestCase( "test1" );
93   case1->setExpectedRunTestCall();
94   m_suite->addTest( case1 );
95 
96   CPPUNIT_NS::TestResult result;
97   m_suite->run( &result );
98 
99   case1->verify();
100 }
101 
102 
103 void
testRunWithOneTestAndSubSuite()104 TestSuiteTest::testRunWithOneTestAndSubSuite()
105 {
106   MockTestCase *case1 = new MockTestCase( "test1" );
107   case1->setExpectedRunTestCall();
108   MockTestCase *case2 = new MockTestCase( "test2" );
109   case2->setExpectedRunTestCall();
110   MockTestCase *case3 = new MockTestCase( "test3" );
111   case3->setExpectedRunTestCall();
112   CPPUNIT_NS::TestSuite *subSuite = new CPPUNIT_NS::TestSuite( "SubSuite");
113   subSuite->addTest( case1 );
114   subSuite->addTest( case2 );
115   m_suite->addTest( case3 );
116   m_suite->addTest( subSuite);
117 
118   CPPUNIT_NS::TestResult result;
119   m_suite->run( &result );
120 
121   case1->verify();
122   case2->verify();
123   case3->verify();
124 }
125 
126 
127 void
testGetTests()128 TestSuiteTest::testGetTests()
129 {
130   m_suite->addTest( new CPPUNIT_NS::TestCase( "test1" ) );
131   m_suite->addTest( new CPPUNIT_NS::TestCase( "test2" ) );
132   CPPUNIT_ASSERT_EQUAL( 2, int(m_suite->getTests().size()) );
133 }
134 
135 
136 void
testDeleteContents()137 TestSuiteTest::testDeleteContents()
138 {
139   m_suite->addTest( new CPPUNIT_NS::TestCase( "test2" ) );
140   m_suite->deleteContents();
141   CPPUNIT_ASSERT_EQUAL( 0, int(m_suite->getTests().size()) );
142 }
143 
144 
145 void
testGetChildTestCount()146 TestSuiteTest::testGetChildTestCount()
147 {
148   m_suite->addTest( new CPPUNIT_NS::TestCase( "test1" ) );
149   m_suite->addTest( new CPPUNIT_NS::TestCase( "test2" ) );
150 
151   CPPUNIT_ASSERT_EQUAL( 2, m_suite->getChildTestCount() );
152 }
153 
154 
155 void
testGetChildTestAt()156 TestSuiteTest::testGetChildTestAt()
157 {
158   CPPUNIT_NS::TestCase *test1 = new CPPUNIT_NS::TestCase( "test1" );
159   CPPUNIT_NS::TestCase *test2 = new CPPUNIT_NS::TestCase( "test2" );
160   m_suite->addTest( test1 );
161   m_suite->addTest( test2 );
162 
163   CPPUNIT_ASSERT( test1 == m_suite->getChildTestAt(0) );
164   CPPUNIT_ASSERT( test2 == m_suite->getChildTestAt(1) );
165 }
166 
167 
168 void
testGetChildTestAtThrow1()169 TestSuiteTest::testGetChildTestAtThrow1()
170 {
171   m_suite->getChildTestAt(-1);
172 }
173 
174 
175 void
testGetChildTestAtThrow2()176 TestSuiteTest::testGetChildTestAtThrow2()
177 {
178   m_suite->getChildTestAt(0);
179 }
180