summaryrefslogtreecommitdiff
path: root/src/cppunit/TestAssert.cpp
diff options
context:
space:
mode:
authorSteve M. Robbins <smr@sumost.ca>2007-01-27 04:45:08 +0000
committerSteve M. Robbins <smr@sumost.ca>2007-01-27 04:45:08 +0000
commitd55799b544efac8b1d822dfa8b0ea4813a2d3ef0 (patch)
tree64e4ce2e64b53dae232adfab1b8c1faba7e42314 /src/cppunit/TestAssert.cpp
parent24f2ebadc613b96c00233969e251bfbc9cd79f9e (diff)
downloadcppunit-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.cpp26
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,