Thank you. Is there a way to achieve this when comparing collections, i.e. when using boost::test_tools::per_element()?


On 29 Dec 2017, at 19:37, Raffi Enficiaud via Boost-users <boost-users@lists.boost.org> wrote:

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.html

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

_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
https://lists.boost.org/mailman/listinfo.cgi/boost-users