diff options
Diffstat (limited to 'src/cppunit/TestAssert.cpp')
| -rw-r--r-- | src/cppunit/TestAssert.cpp | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/src/cppunit/TestAssert.cpp b/src/cppunit/TestAssert.cpp index 73375c2..44be55f 100644 --- a/src/cppunit/TestAssert.cpp +++ b/src/cppunit/TestAssert.cpp @@ -1,11 +1,19 @@ -#if HAVE_CMATH -# include <cmath> +#include <cppunit/TestAssert.h> + +#include <math.h> + +#if !defined(CPPUNIT_HAVE_ISFINITE) + + static inline bool isfinite( double x ) + { +#if defined(CPPUNIT_HAVE_FINITE) + return finite( x ); #else -# include <math.h> + return ( x * 0.0 ) == 0.0; #endif + } -#include <cppunit/TestAssert.h> - +#endif CPPUNIT_NS_BEGIN @@ -21,7 +29,13 @@ assertDoubleEquals( double expected, assertion_traits<double>::toString(delta) ); msg.addDetail( AdditionalMessage(message) ); - Asserter::failNotEqualIf( fabs( expected - actual ) > delta, + bool equal; + if ( isfinite(expected) && isfinite(actual) ) + equal = fabs( expected - actual ) <= delta; + else + equal = expected == actual; + + Asserter::failNotEqualIf( !equal, assertion_traits<double>::toString(expected), assertion_traits<double>::toString(actual), sourceLine, |
