xref: /haiku/src/tools/cppunit/cppunit/TestSuite.cpp (revision aa94570a34695672df9b47adda2257f75d8da880)
152a38012Sejakowatz #include "cppunit/TestSuite.h"
252a38012Sejakowatz #include "cppunit/TestResult.h"
352a38012Sejakowatz 
452a38012Sejakowatz namespace CppUnit {
552a38012Sejakowatz 
652a38012Sejakowatz /// Default constructor
TestSuite(string name)7*aa94570aSIngo Weinhold TestSuite::TestSuite( string name )
852a38012Sejakowatz     : m_name( name )
952a38012Sejakowatz {
1052a38012Sejakowatz }
1152a38012Sejakowatz 
1252a38012Sejakowatz 
1352a38012Sejakowatz /// Destructor
~TestSuite()1452a38012Sejakowatz TestSuite::~TestSuite()
1552a38012Sejakowatz {
1652a38012Sejakowatz   deleteContents();
1752a38012Sejakowatz }
1852a38012Sejakowatz 
1952a38012Sejakowatz 
2052a38012Sejakowatz /// Deletes all tests in the suite.
2152a38012Sejakowatz void
deleteContents()2252a38012Sejakowatz TestSuite::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)3452a38012Sejakowatz TestSuite::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() const5152a38012Sejakowatz TestSuite::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)6652a38012Sejakowatz TestSuite::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() const7452a38012Sejakowatz TestSuite::toString() const
7552a38012Sejakowatz {
7652a38012Sejakowatz   return "suite " + getName();
7752a38012Sejakowatz }
7852a38012Sejakowatz 
7952a38012Sejakowatz 
8052a38012Sejakowatz /// Returns the name of the test suite.
81*aa94570aSIngo Weinhold string
getName() const8252a38012Sejakowatz TestSuite::getName() const
8352a38012Sejakowatz {
8452a38012Sejakowatz   return m_name;
8552a38012Sejakowatz }
8652a38012Sejakowatz 
8752a38012Sejakowatz 
88*aa94570aSIngo Weinhold const vector<Test *> &
getTests() const8952a38012Sejakowatz TestSuite::getTests() const
9052a38012Sejakowatz {
9152a38012Sejakowatz   return m_tests;
9252a38012Sejakowatz }
9352a38012Sejakowatz 
9452a38012Sejakowatz 
9552a38012Sejakowatz } // namespace CppUnit
9652a38012Sejakowatz 
97