From 37e1e243093052b540de78dd50c78be51b5728d2 Mon Sep 17 00:00:00 2001 From: "Jonathan B. Coe" Date: Sat, 24 Sep 2016 17:59:23 +0100 Subject: [PATCH] add support for inequalities --- include/internal/catch_approx.hpp | 20 ++++++++++++++++++++ projects/SelfTest/ApproxTests.cpp | 30 ++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/include/internal/catch_approx.hpp b/include/internal/catch_approx.hpp index f5dba61a..163d2680 100644 --- a/include/internal/catch_approx.hpp +++ b/include/internal/catch_approx.hpp @@ -58,6 +58,26 @@ namespace Detail { return !operator==( rhs, lhs ); } + friend bool operator <= ( double lhs, Approx const& rhs ) + { + return lhs < rhs.m_value || lhs == rhs; + } + + friend bool operator <= ( Approx const& lhs, double rhs ) + { + return lhs.m_value < rhs || lhs == rhs; + } + + friend bool operator >= ( double lhs, Approx const& rhs ) + { + return lhs > rhs.m_value || lhs == rhs; + } + + friend bool operator >= ( Approx const& lhs, double rhs ) + { + return lhs.m_value > rhs || lhs == rhs; + } + Approx& epsilon( double newEpsilon ) { m_epsilon = newEpsilon; return *this; diff --git a/projects/SelfTest/ApproxTests.cpp b/projects/SelfTest/ApproxTests.cpp index 53656596..cd708f2d 100644 --- a/projects/SelfTest/ApproxTests.cpp +++ b/projects/SelfTest/ApproxTests.cpp @@ -39,6 +39,36 @@ TEST_CASE REQUIRE( d == Approx( 1.231 ).epsilon( 0.1 ) ); } +/////////////////////////////////////////////////////////////////////////////// +TEST_CASE +( + "Less-than inequalities with different epsilons", + "[Approx]" +) +{ + double d = 1.23; + + REQUIRE( d <= Approx( 1.24 ) ); + REQUIRE( d <= Approx( 1.23 ) ); + REQUIRE_FALSE( d <= Approx( 1.22 ) ); + REQUIRE( d <= Approx( 1.22 ).epsilon(0.1) ); +} + +/////////////////////////////////////////////////////////////////////////////// +TEST_CASE +( + "Greater-than inequalities with different epsilons", + "[Approx]" +) +{ + double d = 1.23; + + REQUIRE( d >= Approx( 1.22 ) ); + REQUIRE( d >= Approx( 1.23 ) ); + REQUIRE_FALSE( d >= Approx( 1.24 ) ); + REQUIRE( d >= Approx( 1.24 ).epsilon(0.1) ); +} + /////////////////////////////////////////////////////////////////////////////// TEST_CASE (