152a38012Sejakowatz #include "cppunit/TestSuite.h" 252a38012Sejakowatz #include "cppunit/TestResult.h" 352a38012Sejakowatz 452a38012Sejakowatz namespace CppUnit { 552a38012Sejakowatz 652a38012Sejakowatz /// Default constructor TestSuite(string name)7*aa94570aSIngo WeinholdTestSuite::TestSuite( string name ) 852a38012Sejakowatz : m_name( name ) 952a38012Sejakowatz { 1052a38012Sejakowatz } 1152a38012Sejakowatz 1252a38012Sejakowatz 1352a38012Sejakowatz /// Destructor ~TestSuite()1452a38012SejakowatzTestSuite::~TestSuite() 1552a38012Sejakowatz { 1652a38012Sejakowatz deleteContents(); 1752a38012Sejakowatz } 1852a38012Sejakowatz 1952a38012Sejakowatz 2052a38012Sejakowatz /// Deletes all tests in the suite. 2152a38012Sejakowatz void deleteContents()2252a38012SejakowatzTestSuite::deleteContents() 2352a38012Sejakowatz { 24*aa94570aSIngo Weinhold for ( vector<Test *>::iterator it = m_tests.begin(); 2552a38012Sejakowatz it != m_tests.end(); 2652a38012Sejakowatz ++it) 2752a38012Sejakowatz delete *it; 2852a38012Sejakowatz m_tests.clear(); 2952a38012Sejakowatz } 3052a38012Sejakowatz 3152a38012Sejakowatz 3252a38012Sejakowatz /// Runs the tests and collects their result in a TestResult. 3352a38012Sejakowatz void run(TestResult * result)3452a38012SejakowatzTestSuite::run( TestResult *result ) 3552a38012Sejakowatz { 36*aa94570aSIngo Weinhold for ( vector<Test *>::iterator it = m_tests.begin(); 3752a38012Sejakowatz it != m_tests.end(); 3852a38012Sejakowatz ++it ) 3952a38012Sejakowatz { 4052a38012Sejakowatz if ( result->shouldStop() ) 4152a38012Sejakowatz break; 4252a38012Sejakowatz 4352a38012Sejakowatz Test *test = *it; 4452a38012Sejakowatz test->run( result ); 4552a38012Sejakowatz } 4652a38012Sejakowatz } 4752a38012Sejakowatz 4852a38012Sejakowatz 4952a38012Sejakowatz /// Counts the number of test cases that will be run by this test. 5052a38012Sejakowatz int countTestCases() const5152a38012SejakowatzTestSuite::countTestCases() const 5252a38012Sejakowatz { 5352a38012Sejakowatz int count = 0; 5452a38012Sejakowatz 55*aa94570aSIngo Weinhold for ( vector<Test *>::const_iterator it = m_tests.begin(); 5652a38012Sejakowatz it != m_tests.end(); 5752a38012Sejakowatz ++it ) 5852a38012Sejakowatz count += (*it)->countTestCases(); 5952a38012Sejakowatz 6052a38012Sejakowatz return count; 6152a38012Sejakowatz } 6252a38012Sejakowatz 6352a38012Sejakowatz 6452a38012Sejakowatz /// Adds a test to the suite. 6552a38012Sejakowatz void addTest(Test * test)6652a38012SejakowatzTestSuite::addTest( Test *test ) 6752a38012Sejakowatz { 6852a38012Sejakowatz m_tests.push_back( test ); 6952a38012Sejakowatz } 7052a38012Sejakowatz 7152a38012Sejakowatz 7252a38012Sejakowatz /// Returns a string representation of the test suite. 73*aa94570aSIngo Weinhold string toString() const7452a38012SejakowatzTestSuite::toString() const 7552a38012Sejakowatz { 7652a38012Sejakowatz return "suite " + getName(); 7752a38012Sejakowatz } 7852a38012Sejakowatz 7952a38012Sejakowatz 8052a38012Sejakowatz /// Returns the name of the test suite. 81*aa94570aSIngo Weinhold string getName() const8252a38012SejakowatzTestSuite::getName() const 8352a38012Sejakowatz { 8452a38012Sejakowatz return m_name; 8552a38012Sejakowatz } 8652a38012Sejakowatz 8752a38012Sejakowatz 88*aa94570aSIngo Weinhold const vector<Test *> & getTests() const8952a38012SejakowatzTestSuite::getTests() const 9052a38012Sejakowatz { 9152a38012Sejakowatz return m_tests; 9252a38012Sejakowatz } 9352a38012Sejakowatz 9452a38012Sejakowatz 9552a38012Sejakowatz } // namespace CppUnit 9652a38012Sejakowatz 97