Le 29.12.17 à 17:33, Georgios Sermaidis via Boost-users a écrit :
Hi all,
I am trying to find a way to make the boost unit test framework use an absolute difference for floating point comparison instead of the relative difference. I searched the documentation to try to find a suitable decorator but couldn’t find anything. Any help is much appreciated!
#defineBOOST_TEST_MODULEexample
#include
//boost::unit_test::toleranceusesrelativedifference and hence this test will pass;
// isthereanythingIcanusehereto indicateabsolutedifference?
BOOST_AUTO_TEST_CASE(my_test,*boost::unit_test::tolerance(0.1))
{
BOOST_TEST(10.1==10.3);
}
What you want to do is discussed here in the doc: http://www.boost.org/doc/libs/1_66_0/libs/test/doc/html/boost_test/testing_t... You may just use BOOST_TEST(left - right == .0, boost::unit_test::tolerance(0.1)); and I think it should use absolute tolerance on the absolute value of left-right. If nothing works, there is always the good old comparison: BOOST_TEST((std::abs(left - right) < 0.1)) Note the double parenthesis, in this case BOOST_TEST will see only the evaluation of the expression inside, which is cast to bool (less elegant, but should work as last resort). Raffi