Blame src/cppunit/TestCase.cpp

Packit Service e31359
#include <cppunit/Portability.h>
Packit Service e31359
#include <cppunit/Exception.h>
Packit Service e31359
#include <cppunit/Protector.h>
Packit Service e31359
#include <cppunit/TestCase.h>
Packit Service e31359
#include <cppunit/TestResult.h>
Packit Service e31359
#include <stdexcept>
Packit Service e31359
Packit Service e31359
#if defined(CPPUNIT_USE_TYPEINFO_NAME)
Packit Service e31359
#  include <typeinfo>
Packit Service e31359
#endif
Packit Service e31359
Packit Service e31359
CPPUNIT_NS_BEGIN
Packit Service e31359
Packit Service e31359
/*! \brief Functor to call test case method (Implementation).
Packit Service e31359
 *
Packit Service e31359
 * Implementation detail.
Packit Service e31359
 */
Packit Service e31359
class TestCaseMethodFunctor : public Functor
Packit Service e31359
{
Packit Service e31359
public:
Packit Service e31359
  typedef void (TestCase::*Method)();
Packit Service e31359
Packit Service e31359
  TestCaseMethodFunctor( TestCase *target,
Packit Service e31359
                         Method method )
Packit Service e31359
     : m_target( target )
Packit Service e31359
     , m_method( method )
Packit Service e31359
  {
Packit Service e31359
  }
Packit Service e31359
Packit Service e31359
  bool operator()() const
Packit Service e31359
  {
Packit Service e31359
    (m_target->*m_method)();
Packit Service e31359
    return true;
Packit Service e31359
  }
Packit Service e31359
Packit Service e31359
private:
Packit Service e31359
  TestCase *m_target;
Packit Service e31359
  Method m_method;
Packit Service e31359
};
Packit Service e31359
Packit Service e31359
Packit Service e31359
/** Constructs a test case.
Packit Service e31359
 *  \param name the name of the TestCase.
Packit Service e31359
 **/
Packit Service e31359
TestCase::TestCase( const std::string &name )
Packit Service e31359
    : m_name(name)
Packit Service e31359
{
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
/// Run the test and catch any exceptions that are triggered by it 
Packit Service e31359
void 
Packit Service e31359
TestCase::run( TestResult *result )
Packit Service e31359
{
Packit Service e31359
  result->startTest(this);
Packit Service e31359
/*
Packit Service e31359
  try {
Packit Service e31359
    setUp();
Packit Service e31359
Packit Service e31359
    try {
Packit Service e31359
      runTest();
Packit Service e31359
    }
Packit Service e31359
    catch ( Exception &e ) {
Packit Service e31359
      Exception *copy = e.clone();
Packit Service e31359
      result->addFailure( this, copy );
Packit Service e31359
    }
Packit Service e31359
    catch ( std::exception &e ) {
Packit Service e31359
      result->addError( this, new Exception( Message( "uncaught std::exception", 
Packit Service e31359
                                                      e.what() ) ) );
Packit Service e31359
    }
Packit Service e31359
    catch (...) {
Packit Service e31359
      Exception *e = new Exception( Message( "uncaught unknown exception" ) );
Packit Service e31359
      result->addError( this, e );
Packit Service e31359
    }
Packit Service e31359
Packit Service e31359
    try {
Packit Service e31359
      tearDown();
Packit Service e31359
    }
Packit Service e31359
    catch (...) {
Packit Service e31359
      result->addError( this, new Exception( Message( "tearDown() failed" ) ) );
Packit Service e31359
    }
Packit Service e31359
  }
Packit Service e31359
  catch (...) {
Packit Service e31359
    result->addError( this, new Exception( Message( "setUp() failed" ) ) );
Packit Service e31359
  }
Packit Service e31359
*/
Packit Service e31359
  if ( result->protect( TestCaseMethodFunctor( this, &TestCase::setUp ),
Packit Service e31359
                        this,
Packit Service e31359
                       "setUp() failed" ) )
Packit Service e31359
  {
Packit Service e31359
    result->protect( TestCaseMethodFunctor( this, &TestCase::runTest ),
Packit Service e31359
                     this );
Packit Service e31359
  }
Packit Service e31359
Packit Service e31359
  result->protect( TestCaseMethodFunctor( this, &TestCase::tearDown ),
Packit Service e31359
                   this,
Packit Service e31359
                   "tearDown() failed" );
Packit Service e31359
Packit Service e31359
  result->endTest( this );
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
/// All the work for runTest is deferred to subclasses 
Packit Service e31359
void 
Packit Service e31359
TestCase::runTest()
Packit Service e31359
{
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
/** Constructs a test case for a suite.
Packit Service e31359
 * \deprecated This constructor was used by fixture when TestFixture did not exist.
Packit Service e31359
 *             Have your fixture inherits TestFixture instead of TestCase.
Packit Service e31359
 * \internal
Packit Service e31359
 *  This TestCase was intended for use by the TestCaller and should not
Packit Service e31359
 *  be used by a test case for which run() is called.
Packit Service e31359
 **/
Packit Service e31359
TestCase::TestCase()
Packit Service e31359
    : m_name( "" )
Packit Service e31359
{
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
/// Destructs a test case
Packit Service e31359
TestCase::~TestCase()
Packit Service e31359
{
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
/// Returns the name of the test case
Packit Service e31359
std::string 
Packit Service e31359
TestCase::getName() const
Packit Service e31359
{ 
Packit Service e31359
  return m_name; 
Packit Service e31359
}
Packit Service e31359
  
Packit Service e31359
Packit Service e31359
CPPUNIT_NS_END