]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/test/test/writing-test-ts/fp-relational-operator.cpp
import new upstream nautilus stable release 14.2.8
[ceph.git] / ceph / src / boost / libs / test / test / writing-test-ts / fp-relational-operator.cpp
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)
5
6 // See ticket #13011
7
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;
12
13 //
14 // with zeros
15 //
16
17 BOOST_AUTO_TEST_CASE(EQ_zero_on_left, * utf::expected_failures(2))
18 {
19 BOOST_TEST(0.0 == 1.0);
20 BOOST_TEST(0.0 == 1.0, tt::tolerance(0.001));
21 }
22
23 BOOST_AUTO_TEST_CASE(NE_zero_on_left)
24 {
25 BOOST_TEST(0.0 != 1.0);
26 BOOST_TEST(0.0 != 1.0, tt::tolerance(0.001));
27 }
28
29 BOOST_AUTO_TEST_CASE(EQ_zero_on_right, * utf::expected_failures(2))
30 {
31 BOOST_TEST(1.0 == 0.0);
32 BOOST_TEST(1.0 == 0.0, tt::tolerance(0.001));
33 }
34
35 BOOST_AUTO_TEST_CASE(NE_zero_on_right)
36 {
37 BOOST_TEST(1.0 != 0.0);
38 BOOST_TEST(1.0 != 0.0, tt::tolerance(0.001));
39 }
40
41 BOOST_AUTO_TEST_CASE(EQ_zero_on_left_right)
42 {
43 BOOST_TEST(0.0 == 0.0);
44 BOOST_TEST(0.0 == 0.0, tt::tolerance(0.001));
45 }
46
47 BOOST_AUTO_TEST_CASE(NE_zero_on_left_right, * utf::expected_failures(2))
48 {
49 BOOST_TEST(0.0 != 0.0);
50 BOOST_TEST(0.0 != 0.0, tt::tolerance(0.001));
51 }
52
53 BOOST_AUTO_TEST_CASE(LT_zero_on_left)
54 {
55 BOOST_TEST(0.0 < 1.0);
56 BOOST_TEST(0.0 < 1.0, tt::tolerance(0.001));
57 }
58
59 BOOST_AUTO_TEST_CASE(GT_zero_on_left, * utf::expected_failures(2) )
60 {
61 BOOST_TEST(0.0 > 1.0);
62 BOOST_TEST(0.0 > 1.0, tt::tolerance(0.001));
63 }
64
65 BOOST_AUTO_TEST_CASE(GT_zero_on_right)
66 {
67 BOOST_TEST(1.0 > 0.0);
68 BOOST_TEST(1.0 > 0.0, tt::tolerance(0.001));
69 }
70
71 BOOST_AUTO_TEST_CASE(LT_zero_on_right, * utf::expected_failures(2) )
72 {
73 BOOST_TEST(1.0 < 0.0);
74 BOOST_TEST(1.0 < 0.0, tt::tolerance(0.001));
75 }
76
77 // with equality
78
79 BOOST_AUTO_TEST_CASE(LE_zero_on_left)
80 {
81 BOOST_TEST(0.0 <= 1.0);
82 BOOST_TEST(0.0 <= 1.0, tt::tolerance(0.001));
83 }
84
85 BOOST_AUTO_TEST_CASE(GE_zero_on_left, * utf::expected_failures(2) )
86 {
87 BOOST_TEST(0.0 >= 1.0);
88 BOOST_TEST(0.0 >= 1.0, tt::tolerance(0.001));
89 }
90
91 BOOST_AUTO_TEST_CASE(GE_zero_on_right)
92 {
93 BOOST_TEST(1.0 >= 0.0);
94 BOOST_TEST(1.0 >= 0.0, tt::tolerance(0.001));
95 }
96
97 BOOST_AUTO_TEST_CASE(LE_zero_on_right, * utf::expected_failures(2) )
98 {
99 BOOST_TEST(1.0 <= 0.0);
100 BOOST_TEST(1.0 <= 0.0, tt::tolerance(0.001));
101 }
102
103 //
104 // with numbers
105 //
106
107 BOOST_AUTO_TEST_CASE(LT_smaller_on_left)
108 {
109 BOOST_TEST(1.0 < 2.0);
110 BOOST_TEST(1.0 < 2.0, tt::tolerance(0.001));
111 }
112
113 BOOST_AUTO_TEST_CASE(GT_smaller_on_left, * utf::expected_failures(2) )
114 {
115 BOOST_TEST(1.0 > 2.0);
116 BOOST_TEST(1.0 > 2.0, tt::tolerance(0.001));
117 }
118
119 BOOST_AUTO_TEST_CASE(GT_smaller_on_right)
120 {
121 BOOST_TEST(2.0 > 1.0);
122 BOOST_TEST(2.0 > 1.0, tt::tolerance(0.001));
123 }
124
125 BOOST_AUTO_TEST_CASE(LT_smaller_on_right, * utf::expected_failures(2) )
126 {
127 BOOST_TEST(2.0 < 1.0);
128 BOOST_TEST(2.0 < 1.0, tt::tolerance(0.001));
129 }
130
131 // with equality
132
133 BOOST_AUTO_TEST_CASE(LE_smaller_on_left)
134 {
135 BOOST_TEST(1.0 <= 2.0);
136 BOOST_TEST(1.0 <= 2.0, tt::tolerance(0.001));
137 }
138
139 BOOST_AUTO_TEST_CASE(GE_smaller_on_left, * utf::expected_failures(2) )
140 {
141 BOOST_TEST(1.0 >= 2.0);
142 BOOST_TEST(1.0 >= 2.0, tt::tolerance(0.001));
143 }
144
145 BOOST_AUTO_TEST_CASE(GE_smaller_on_right)
146 {
147 BOOST_TEST(2.0 >= 1.0);
148 BOOST_TEST(2.0 >= 1.0, tt::tolerance(0.001));
149 }
150
151 BOOST_AUTO_TEST_CASE(LE_smaller_on_right, * utf::expected_failures(2) )
152 {
153 BOOST_TEST(2.0 <= 1.0);
154 BOOST_TEST(2.0 <= 1.0, tt::tolerance(0.001));
155 }
156
157 // infinity
158 BOOST_AUTO_TEST_CASE(infinity_comparison)
159 {
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);
165
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);
169
170 float b = a;
171 BOOST_TEST(b == a);
172 BOOST_TEST(a == b);
173 }
174
175 BOOST_AUTO_TEST_CASE(infinity_comparison_with_tolerance,
176 *utf::tolerance<float>(boost::math::fpc::percent_tolerance<float>(0.01))
177 ) {
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());
181
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);
185
186 float b = a;
187 BOOST_TEST(b == a);
188 BOOST_TEST(a == b);
189 BOOST_TEST((b == a));
190 BOOST_TEST((a == b));
191
192 BOOST_TEST(-a <= b);
193 BOOST_TEST(-a < b);
194
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));
198 }