tolerance_04.run-fail.cpp 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  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. // See http://www.boost.org/libs/test for the library home page.
  6. //[example_code
  7. #define BOOST_TEST_MODULE tolerance_04
  8. #include <boost/test/included/unit_test.hpp>
  9. #include <boost/rational.hpp>
  10. namespace utf = boost::unit_test;
  11. namespace tt = boost::test_tools;
  12. namespace boost { namespace math { namespace fpc {
  13. template <typename I>
  14. struct tolerance_based< rational<I> > : boost::true_type{};
  15. } } }
  16. typedef boost::rational<int> ratio;
  17. BOOST_AUTO_TEST_CASE(test1, * utf::tolerance(ratio(1, 1000)))
  18. {
  19. ratio x (1002, 100); // 10.02
  20. ratio y (1001, 100); // 10.01
  21. ratio z (1000, 100); // 10.00
  22. BOOST_TEST(x == y); // irrelevant diff by default
  23. BOOST_TEST(x == y, tt::tolerance(ratio(1, 2000)));
  24. BOOST_TEST(x != z); // relevant diff by default
  25. BOOST_TEST(x != z, tt::tolerance(ratio(2, 1000)));
  26. }
  27. //]