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_currentResult.setLineInfo( m_runningTest->getTestCaseInfo().getLineInfo() );
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() );
}
@ -120,12 +120,9 @@ namespace Catch {
delete m_runningTest;
m_runningTest = NULL;
if( m_totals.assertions.failed > prevTotals.assertions.failed )
++m_totals.testCases.failed;
else
++m_totals.testCases.passed;
m_reporter->EndTestCase( testInfo, m_totals - prevTotals, redirectedCout, redirectedCerr );
Totals deltaTotals = m_totals.delta( prevTotals );
m_totals.testCases += deltaTotals.testCases;
m_reporter->EndTestCase( testInfo, deltaTotals, redirectedCout, redirectedCerr );
}
virtual Totals getTotals() const {

View File

@ -19,6 +19,11 @@ namespace Catch {
diff.failed = failed - other.failed;
return diff;
}
Counts& operator += ( const Counts& other ) {
passed += other.passed;
failed += other.failed;
return *this;
}
std::size_t total() const {
return passed + failed;
@ -36,6 +41,15 @@ namespace Catch {
diff.testCases = testCases - other.testCases;
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 testCases;