
Sebastian Nowozin <nowozin <at> gmail.com> writes:
This does not do the job, as BOOST_CHECK_SMALL(std::fabs(first - second), 1.0e-3) will be about as useful as BOOST_CHECK(std::fabs(first - second) <= 1.0e-3)
It is not useful because in case this check fails I do not get to see the original values of both 'first' and 'second', but only their difference.
That's what you get for using suboptimal testing approach ;)
In my application, first and second are in the range of 0 to 1, but can in fact be quite close to zero.
You can still use ratio or percent based comparisons. They are more stable in general case and unless you have a very strong reason to prefer absolute comparison you should use relative one.
The qualitative test is correct if the absolute difference between first and second is small enough, irrespectively of the absolute value of first. Therefore, I fail to see why the boost test library provides only BOOST_CHECK_CLOSE and BOOST_CHECK_SMALL, but no analog to CPPUNIT_ASSERT_DOUBLES_EQUAL.
You are free to implement your own macro/comparison functor, but there are known good practices and Boost.Test punishes you a bit for not following them. Gennadiy