13
0

CPPUNIT workaround for mingw/wine/windows

This commit is contained in:
Robin Gareus 2015-10-06 20:10:42 +02:00
parent 6b00e149d2
commit e78f0fe526

View File

@ -6,6 +6,22 @@
CPPUNIT_TEST_SUITE_REGISTRATION (DSPLoadCalculatorTest); CPPUNIT_TEST_SUITE_REGISTRATION (DSPLoadCalculatorTest);
#if defined(PLATFORM_WINDOWS) && defined(COMPILER_MINGW)
/* cppunit-1.13.2 uses assertion_traits<double>
* 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 std;
using namespace ARDOUR; using namespace ARDOUR;