• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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