xref: /haiku/src/tools/cppunit/cppunit/TestFailure.cpp (revision 58481f0f6ef1a61ba07283f012cafbc2ed874ead)
152a38012Sejakowatz #include "cppunit/Exception.h"
252a38012Sejakowatz #include "cppunit/Test.h"
352a38012Sejakowatz #include "cppunit/TestFailure.h"
452a38012Sejakowatz 
5*58481f0fSOliver Tappe using std::string;
6*58481f0fSOliver Tappe 
752a38012Sejakowatz namespace CppUnit {
852a38012Sejakowatz 
952a38012Sejakowatz /// Constructs a TestFailure with the given test and exception.
TestFailure(Test * failedTest,Exception * thrownException,bool isError)1052a38012Sejakowatz TestFailure::TestFailure( Test *failedTest,
1152a38012Sejakowatz                           Exception *thrownException,
1252a38012Sejakowatz                           bool isError ) :
1352a38012Sejakowatz     m_failedTest( failedTest ),
1452a38012Sejakowatz     m_thrownException( thrownException ),
1552a38012Sejakowatz     m_isError( isError )
1652a38012Sejakowatz {
1752a38012Sejakowatz }
1852a38012Sejakowatz 
1952a38012Sejakowatz /// Deletes the owned exception.
~TestFailure()2052a38012Sejakowatz TestFailure::~TestFailure()
2152a38012Sejakowatz {
2252a38012Sejakowatz   delete m_thrownException;
2352a38012Sejakowatz }
2452a38012Sejakowatz 
2552a38012Sejakowatz /// Gets the failed test.
2652a38012Sejakowatz Test *
failedTest() const2752a38012Sejakowatz TestFailure::failedTest() const
2852a38012Sejakowatz {
2952a38012Sejakowatz   return m_failedTest;
3052a38012Sejakowatz }
3152a38012Sejakowatz 
3252a38012Sejakowatz 
3352a38012Sejakowatz /// Gets the thrown exception. Never \c NULL.
3452a38012Sejakowatz Exception *
thrownException() const3552a38012Sejakowatz TestFailure::thrownException() const
3652a38012Sejakowatz {
3752a38012Sejakowatz   return m_thrownException;
3852a38012Sejakowatz }
3952a38012Sejakowatz 
4052a38012Sejakowatz 
4152a38012Sejakowatz /// Gets the failure location.
4252a38012Sejakowatz SourceLine
sourceLine() const4352a38012Sejakowatz TestFailure::sourceLine() const
4452a38012Sejakowatz {
4552a38012Sejakowatz   return m_thrownException->sourceLine();
4652a38012Sejakowatz }
4752a38012Sejakowatz 
4852a38012Sejakowatz 
4952a38012Sejakowatz /// Indicates if the failure is a failed assertion or an error.
5052a38012Sejakowatz bool
isError() const5152a38012Sejakowatz TestFailure::isError() const
5252a38012Sejakowatz {
5352a38012Sejakowatz   return m_isError;
5452a38012Sejakowatz }
5552a38012Sejakowatz 
5652a38012Sejakowatz 
5752a38012Sejakowatz /// Gets the name of the failed test.
58aa94570aSIngo Weinhold string
failedTestName() const5952a38012Sejakowatz TestFailure::failedTestName() const
6052a38012Sejakowatz {
6152a38012Sejakowatz   return m_failedTest->getName();
6252a38012Sejakowatz }
6352a38012Sejakowatz 
6452a38012Sejakowatz 
6552a38012Sejakowatz /// Returns a short description of the failure.
66aa94570aSIngo Weinhold string
toString() const6752a38012Sejakowatz TestFailure::toString() const
6852a38012Sejakowatz {
6952a38012Sejakowatz   return m_failedTest->toString() + ": " + m_thrownException->what();
7052a38012Sejakowatz }
7152a38012Sejakowatz 
7252a38012Sejakowatz 
7352a38012Sejakowatz TestFailure *
clone() const7452a38012Sejakowatz TestFailure::clone() const
7552a38012Sejakowatz {
7652a38012Sejakowatz   return new TestFailure( m_failedTest, m_thrownException->clone(), m_isError );
7752a38012Sejakowatz }
7852a38012Sejakowatz 
7952a38012Sejakowatz } // namespace CppUnit
80