laws.cpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  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/assert.hpp>
  5. #include <boost/hana/ext/std/integer_sequence.hpp>
  6. #include <boost/hana/ext/std/integral_constant.hpp>
  7. #include <boost/hana/tuple.hpp>
  8. #include <laws/comparable.hpp>
  9. #include <laws/foldable.hpp>
  10. #include <laws/iterable.hpp>
  11. #include <laws/searchable.hpp>
  12. #include <type_traits>
  13. #include <utility>
  14. namespace hana = boost::hana;
  15. auto sequences = hana::make_tuple(
  16. std::integer_sequence<int>{},
  17. std::integer_sequence<int, 2>{},
  18. std::integer_sequence<int, 3>{},
  19. std::integer_sequence<int, 3, 4>{},
  20. std::integer_sequence<int, 3, 4, 5>{}
  21. );
  22. auto keys = hana::make_tuple(
  23. std::integral_constant<int, 3>{}, std::integral_constant<long long, 4>{}
  24. );
  25. int main() {
  26. hana::test::TestComparable<hana::ext::std::integer_sequence_tag>{sequences};
  27. hana::test::TestFoldable<hana::ext::std::integer_sequence_tag>{sequences};
  28. hana::test::TestIterable<hana::ext::std::integer_sequence_tag>{sequences};
  29. hana::test::TestSearchable<hana::ext::std::integer_sequence_tag>{sequences, keys};
  30. }