diff --git a/modules/juce_core/unit_tests/juce_UnitTest.h b/modules/juce_core/unit_tests/juce_UnitTest.h index d698c95aa0..dcfd2b5eec 100644 --- a/modules/juce_core/unit_tests/juce_UnitTest.h +++ b/modules/juce_core/unit_tests/juce_UnitTest.h @@ -157,6 +157,27 @@ public: expect (result, failureMessage); } + /** Computes the difference between two values, and if it is larger than a + specified value, prints out a message containing the expected and actual + difference. + */ + template + void expectWithinAbsoluteError (ValueType actual, ValueType expected, ValueType maxAbsoluteError, String failureMessage = String()) + { + const ValueType diff = std::abs (actual - expected); + const bool result = diff <= maxAbsoluteError; + + if (! result) + { + if (failureMessage.isNotEmpty()) + failureMessage << " -- "; + + failureMessage << "Expected value: " << expected << ", Actual value: " << actual << " Max absolute error: " << maxAbsoluteError << " Actual difference: " << diff; + } + + expect (result, failureMessage); + } + //============================================================================== /** Checks that the result of an expression does not throw an exception. */ #define expectDoesNotThrow(expr) \