#ifndef CPPUNIT_TESTRESULT_H
#define CPPUNIT_TESTRESULT_H
#include <cppunit/Portability.h>
#if CPPUNIT_NEED_DLL_DECL
#pragma warning( push )
#pragma warning( disable: 4251 )
#endif
#include <cppunit/SynchronizedObject.h>
#include <deque>
namespace CppUnit {
class Exception;
class Test;
class TestFailure;
class TestListener;
#if CPPUNIT_NEED_DLL_DECL
template class CPPUNIT_API deque<TestListener *>;
#endif
class CPPUNIT_API TestResult : protected SynchronizedObject
{
public:
TestResult( SynchronizationObject *syncObject = 0 );
virtual ~TestResult();
virtual void addListener( TestListener *listener );
virtual void removeListener( TestListener *listener );
virtual void reset();
virtual void stop();
virtual bool shouldStop() const;
virtual void startTest( Test *test );
virtual void addError( Test *test, Exception *e );
virtual void addFailure( Test *test, Exception *e );
virtual void endTest( Test *test );
protected:
void addFailure( const TestFailure &failure );
protected:
typedef std::deque<TestListener *> TestListeners;
TestListeners m_listeners;
bool m_stop;
private:
TestResult( const TestResult &other );
TestResult &operator =( const TestResult &other );
};
}
#if CPPUNIT_NEED_DLL_DECL
#pragma warning( pop )
#endif
#endif