|
Packit |
8c9aa0 |
#include <cppunit/Test.h>
|
|
Packit |
8c9aa0 |
#include <cppunit/TestFailure.h>
|
|
Packit |
8c9aa0 |
#include <cppunit/TestListener.h>
|
|
Packit |
8c9aa0 |
#include <cppunit/TestResult.h>
|
|
Packit |
8c9aa0 |
#include <cppunit/tools/Algorithm.h>
|
|
Packit |
8c9aa0 |
#include <cppunit/portability/Stream.h>
|
|
Packit |
8c9aa0 |
#include <algorithm>
|
|
Packit |
8c9aa0 |
#include "DefaultProtector.h"
|
|
Packit |
8c9aa0 |
#include "ProtectorChain.h"
|
|
Packit |
8c9aa0 |
#include "ProtectorContext.h"
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
CPPUNIT_NS_BEGIN
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
TestResult::TestResult( SynchronizationObject *syncObject )
|
|
Packit |
8c9aa0 |
: SynchronizedObject( syncObject )
|
|
Packit |
8c9aa0 |
, m_listeners()
|
|
Packit |
8c9aa0 |
, m_protectorChain( new ProtectorChain )
|
|
Packit |
8c9aa0 |
, m_stop( false )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
m_protectorChain->push( new DefaultProtector() );
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
TestResult::~TestResult()
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
stdCOut().flush();
|
|
Packit |
8c9aa0 |
stdCErr().flush();
|
|
Packit |
8c9aa0 |
delete m_protectorChain;
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
TestResult::reset()
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
ExclusiveZone zone( m_syncObject );
|
|
Packit |
8c9aa0 |
m_stop = false;
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
TestResult::addError( Test *test,
|
|
Packit |
8c9aa0 |
Exception *e )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
TestFailure failure( test, e, true );
|
|
Packit |
8c9aa0 |
addFailure( failure );
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
TestResult::addFailure( Test *test, Exception *e )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
TestFailure failure( test, e, false );
|
|
Packit |
8c9aa0 |
addFailure( failure );
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
TestResult::addFailure( const TestFailure &failure )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
ExclusiveZone zone( m_syncObject );
|
|
Packit |
8c9aa0 |
for ( TestListeners::iterator it = m_listeners.begin();
|
|
Packit |
8c9aa0 |
it != m_listeners.end();
|
|
Packit |
8c9aa0 |
++it )
|
|
Packit |
8c9aa0 |
(*it)->addFailure( failure );
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
TestResult::startTest( Test *test )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
ExclusiveZone zone( m_syncObject );
|
|
Packit |
8c9aa0 |
for ( TestListeners::iterator it = m_listeners.begin();
|
|
Packit |
8c9aa0 |
it != m_listeners.end();
|
|
Packit |
8c9aa0 |
++it )
|
|
Packit |
8c9aa0 |
(*it)->startTest( test );
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
TestResult::endTest( Test *test )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
ExclusiveZone zone( m_syncObject );
|
|
Packit |
8c9aa0 |
for ( TestListeners::iterator it = m_listeners.begin();
|
|
Packit |
8c9aa0 |
it != m_listeners.end();
|
|
Packit |
8c9aa0 |
++it )
|
|
Packit |
8c9aa0 |
(*it)->endTest( test );
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
TestResult::startSuite( Test *test )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
ExclusiveZone zone( m_syncObject );
|
|
Packit |
8c9aa0 |
for ( TestListeners::iterator it = m_listeners.begin();
|
|
Packit |
8c9aa0 |
it != m_listeners.end();
|
|
Packit |
8c9aa0 |
++it )
|
|
Packit |
8c9aa0 |
(*it)->startSuite( test );
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
TestResult::endSuite( Test *test )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
ExclusiveZone zone( m_syncObject );
|
|
Packit |
8c9aa0 |
for ( TestListeners::iterator it = m_listeners.begin();
|
|
Packit |
8c9aa0 |
it != m_listeners.end();
|
|
Packit |
8c9aa0 |
++it )
|
|
Packit |
8c9aa0 |
(*it)->endSuite( test );
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
bool
|
|
Packit |
8c9aa0 |
TestResult::shouldStop() const
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
ExclusiveZone zone( m_syncObject );
|
|
Packit |
8c9aa0 |
return m_stop;
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
TestResult::stop()
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
ExclusiveZone zone( m_syncObject );
|
|
Packit |
8c9aa0 |
m_stop = true;
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
TestResult::addListener( TestListener *listener )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
ExclusiveZone zone( m_syncObject );
|
|
Packit |
8c9aa0 |
m_listeners.push_back( listener );
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
TestResult::removeListener ( TestListener *listener )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
ExclusiveZone zone( m_syncObject );
|
|
Packit |
8c9aa0 |
removeFromSequence( m_listeners, listener );
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
TestResult::runTest( Test *test )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
startTestRun( test );
|
|
Packit |
8c9aa0 |
test->run( this );
|
|
Packit |
8c9aa0 |
endTestRun( test );
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
TestResult::startTestRun( Test *test )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
ExclusiveZone zone( m_syncObject );
|
|
Packit |
8c9aa0 |
for ( TestListeners::iterator it = m_listeners.begin();
|
|
Packit |
8c9aa0 |
it != m_listeners.end();
|
|
Packit |
8c9aa0 |
++it )
|
|
Packit |
8c9aa0 |
(*it)->startTestRun( test, this );
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
TestResult::endTestRun( Test *test )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
ExclusiveZone zone( m_syncObject );
|
|
Packit |
8c9aa0 |
for ( TestListeners::iterator it = m_listeners.begin();
|
|
Packit |
8c9aa0 |
it != m_listeners.end();
|
|
Packit |
8c9aa0 |
++it )
|
|
Packit |
8c9aa0 |
(*it)->endTestRun( test, this );
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
bool
|
|
Packit |
8c9aa0 |
TestResult::protect( const Functor &functor,
|
|
Packit |
8c9aa0 |
Test *test,
|
|
Packit |
8c9aa0 |
const std::string &shortDescription )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
ProtectorContext context( test, this, shortDescription );
|
|
Packit |
8c9aa0 |
return m_protectorChain->protect( functor, context );
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
TestResult::pushProtector( Protector *protector )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
m_protectorChain->push( protector );
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
TestResult::popProtector()
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
m_protectorChain->pop();
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
CPPUNIT_NS_END
|