From e78f0fe52655261a61d7239a89625076a4b65b06 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 6 Oct 2015 20:10:42 +0200 Subject: CPPUNIT workaround for mingw/wine/windows --- libs/ardour/test/dsp_load_calculator_test.cc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'libs/ardour/test') diff --git a/libs/ardour/test/dsp_load_calculator_test.cc b/libs/ardour/test/dsp_load_calculator_test.cc index f4ce68220c..b4a9ed236b 100644 --- a/libs/ardour/test/dsp_load_calculator_test.cc +++ b/libs/ardour/test/dsp_load_calculator_test.cc @@ -6,6 +6,22 @@ CPPUNIT_TEST_SUITE_REGISTRATION (DSPLoadCalculatorTest); + +#if defined(PLATFORM_WINDOWS) && defined(COMPILER_MINGW) +/* cppunit-1.13.2 uses assertion_traits + * sprintf( , "%.*g", precision, x) + * to format a double. The actual comparison is performed on a string. + * This is problematic with mingw/windows|wine, "%.*g" formatting fails. + * + * This quick hack compares float, however float compatisons are at most Y.MMMM+eXX, + * the max precision needs to be limited. to the last mantissa digit. + * + * Anyway, actual maths is verified with Linux and OSX unit-tests, + * and this needs to go to https://sourceforge.net/p/cppunit/bugs/ + */ +#define CPPUNIT_ASSERT_DOUBLES_EQUAL(A,B,P) CPPUNIT_ASSERT_EQUAL((float)rint ((A) / (P)),(float)rint ((B) / (P))) +#endif + using namespace std; using namespace ARDOUR; -- cgit v1.2.3