diff --git a/catch.hpp b/catch.hpp index c1285940..0a241b09 100644 --- a/catch.hpp +++ b/catch.hpp @@ -66,6 +66,6 @@ // Still to be implemented #define CHECK_NOFAIL( expr ) // !TBD - reports violation, but doesn't fail Test -using Catch::Approx; +using Catch::Detail::Approx; #endif // TWOBLUECUBES_CATCH_HPP_INCLUDED diff --git a/internal/catch_capture.hpp b/internal/catch_capture.hpp index 94eb2d01..539129d6 100644 --- a/internal/catch_capture.hpp +++ b/internal/catch_capture.hpp @@ -591,53 +591,55 @@ inline double catch_max( double x, double y ) { return x > y ? x : y; } - -class Approx +namespace Detail { -public: - /////////////////////////////////////////////////////////////////////////// - // !TBD more generic - explicit Approx - ( - double d - ) - : m_d( d ) + class Approx { - } + public: + /////////////////////////////////////////////////////////////////////////// + // !TBD more generic + explicit Approx + ( + double d + ) + : m_d( d ) + { + } - /////////////////////////////////////////////////////////////////////////// - template - friend bool operator == - ( - const T& lhs, - const Approx& rhs - ) - { - // !TBD Use proper tolerance - // From: http://realtimecollisiondetection.net/blog/?p=89 - // see also: http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm - return fabs( lhs - rhs.m_d ) <= catch_max( CATCH_absTol, CATCH_relTol * catch_max( fabs(lhs), fabs(rhs.m_d) ) ); - } + /////////////////////////////////////////////////////////////////////////// + template + friend bool operator == + ( + const T& lhs, + const Approx& rhs + ) + { + // !TBD Use proper tolerance + // From: http://realtimecollisiondetection.net/blog/?p=89 + // see also: http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm + return fabs( lhs - rhs.m_d ) <= catch_max( CATCH_absTol, CATCH_relTol * catch_max( fabs(lhs), fabs(rhs.m_d) ) ); + } + + /////////////////////////////////////////////////////////////////////////// + template + friend bool operator != + ( + const T& lhs, + const Approx& rhs + ) + { + return ! operator==( lhs, rhs ); + } + + double m_d; + }; +} - /////////////////////////////////////////////////////////////////////////// - template - friend bool operator != - ( - const T& lhs, - const Approx& rhs - ) - { - return ! operator==( lhs, rhs ); - } - - double m_d; -}; - /////////////////////////////////////////////////////////////////////////////// template<> -inline std::string toString + inline std::string toString ( - const Approx& value + const Detail::Approx& value ) { std::ostringstream oss;