#include <cppunit/TestFailure.h>
#include <cppunit/TestListener.h>
#include <cppunit/TestResult.h>
#include <algorithm>
namespace CppUnit {
TestResult::TestResult( SynchronizationObject *syncObject )
: SynchronizedObject( syncObject )
{
reset();
}
TestResult::~TestResult()
{
}
void
TestResult::reset()
{
ExclusiveZone zone( m_syncObject );
m_stop = false;
}
void
TestResult::addError( Test *test,
Exception *e )
{
addFailure( TestFailure( test, e, true ) );
}
void
TestResult::addFailure( Test *test, Exception *e )
{
addFailure( TestFailure( test, e, false ) );
}
void
TestResult::addFailure( const TestFailure &failure )
{
ExclusiveZone zone( m_syncObject );
for ( TestListeners::iterator it = m_listeners.begin();
it != m_listeners.end();
++it )
(*it)->addFailure( failure );
}
void
TestResult::startTest( Test *test )
{
ExclusiveZone zone( m_syncObject );
for ( TestListeners::iterator it = m_listeners.begin();
it != m_listeners.end();
++it )
(*it)->startTest( test );
}
void
TestResult::endTest( Test *test )
{
ExclusiveZone zone( m_syncObject );
for ( TestListeners::iterator it = m_listeners.begin();
it != m_listeners.end();
++it )
(*it)->endTest( test );
}
bool
TestResult::shouldStop() const
{
ExclusiveZone zone( m_syncObject );
return m_stop;
}
void
TestResult::stop()
{
ExclusiveZone zone( m_syncObject );
m_stop = true;
}
void
TestResult::addListener( TestListener *listener )
{
ExclusiveZone zone( m_syncObject );
m_listeners.push_back( listener );
}
void
TestResult::removeListener ( TestListener *listener )
{
ExclusiveZone zone( m_syncObject );
m_listeners.erase( remove( m_listeners.begin(),
m_listeners.end(),
listener ),
m_listeners.end());
}
}