diff options
| author | Steve M. Robbins <smr@sumost.ca> | 2007-01-27 04:45:08 +0000 |
|---|---|---|
| committer | Steve M. Robbins <smr@sumost.ca> | 2007-01-27 04:45:08 +0000 |
| commit | d55799b544efac8b1d822dfa8b0ea4813a2d3ef0 (patch) | |
| tree | 64e4ce2e64b53dae232adfab1b8c1faba7e42314 /src/cppunit/TestAssert.cpp | |
| parent | 24f2ebadc613b96c00233969e251bfbc9cd79f9e (diff) | |
| download | cppunit-d55799b544efac8b1d822dfa8b0ea4813a2d3ef0.tar.gz | |
Account for non-finite values in assertDoubleEquals().
Conditional inclusion of cmath rather than math.h removed since (1) it
was never used as HAVE_CMATH is never defined, and (2) cmath may move
isfinite() into namespace std.
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, |
