1#include <cppunit/TestFailure.h> 2#include <cppunit/TestResultCollector.h> 3 4 5namespace CppUnit 6{ 7 8 9TestResultCollector::TestResultCollector( SynchronizationObject *syncObject ) 10 : TestSucessListener( syncObject ) 11{ 12 reset(); 13} 14 15 16TestResultCollector::~TestResultCollector() 17{ 18 TestFailures::iterator itFailure = m_failures.begin(); 19 while ( itFailure != m_failures.end() ) 20 delete *itFailure++; 21} 22 23 24void 25TestResultCollector::reset() 26{ 27 TestSucessListener::reset(); 28 29 ExclusiveZone zone( m_syncObject ); 30 m_testErrors = 0; 31 m_tests.clear(); 32 m_failures.clear(); 33} 34 35 36void 37TestResultCollector::startTest( Test *test ) 38{ 39 ExclusiveZone zone (m_syncObject); 40 m_tests.push_back( test ); 41} 42 43 44void 45TestResultCollector::addFailure( const TestFailure &failure ) 46{ 47 TestSucessListener::addFailure( failure ); 48 49 ExclusiveZone zone( m_syncObject ); 50 if ( failure.isError() ) 51 ++m_testErrors; 52 m_failures.push_back( failure.clone() ); 53} 54 55 56/// Gets the number of run tests. 57int 58TestResultCollector::runTests() const 59{ 60 ExclusiveZone zone( m_syncObject ); 61 return m_tests.size(); 62} 63 64 65/// Gets the number of detected errors (uncaught exception). 66int 67TestResultCollector::testErrors() const 68{ 69 ExclusiveZone zone( m_syncObject ); 70 return m_testErrors; 71} 72 73 74/// Gets the number of detected failures (failed assertion). 75int 76TestResultCollector::testFailures() const 77{ 78 ExclusiveZone zone( m_syncObject ); 79 return m_failures.size() - m_testErrors; 80} 81 82 83/// Gets the total number of detected failures. 84int 85TestResultCollector::testFailuresTotal() const 86{ 87 ExclusiveZone zone( m_syncObject ); 88 return m_failures.size(); 89} 90 91 92/// Returns a the list failures (random access collection). 93const TestResultCollector::TestFailures & 94TestResultCollector::failures() const 95{ 96 ExclusiveZone zone( m_syncObject ); 97 return m_failures; 98} 99 100 101const TestResultCollector::Tests & 102TestResultCollector::tests() const 103{ 104 ExclusiveZone zone( m_syncObject ); 105 return m_tests; 106} 107 108 109} // namespace CppUnit 110 111