Go to the documentation of this file.    1 #ifndef CPPUNIT_TESTASSERT_H 
    2 #define CPPUNIT_TESTASSERT_H 
   14 #if defined __GNUC__ && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6)) 
   15 #pragma GCC system_header 
   57     static bool equal( 
const T& x, 
const T& y )
 
   62     static bool less( 
const T& x, 
const T& y )
 
   89     static bool equal( 
double x, 
double y )
 
   94     static bool less( 
double x, 
double y )
 
  107        const int precision = DBL_DIG;
 
  109        const int precision = 15;
 
  110 #endif  // #ifdef DBL_DIG 
  112 #ifdef __STDC_SECURE_LIB__ // Use secure version with visual studio 2005 to avoid warning. 
  113        sprintf_s(buffer, 
sizeof(buffer), 
"%.*g", precision, x); 
 
  115        sprintf(buffer, 
"%.*g", precision, x); 
 
  164                    const std::string &message )
 
  185                                      const std::string &message );
 
  196                  const std::string& message )
 
  216                  const std::string& message )
 
  235                       const std::string& message )
 
  254                       const std::string& message )
 
  269 #if CPPUNIT_HAVE_CPP_SOURCE_ANNOTATION 
  273 #define CPPUNIT_ASSERT(condition)                                                 \ 
  274   ( CPPUNIT_NS::Asserter::failIf( !(condition),                                   \ 
  275                                  CPPUNIT_NS::Message( "assertion failed",         \ 
  276                                                       "Expression: " #condition), \ 
  277                                  CPPUNIT_SOURCELINE() ) ) 
  279 #define CPPUNIT_ASSERT(condition)                                            \ 
  280   ( CPPUNIT_NS::Asserter::failIf( !(condition),                              \ 
  281                                   CPPUNIT_NS::Message( "assertion failed" ), \ 
  282                                   CPPUNIT_SOURCELINE() ) ) 
  292 #define CPPUNIT_ASSERT_MESSAGE(message,condition)                          \ 
  293   ( CPPUNIT_NS::Asserter::failIf( !(condition),                            \ 
  294                                   CPPUNIT_NS::Message( "assertion failed", \ 
  297                                                        CPPUNIT_NS::message_to_string(message) ),          \ 
  298                                   CPPUNIT_SOURCELINE() ) ) 
  304 #define CPPUNIT_FAIL( message )                                         \ 
  305   ( CPPUNIT_NS::Asserter::fail( CPPUNIT_NS::Message( "forced failure",  \ 
  306                                                      CPPUNIT_NS::message_to_string(message) ),         \ 
  307                                 CPPUNIT_SOURCELINE() ) ) 
  309 #ifdef CPPUNIT_ENABLE_SOURCELINE_DEPRECATED 
  310 #define CPPUNIT_ASSERT_EQUAL(expected,actual)                     \ 
  312   ( CPPUNIT_NS::assertEquals( (expected),             \ 
  314                               __LINE__, __FILE__ ) ) 
  332 #define CPPUNIT_ASSERT_EQUAL(expected,actual)          \ 
  333   ( CPPUNIT_NS::assertEquals( (expected),              \ 
  335                               CPPUNIT_SOURCELINE(),    \ 
  356 #define CPPUNIT_ASSERT_EQUAL_MESSAGE(message,expected,actual)      \ 
  357   ( CPPUNIT_NS::assertEquals( (expected),              \ 
  359                               CPPUNIT_SOURCELINE(),    \ 
  360                               CPPUNIT_NS::message_to_string(message) ) ) 
  383 #define CPPUNIT_ASSERT_LESS(expected, actual)          \ 
  384     ( CPPUNIT_NS::assertLess( (expected),              \ 
  386                               CPPUNIT_SOURCELINE(),    \ 
  409 #define CPPUNIT_ASSERT_GREATER(expected, actual)       \ 
  410     ( CPPUNIT_NS::assertGreater( (expected),           \ 
  412                                  CPPUNIT_SOURCELINE(), \ 
  435 #define CPPUNIT_ASSERT_LESSEQUAL(expected, actual)               \ 
  436     ( CPPUNIT_NS::assertLessEqual( (expected),              \ 
  438                                    CPPUNIT_SOURCELINE(),    \ 
  461 #define CPPUNIT_ASSERT_GREATEREQUAL(expected, actual)            \ 
  462     ( CPPUNIT_NS::assertGreaterEqual( (expected),                \ 
  464                                       CPPUNIT_SOURCELINE(),    \ 
  476 #define CPPUNIT_ASSERT_DOUBLES_EQUAL(expected,actual,delta)        \ 
  477   ( CPPUNIT_NS::assertDoubleEquals( (expected),            \ 
  480                                     CPPUNIT_SOURCELINE(),  \ 
  489 #define CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(message,expected,actual,delta)  \ 
  490   ( CPPUNIT_NS::assertDoubleEquals( (expected),            \ 
  493                                     CPPUNIT_SOURCELINE(),  \ 
  494                                     CPPUNIT_NS::message_to_string(message) ) ) 
  505 # define CPPUNIT_ASSERT_THROW( expression, ExceptionType )              \ 
  506    CPPUNIT_ASSERT_THROW_MESSAGE( CPPUNIT_NS::AdditionalMessage(),       \ 
  512 #if defined(CPPUNIT_USE_TYPEINFO_NAME) 
  513 #define CPPUNIT_EXTRACT_EXCEPTION_TYPE_( exception, no_rtti_message ) \ 
  514    CPPUNIT_NS::TypeInfoHelper::getClassName( typeid(exception) ) 
  516 #define CPPUNIT_EXTRACT_EXCEPTION_TYPE_( exception, no_rtti_message ) \ 
  517    std::string( no_rtti_message ) 
  518 #endif // CPPUNIT_USE_TYPEINFO_NAME 
  521 #define CPPUNIT_GET_PARAMETER_STRING( parameter ) #parameter 
  532 # define CPPUNIT_ASSERT_THROW_MESSAGE( message, expression, ExceptionType )   \ 
  534       bool cpputCorrectExceptionThrown_ = false;                              \ 
  535       CPPUNIT_NS::Message cpputMsg_( "expected exception not thrown" );       \ 
  536       cpputMsg_.addDetail( CPPUNIT_NS::message_to_string(message) );                                         \ 
  537       cpputMsg_.addDetail( "Expected: "                                       \ 
  538                            CPPUNIT_GET_PARAMETER_STRING( ExceptionType ) );   \ 
  542       } catch ( const ExceptionType & ) {                                     \ 
  543          cpputCorrectExceptionThrown_ = true;                                 \ 
  544       } catch ( const std::exception &e) {                                    \ 
  545          cpputMsg_.addDetail( "Actual  : " +                                  \ 
  546                               CPPUNIT_EXTRACT_EXCEPTION_TYPE_( e,             \ 
  547                                           "std::exception or derived") );     \ 
  548          cpputMsg_.addDetail( std::string("What()  : ") + e.what() );         \ 
  550          cpputMsg_.addDetail( "Actual  : unknown.");                          \ 
  553       if ( cpputCorrectExceptionThrown_ )                                     \ 
  556       CPPUNIT_NS::Asserter::fail( cpputMsg_,                                  \ 
  557                                   CPPUNIT_SOURCELINE() );                     \ 
  570 # define CPPUNIT_ASSERT_NO_THROW( expression )                             \ 
  571    CPPUNIT_ASSERT_NO_THROW_MESSAGE( CPPUNIT_NS::AdditionalMessage(),       \ 
  585 # define CPPUNIT_ASSERT_NO_THROW_MESSAGE( message, expression )               \ 
  587       CPPUNIT_NS::Message cpputMsg_( "unexpected exception caught" );         \ 
  588       cpputMsg_.addDetail( CPPUNIT_NS::message_to_string(message) );                                         \ 
  592       } catch ( const std::exception &e ) {                                   \ 
  593          cpputMsg_.addDetail( "Caught: " +                                    \ 
  594                               CPPUNIT_EXTRACT_EXCEPTION_TYPE_( e,             \ 
  595                                           "std::exception or derived" ) );    \ 
  596          cpputMsg_.addDetail( std::string("What(): ") + e.what() );           \ 
  597          CPPUNIT_NS::Asserter::fail( cpputMsg_,                               \ 
  598                                      CPPUNIT_SOURCELINE() );                  \ 
  600          cpputMsg_.addDetail( "Caught: unknown." );                           \ 
  601          CPPUNIT_NS::Asserter::fail( cpputMsg_,                               \ 
  602                                      CPPUNIT_SOURCELINE() );                  \ 
  615 # define CPPUNIT_ASSERT_ASSERTION_FAIL( assertion )                 \ 
  616    CPPUNIT_ASSERT_THROW( assertion, CPPUNIT_NS::Exception ) 
  628 # define CPPUNIT_ASSERT_ASSERTION_FAIL_MESSAGE( message, assertion )    \ 
  629    CPPUNIT_ASSERT_THROW_MESSAGE( message, assertion, CPPUNIT_NS::Exception ) 
  640 # define CPPUNIT_ASSERT_ASSERTION_PASS( assertion )                 \ 
  641    CPPUNIT_ASSERT_NO_THROW( assertion ) 
  653 # define CPPUNIT_ASSERT_ASSERTION_PASS_MESSAGE( message, assertion )    \ 
  654    CPPUNIT_ASSERT_NO_THROW_MESSAGE( message, assertion ) 
  661 #if CPPUNIT_ENABLE_NAKED_ASSERT 
  664 #define assert(c)                 CPPUNIT_ASSERT(c) 
  665 #define assertEqual(e,a)          CPPUNIT_ASSERT_EQUAL(e,a) 
  666 #define assertDoublesEqual(e,a,d) CPPUNIT_ASSERT_DOUBLES_EQUAL(e,a,d) 
  667 #define assertLongsEqual(e,a)     CPPUNIT_ASSERT_EQUAL(e,a) 
  674 #endif  // CPPUNIT_TESTASSERT_H 
 
#define CPPUNIT_API
Definition: CppUnitApi.h:27
static bool equal(double x, double y)
Definition: TestAssert.h:89
Represents a source line location.
Definition: SourceLine.h:31
static bool equal(const T &x, const T &y)
Definition: TestAssert.h:57
void assertGreaterEqual(const T &expected, const T &actual, SourceLine sourceLine, const std::string &message)
(Implementation) Asserts that two objects of the same type are equals. Use CPPUNIT_ASSERT_LESSEQUAL,...
Definition: TestAssert.h:251
void assertEquals(const T &expected, const T &actual, SourceLine sourceLine, const std::string &message)
(Implementation) Asserts that two objects of the same type are equals. Use CPPUNIT_ASSERT_EQUAL inste...
Definition: TestAssert.h:161
static void CPPUNIT_API failNotLess(std::string expected, std::string actual, const SourceLine &sourceLine, const AdditionalMessage &additionalMessage=AdditionalMessage(), std::string shortDescription="less assertion failed")
Throws an Exception with the specified message and location.
Definition: Asserter.cpp:128
static bool less(const T &x, const T &y)
Definition: TestAssert.h:62
static bool lessEqual(double x, double y)
Definition: TestAssert.h:99
static void CPPUNIT_API failNotGreaterEqual(std::string expected, std::string actual, const SourceLine &sourceLine, const AdditionalMessage &additionalMessage=AdditionalMessage(), std::string shortDescription="greater equal assertion failed")
Throws an Exception with the specified message and location.
Definition: Asserter.cpp:171
static void CPPUNIT_API failNotEqual(std::string expected, std::string actual, const SourceLine &sourceLine, const AdditionalMessage &additionalMessage=AdditionalMessage(), std::string shortDescription="equality assertion failed")
Throws an Exception with the specified message and location.
Definition: Asserter.cpp:113
CPPUNIT_NS_BEGIN typedef std::ostream OStream
Definition: Stream.h:330
void assertGreater(const T &expected, const T &actual, SourceLine sourceLine, const std::string &message)
(Implementation) Asserts that an object is less than another one of the same type Use CPPUNIT_ASSERT_...
Definition: TestAssert.h:213
std::enable_if<!std::is_enum< T >::value, std::string >::type toString(const T &x)
Definition: StringHelper.h:22
void assertLessEqual(const T &expected, const T &actual, SourceLine sourceLine, const std::string &message)
(Implementation) Asserts that two objects of the same type are equals. Use CPPUNIT_ASSERT_LESSEQUAL,...
Definition: TestAssert.h:232
static std::string toString(const T &x)
Definition: TestAssert.h:72
#define CPPUNIT_NS_BEGIN
Definition: Portability.h:105
#define CPPUNIT_NS_END
Definition: Portability.h:106
An additional Message for assertions.
Definition: AdditionalMessage.h:40
static bool lessEqual(const T &x, const T &y)
Definition: TestAssert.h:67
static void CPPUNIT_API failNotGreater(std::string expected, std::string actual, const SourceLine &sourceLine, const AdditionalMessage &additionalMessage=AdditionalMessage(), std::string shortDescription="greater assertion failed")
Throws an Exception with the specified message and location.
Definition: Asserter.cpp:143
Traits used by CPPUNIT_ASSERT* macros.
Definition: TestAssert.h:56
static void CPPUNIT_API failNotLessEqual(std::string expected, std::string actual, const SourceLine &sourceLine, const AdditionalMessage &additionalMessage=AdditionalMessage(), std::string shortDescription="less equal assertion failed")
Throws an Exception with the specified message and location.
Definition: Asserter.cpp:157
void CPPUNIT_API assertDoubleEquals(double expected, double actual, double delta, SourceLine sourceLine, const std::string &message)
(Implementation) Asserts that two double are equals given a tolerance. Use CPPUNIT_ASSERT_DOUBLES_EQU...
Definition: TestAssert.cpp:8
void assertLess(const T &expected, const T &actual, SourceLine sourceLine, const std::string &message)
(Implementation) Asserts that an object is less than another one of the same type Use CPPUNIT_ASSERT_...
Definition: TestAssert.h:193
std::string message_to_string(const std::string &s)
Message traits used by CPPUNIT_ASSERT* macros.
Definition: TestAssert.h:135
static std::string toString(double x)
Definition: TestAssert.h:104
static bool less(double x, double y)
Definition: TestAssert.h:94