detail_safe_comparison_test.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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. #include <boost/core/lightweight_test.hpp>
  7. #include <boost/histogram/detail/safe_comparison.hpp>
  8. using namespace boost::histogram::detail;
  9. int main() {
  10. auto eq = safe_equal{};
  11. BOOST_TEST(eq(-1, -1));
  12. BOOST_TEST(eq(1, 1u));
  13. BOOST_TEST(eq(1u, 1));
  14. BOOST_TEST(eq(1u, 1u));
  15. BOOST_TEST(eq(1.0, 1));
  16. BOOST_TEST(eq(1, 1.0));
  17. BOOST_TEST(eq(1.0, 1u));
  18. BOOST_TEST(eq(1u, 1.0));
  19. BOOST_TEST_NOT(eq(-1, static_cast<unsigned>(-1)));
  20. BOOST_TEST_NOT(eq(static_cast<unsigned>(-1), -1));
  21. auto lt = safe_less{};
  22. BOOST_TEST(lt(1u, 2u));
  23. BOOST_TEST(lt(-1, 1u));
  24. BOOST_TEST(lt(1u, 2));
  25. BOOST_TEST(lt(-2, -1));
  26. BOOST_TEST(lt(-2.0, -1));
  27. BOOST_TEST(lt(1, 2.0));
  28. BOOST_TEST(lt(-1.0, 1u));
  29. BOOST_TEST(lt(1u, 2.0));
  30. BOOST_TEST(lt(1.0, 2.0));
  31. BOOST_TEST_NOT(lt(1u, 1));
  32. BOOST_TEST_NOT(lt(1, 1u));
  33. BOOST_TEST_NOT(lt(1.0, 1));
  34. BOOST_TEST_NOT(lt(1, 1.0));
  35. BOOST_TEST_NOT(lt(1.0, 1u));
  36. BOOST_TEST_NOT(lt(1u, 1.0));
  37. BOOST_TEST_NOT(lt(1.0, 1.0));
  38. auto gt = safe_greater{};
  39. BOOST_TEST(gt(2u, 1u));
  40. BOOST_TEST(gt(1u, -1));
  41. BOOST_TEST(gt(2, 1u));
  42. BOOST_TEST(gt(-1, -2));
  43. BOOST_TEST(gt(-1, -2.0));
  44. BOOST_TEST(gt(2.0, 1));
  45. BOOST_TEST(gt(1u, -1.0));
  46. BOOST_TEST(gt(2.0, 1u));
  47. BOOST_TEST_NOT(gt(1u, 1));
  48. BOOST_TEST_NOT(gt(1, 1u));
  49. BOOST_TEST_NOT(gt(1.0, 1));
  50. BOOST_TEST_NOT(gt(1, 1.0));
  51. BOOST_TEST_NOT(gt(1.0, 1u));
  52. BOOST_TEST_NOT(gt(1u, 1.0));
  53. return boost::report_errors();
  54. }