1 #include <cppunit/Exception.h>
2 #include <cppunit/Message.h>
3 #include <cppunit/Protector.h>
4 #include <cppunit/TestResult.h>
5 #include "ProtectorContext.h"
15 Protector::~Protector()
21 Protector::reportError( const ProtectorContext &context,
22 const Exception &error ) const
24 std::auto_ptr<Exception> actualError( error.clone() );
25 actualError->setMessage( actualMessage( actualError->message(), context ) );
26 context.m_result->addError( context.m_test,
27 actualError.release() );
33 Protector::reportError( const ProtectorContext &context,
34 const Message &message,
35 const SourceLine &sourceLine ) const
37 reportError( context, Exception( message, sourceLine ) );
42 Protector::reportFailure( const ProtectorContext &context,
43 const Exception &failure ) const
45 std::auto_ptr<Exception> actualFailure( failure.clone() );
46 actualFailure->setMessage( actualMessage( actualFailure->message(), context ) );
47 context.m_result->addFailure( context.m_test,
48 actualFailure.release() );
53 Protector::actualMessage( const Message &message,
54 const ProtectorContext &context ) const
56 Message theActualMessage;
57 if ( context.m_shortDescription.empty() )
58 theActualMessage = message;
61 theActualMessage = Message( context.m_shortDescription,
62 message.shortDescription() );
63 theActualMessage.addDetail( message );
66 return theActualMessage;
72 ProtectorGuard::ProtectorGuard( TestResult *result,
73 Protector *protector )
76 m_result->pushProtector( protector );
80 ProtectorGuard::~ProtectorGuard()
82 m_result->popProtector();