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/test/included/unit_test.hpp>
//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_tools/extended_comparison/floating_point/floating_points_comparison_impl.htmlYou 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
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
https://lists.boost.org/mailman/listinfo.cgi/boost-users