1 #include <cppunit/config/SourcePrefix.h>
2 #include <cppunit/TestRunner.h>
3 #include <cppunit/TestPath.h>
4 #include <cppunit/TestResult.h>
10 TestRunner::WrappingSuite::WrappingSuite( const std::string &name )
17 TestRunner::WrappingSuite::getChildTestCount() const
19 if ( hasOnlyOneTest() )
20 return getUniqueChildTest()->getChildTestCount();
21 return TestSuite::getChildTestCount();
26 TestRunner::WrappingSuite::getName() const
28 if ( hasOnlyOneTest() )
29 return getUniqueChildTest()->getName();
30 return TestSuite::getName();
35 TestRunner::WrappingSuite::doGetChildTestAt( int index ) const
37 if ( hasOnlyOneTest() )
38 return getUniqueChildTest()->getChildTestAt( index );
39 return TestSuite::doGetChildTestAt( index );
44 TestRunner::WrappingSuite::run( TestResult *result )
46 if ( hasOnlyOneTest() )
47 getUniqueChildTest()->run( result );
49 TestSuite::run( result );
54 TestRunner::WrappingSuite::hasOnlyOneTest() const
56 return TestSuite::getChildTestCount() == 1;
61 TestRunner::WrappingSuite::getUniqueChildTest() const
63 return TestSuite::doGetChildTestAt( 0 );
70 TestRunner::TestRunner()
71 : m_suite( new WrappingSuite() )
76 TestRunner::~TestRunner()
83 TestRunner::addTest( Test *test )
85 m_suite->addTest( test );
90 TestRunner::run( TestResult &controller,
91 const std::string &testPath )
93 TestPath path = m_suite->resolveTestPath( testPath );
94 Test *testToRun = path.getChildTest();
96 controller.runTest( testToRun );