1 // Copyright (c) 2015 Boost.Test team 2 // Distributed under the Boost Software License, Version 1.0. 3 // (See accompanying file LICENSE_1_0.txt or copy at 4 // http://www.boost.org/LICENSE_1_0.txt) 5 6 // See http://www.boost.org/libs/test for the library home page. 7 8 //[example_code 9 #define BOOST_TEST_MODULE tolerance_04 10 #include <boost/test/included/unit_test.hpp> 11 #include <boost/rational.hpp> 12 namespace utf = boost::unit_test; 13 namespace tt = boost::test_tools; 14 15 namespace boost { namespace math { namespace fpc { 16 17 template <typename I> 18 struct tolerance_based< rational<I> > : boost::true_type{}; 19 20 } } } 21 22 typedef boost::rational<int> ratio; 23 24 BOOST_AUTO_TEST_CASE(test1, * utf::tolerance(ratio(1, 1000))) 25 { 26 ratio x (1002, 100); // 10.02 27 ratio y (1001, 100); // 10.01 28 ratio z (1000, 100); // 10.00 29 30 BOOST_TEST(x == y); // irrelevant diff by default 31 BOOST_TEST(x == y, tt::tolerance(ratio(1, 2000))); 32 33 BOOST_TEST(x != z); // relevant diff by default 34 BOOST_TEST(x != z, tt::tolerance(ratio(2, 1000))); 35 } 36 //] 37