1 // Copyright 2018-2019 Hans Dembinski
2 //
3 // Distributed under the Boost Software License, Version 1.0.
4 // (See accompanying file LICENSE_1_0.txt
5 // or copy at http://www.boost.org/LICENSE_1_0.txt)
6
7 #include <boost/core/lightweight_test.hpp>
8 #include <boost/histogram/detail/safe_comparison.hpp>
9
10 using namespace boost::histogram::detail;
11
main()12 int main() {
13 auto eq = safe_equal{};
14 BOOST_TEST(eq(-1, -1));
15 BOOST_TEST(eq(1, 1u));
16 BOOST_TEST(eq(1u, 1));
17 BOOST_TEST(eq(1u, 1u));
18 BOOST_TEST(eq(1.0, 1));
19 BOOST_TEST(eq(1, 1.0));
20 BOOST_TEST(eq(1.0, 1u));
21 BOOST_TEST(eq(1u, 1.0));
22 BOOST_TEST_NOT(eq(-1, static_cast<unsigned>(-1)));
23 BOOST_TEST_NOT(eq(static_cast<unsigned>(-1), -1));
24
25 auto lt = safe_less{};
26 BOOST_TEST(lt(1u, 2u));
27 BOOST_TEST(lt(-1, 1u));
28 BOOST_TEST(lt(1u, 2));
29 BOOST_TEST(lt(-2, -1));
30 BOOST_TEST(lt(-2.0, -1));
31 BOOST_TEST(lt(1, 2.0));
32 BOOST_TEST(lt(-1.0, 1u));
33 BOOST_TEST(lt(1u, 2.0));
34 BOOST_TEST(lt(1.0, 2.0));
35 BOOST_TEST_NOT(lt(1u, 1));
36 BOOST_TEST_NOT(lt(1, 1u));
37 BOOST_TEST_NOT(lt(1.0, 1));
38 BOOST_TEST_NOT(lt(1, 1.0));
39 BOOST_TEST_NOT(lt(1.0, 1u));
40 BOOST_TEST_NOT(lt(1u, 1.0));
41 BOOST_TEST_NOT(lt(1.0, 1.0));
42
43 auto gt = safe_greater{};
44 BOOST_TEST(gt(2u, 1u));
45 BOOST_TEST(gt(1u, -1));
46 BOOST_TEST(gt(2, 1u));
47 BOOST_TEST(gt(-1, -2));
48 BOOST_TEST(gt(-1, -2.0));
49 BOOST_TEST(gt(2.0, 1));
50 BOOST_TEST(gt(1u, -1.0));
51 BOOST_TEST(gt(2.0, 1u));
52 BOOST_TEST_NOT(gt(1u, 1));
53 BOOST_TEST_NOT(gt(1, 1u));
54 BOOST_TEST_NOT(gt(1.0, 1));
55 BOOST_TEST_NOT(gt(1, 1.0));
56 BOOST_TEST_NOT(gt(1.0, 1u));
57 BOOST_TEST_NOT(gt(1u, 1.0));
58
59 return boost::report_errors();
60 }
61