laws.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. // Copyright Louis Dionne 2013-2017
  2. // Distributed under the Boost Software License, Version 1.0.
  3. // (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
  4. #include <boost/hana/integral_constant.hpp>
  5. #include <boost/hana/range.hpp>
  6. #include <boost/hana/tuple.hpp>
  7. #include <laws/comparable.hpp>
  8. #include <laws/foldable.hpp>
  9. #include <laws/iterable.hpp>
  10. #include <laws/searchable.hpp>
  11. #include <type_traits>
  12. namespace hana = boost::hana;
  13. int main() {
  14. auto ranges = hana::make_tuple(
  15. hana::make_range(hana::int_c<0>, hana::int_c<0>)
  16. , hana::make_range(hana::int_c<0>, hana::int_c<1>)
  17. , hana::make_range(hana::int_c<0>, hana::int_c<2>)
  18. , hana::make_range(hana::int_c<1>, hana::int_c<1>)
  19. , hana::make_range(hana::int_c<1>, hana::int_c<2>)
  20. , hana::make_range(hana::int_c<1>, hana::int_c<3>)
  21. , hana::make_range(hana::int_c<50>, hana::int_c<60>)
  22. , hana::make_range(hana::int_c<50>, hana::long_c<60>)
  23. , hana::make_range(hana::long_c<50>, hana::int_c<60>)
  24. );
  25. auto integers = hana::tuple_c<int, 0, 1, 900>;
  26. hana::test::TestComparable<hana::range_tag>{ranges};
  27. hana::test::TestFoldable<hana::range_tag>{ranges};
  28. hana::test::TestIterable<hana::range_tag>{ranges};
  29. hana::test::TestSearchable<hana::range_tag>{ranges, integers};
  30. }