From 7fa3c4c55704e8130e302c85d189c114bdebaddc Mon Sep 17 00:00:00 2001 From: Alexander Kojevnikov Date: Fri, 22 Feb 2013 01:00:23 -0800 Subject: [PATCH] Fix floating point comparison in unit tests --- tests/test.h | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tests/test.h b/tests/test.h index 565cda4..718d3f1 100644 --- a/tests/test.h +++ b/tests/test.h @@ -19,6 +19,7 @@ #ifndef TEST_H_ #define TEST_H_ +#include #include #include #include @@ -28,10 +29,20 @@ void run(std::function func, const std::string& message); extern int g_total; extern int g_passes; +template bool equal(const T& a, const T& b) +{ + return a == b; +} + +template<> inline bool equal(const double& a, const double& b) +{ + return std::abs(a - b) < 1e-8; +} + template void test(const std::string& message, const T& expected, const T& actual) { g_total++; - if (expected == actual) { + if (equal(expected, actual)) { g_passes++; } else { std::cerr << "FAIL: " << message;