Blame src/cppunit/TestResult.cpp

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