1 // (C) Copyright Raffi Enficiaud 2017.
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)
8 #define BOOST_TEST_MODULE fp_check_relational_op
9 #include <boost/test/unit_test.hpp>
10 namespace utf
= boost::unit_test
;
11 namespace tt
= boost::test_tools
;
17 BOOST_AUTO_TEST_CASE(EQ_zero_on_left
, * utf::expected_failures(2))
19 BOOST_TEST(0.0 == 1.0);
20 BOOST_TEST(0.0 == 1.0, tt::tolerance(0.001));
23 BOOST_AUTO_TEST_CASE(NE_zero_on_left
)
25 BOOST_TEST(0.0 != 1.0);
26 BOOST_TEST(0.0 != 1.0, tt::tolerance(0.001));
29 BOOST_AUTO_TEST_CASE(EQ_zero_on_right
, * utf::expected_failures(2))
31 BOOST_TEST(1.0 == 0.0);
32 BOOST_TEST(1.0 == 0.0, tt::tolerance(0.001));
35 BOOST_AUTO_TEST_CASE(NE_zero_on_right
)
37 BOOST_TEST(1.0 != 0.0);
38 BOOST_TEST(1.0 != 0.0, tt::tolerance(0.001));
41 BOOST_AUTO_TEST_CASE(EQ_zero_on_left_right
)
43 BOOST_TEST(0.0 == 0.0);
44 BOOST_TEST(0.0 == 0.0, tt::tolerance(0.001));
47 BOOST_AUTO_TEST_CASE(NE_zero_on_left_right
, * utf::expected_failures(2))
49 BOOST_TEST(0.0 != 0.0);
50 BOOST_TEST(0.0 != 0.0, tt::tolerance(0.001));
53 BOOST_AUTO_TEST_CASE(LT_zero_on_left
)
55 BOOST_TEST(0.0 < 1.0);
56 BOOST_TEST(0.0 < 1.0, tt::tolerance(0.001));
59 BOOST_AUTO_TEST_CASE(GT_zero_on_left
, * utf::expected_failures(2) )
61 BOOST_TEST(0.0 > 1.0);
62 BOOST_TEST(0.0 > 1.0, tt::tolerance(0.001));
65 BOOST_AUTO_TEST_CASE(GT_zero_on_right
)
67 BOOST_TEST(1.0 > 0.0);
68 BOOST_TEST(1.0 > 0.0, tt::tolerance(0.001));
71 BOOST_AUTO_TEST_CASE(LT_zero_on_right
, * utf::expected_failures(2) )
73 BOOST_TEST(1.0 < 0.0);
74 BOOST_TEST(1.0 < 0.0, tt::tolerance(0.001));
79 BOOST_AUTO_TEST_CASE(LE_zero_on_left
)
81 BOOST_TEST(0.0 <= 1.0);
82 BOOST_TEST(0.0 <= 1.0, tt::tolerance(0.001));
85 BOOST_AUTO_TEST_CASE(GE_zero_on_left
, * utf::expected_failures(2) )
87 BOOST_TEST(0.0 >= 1.0);
88 BOOST_TEST(0.0 >= 1.0, tt::tolerance(0.001));
91 BOOST_AUTO_TEST_CASE(GE_zero_on_right
)
93 BOOST_TEST(1.0 >= 0.0);
94 BOOST_TEST(1.0 >= 0.0, tt::tolerance(0.001));
97 BOOST_AUTO_TEST_CASE(LE_zero_on_right
, * utf::expected_failures(2) )
99 BOOST_TEST(1.0 <= 0.0);
100 BOOST_TEST(1.0 <= 0.0, tt::tolerance(0.001));
107 BOOST_AUTO_TEST_CASE(LT_smaller_on_left
)
109 BOOST_TEST(1.0 < 2.0);
110 BOOST_TEST(1.0 < 2.0, tt::tolerance(0.001));
113 BOOST_AUTO_TEST_CASE(GT_smaller_on_left
, * utf::expected_failures(2) )
115 BOOST_TEST(1.0 > 2.0);
116 BOOST_TEST(1.0 > 2.0, tt::tolerance(0.001));
119 BOOST_AUTO_TEST_CASE(GT_smaller_on_right
)
121 BOOST_TEST(2.0 > 1.0);
122 BOOST_TEST(2.0 > 1.0, tt::tolerance(0.001));
125 BOOST_AUTO_TEST_CASE(LT_smaller_on_right
, * utf::expected_failures(2) )
127 BOOST_TEST(2.0 < 1.0);
128 BOOST_TEST(2.0 < 1.0, tt::tolerance(0.001));
133 BOOST_AUTO_TEST_CASE(LE_smaller_on_left
)
135 BOOST_TEST(1.0 <= 2.0);
136 BOOST_TEST(1.0 <= 2.0, tt::tolerance(0.001));
139 BOOST_AUTO_TEST_CASE(GE_smaller_on_left
, * utf::expected_failures(2) )
141 BOOST_TEST(1.0 >= 2.0);
142 BOOST_TEST(1.0 >= 2.0, tt::tolerance(0.001));
145 BOOST_AUTO_TEST_CASE(GE_smaller_on_right
)
147 BOOST_TEST(2.0 >= 1.0);
148 BOOST_TEST(2.0 >= 1.0, tt::tolerance(0.001));
151 BOOST_AUTO_TEST_CASE(LE_smaller_on_right
, * utf::expected_failures(2) )
153 BOOST_TEST(2.0 <= 1.0);
154 BOOST_TEST(2.0 <= 1.0, tt::tolerance(0.001));
158 BOOST_AUTO_TEST_CASE(infinity_comparison
)
160 //BOOST_TEST(2.0 <= 1.0);
161 BOOST_TEST(0 < std::numeric_limits
<float>::infinity());
162 BOOST_TEST(std::numeric_limits
<float>::infinity() == std::numeric_limits
<float>::infinity());
163 BOOST_TEST(std::numeric_limits
<float>::infinity() >= std::numeric_limits
<float>::infinity());
164 //BOOST_TEST(2.0 <= 1.0);
166 float a
= std::numeric_limits
<float>::infinity();
167 BOOST_TEST(a
== std::numeric_limits
<float>::infinity());
168 BOOST_TEST(std::numeric_limits
<float>::infinity() == a
);
175 BOOST_AUTO_TEST_CASE(infinity_comparison_with_tolerance
,
176 *utf::tolerance
<float>(boost::math::fpc::percent_tolerance
<float>(0.01))
178 BOOST_TEST(0 < std::numeric_limits
<float>::infinity());
179 BOOST_TEST(std::numeric_limits
<float>::infinity() == std::numeric_limits
<float>::infinity());
180 BOOST_TEST(std::numeric_limits
<float>::infinity() >= std::numeric_limits
<float>::infinity());
182 float a
= std::numeric_limits
<float>::infinity();
183 BOOST_TEST(a
== std::numeric_limits
<float>::infinity());
184 BOOST_TEST(std::numeric_limits
<float>::infinity() == a
);
189 BOOST_TEST((b
== a
));
190 BOOST_TEST((a
== b
));
195 BOOST_TEST(a
== b
, tt::tolerance(0.f
));
196 BOOST_TEST(a
== b
, tt::tolerance(10.f
));
197 BOOST_TEST(a
== b
, tt::tolerance(1E10f
));