Added a delta method to Totals that tracks new passed/ failures

This fixes issue with test group results
This commit is contained in:
Phil Nash 2012-05-22 08:56:11 +01:00
parent 9fa9d4279c
commit ab4b36862d
2 changed files with 18 additions and 7 deletions

View File

@ -111,7 +111,7 @@ namespace Catch {
m_reporter->StartGroup( "test case run" ); m_reporter->StartGroup( "test case run" );
m_currentResult.setLineInfo( m_runningTest->getTestCaseInfo().getLineInfo() ); m_currentResult.setLineInfo( m_runningTest->getTestCaseInfo().getLineInfo() );
runCurrentTest( redirectedCout, redirectedCerr ); runCurrentTest( redirectedCout, redirectedCerr );
m_reporter->EndGroup( "test case run", m_totals - prevTotals ); m_reporter->EndGroup( "test case run", m_totals.delta( prevTotals ) );
} }
while( m_runningTest->hasUntestedSections() ); while( m_runningTest->hasUntestedSections() );
} }
@ -120,12 +120,9 @@ namespace Catch {
delete m_runningTest; delete m_runningTest;
m_runningTest = NULL; m_runningTest = NULL;
if( m_totals.assertions.failed > prevTotals.assertions.failed ) Totals deltaTotals = m_totals.delta( prevTotals );
++m_totals.testCases.failed; m_totals.testCases += deltaTotals.testCases;
else m_reporter->EndTestCase( testInfo, deltaTotals, redirectedCout, redirectedCerr );
++m_totals.testCases.passed;
m_reporter->EndTestCase( testInfo, m_totals - prevTotals, redirectedCout, redirectedCerr );
} }
virtual Totals getTotals() const { virtual Totals getTotals() const {

View File

@ -19,6 +19,11 @@ namespace Catch {
diff.failed = failed - other.failed; diff.failed = failed - other.failed;
return diff; return diff;
} }
Counts& operator += ( const Counts& other ) {
passed += other.passed;
failed += other.failed;
return *this;
}
std::size_t total() const { std::size_t total() const {
return passed + failed; return passed + failed;
@ -37,6 +42,15 @@ namespace Catch {
return diff; return diff;
} }
Totals delta( const Totals& prevTotals ) const {
Totals diff = *this - prevTotals;
if( diff.assertions.failed > 0 )
++diff.testCases.failed;
else
++diff.testCases.passed;
return diff;
}
Counts assertions; Counts assertions;
Counts testCases; Counts testCases;
}; };