00001 #ifndef CPPUNIT_PROTECTOR_H
00002 #define CPPUNIT_PROTECTOR_H
00003
00004 #include <cppunit/SourceLine.h>
00005
00006 CPPUNIT_NS_BEGIN
00007
00008 class Exception;
00009 class Message;
00010 class ProtectorContext;
00011 class TestResult;
00012
00013
00014 class CPPUNIT_API Functor
00015 {
00016 public:
00017 virtual ~Functor();
00018
00019 virtual bool operator()() const =0;
00020 };
00021
00022
00047 class CPPUNIT_API Protector
00048 {
00049 public:
00050 virtual ~Protector();
00051
00052 virtual bool protect( const Functor &functor,
00053 const ProtectorContext &context ) =0;
00054
00055 protected:
00056 void reportError( const ProtectorContext &context,
00057 const Exception &error ) const;
00058
00059 void reportError( const ProtectorContext &context,
00060 const Message &message,
00061 const SourceLine &sourceLine = SourceLine() ) const;
00062
00063 void reportFailure( const ProtectorContext &context,
00064 const Exception &failure ) const;
00065
00066 Message actualMessage( const Message &message,
00067 const ProtectorContext &context ) const;
00068 };
00069
00070
00076 class CPPUNIT_API ProtectorGuard
00077 {
00078 public:
00080 ProtectorGuard( TestResult *result,
00081 Protector *protector );
00082
00084 ~ProtectorGuard();
00085
00086 private:
00087 TestResult *m_result;
00088 };
00089
00090 CPPUNIT_NS_END
00091
00092
00093 #endif // CPPUNIT_PROTECTOR_H
00094