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)
5 #include <boost/hana/string.hpp>
6 #include <boost/hana/tuple.hpp>
8 #include <laws/comparable.hpp>
9 #include <laws/foldable.hpp>
10 #include <laws/hashable.hpp>
11 #include <laws/iterable.hpp>
12 #include <laws/monoid.hpp>
13 #include <laws/orderable.hpp>
14 #include <laws/searchable.hpp>
15 namespace hana = boost::hana;
19 // Comparable and Hashable
21 auto strings = hana::make_tuple(
22 BOOST_HANA_STRING(""),
23 BOOST_HANA_STRING("a"),
24 BOOST_HANA_STRING("ab"),
25 BOOST_HANA_STRING("abc"),
26 BOOST_HANA_STRING("abcd"),
27 BOOST_HANA_STRING("abcde"),
28 BOOST_HANA_STRING("ba")
31 hana::test::TestComparable<hana::string_tag>{strings};
32 hana::test::TestHashable<hana::string_tag>{strings};
37 auto strings = hana::make_tuple(
38 BOOST_HANA_STRING(""),
39 BOOST_HANA_STRING("a"),
40 BOOST_HANA_STRING("ab"),
41 BOOST_HANA_STRING("abc"),
42 BOOST_HANA_STRING("abcd"),
43 BOOST_HANA_STRING("abcde"),
44 BOOST_HANA_STRING("ba")
47 hana::test::TestMonoid<hana::string_tag>{strings};
50 // Foldable and Iterable
52 auto strings = hana::make_tuple(
53 BOOST_HANA_STRING(""),
54 BOOST_HANA_STRING("a"),
55 BOOST_HANA_STRING("ab"),
56 BOOST_HANA_STRING("abc"),
57 BOOST_HANA_STRING("abcd"),
58 BOOST_HANA_STRING("abcde"),
59 BOOST_HANA_STRING("ba"),
60 BOOST_HANA_STRING("afcd")
63 hana::test::TestFoldable<hana::string_tag>{strings};
64 hana::test::TestIterable<hana::string_tag>{strings};
69 auto strings = hana::make_tuple(
70 BOOST_HANA_STRING(""),
71 BOOST_HANA_STRING("a"),
72 BOOST_HANA_STRING("ab"),
73 BOOST_HANA_STRING("abc"),
74 BOOST_HANA_STRING("ba"),
75 BOOST_HANA_STRING("abd")
78 hana::test::TestOrderable<hana::string_tag>{strings};
83 auto keys = hana::tuple_c<char, 'a', 'f'>;
84 auto strings = hana::make_tuple(
85 BOOST_HANA_STRING(""),
86 BOOST_HANA_STRING("a"),
87 BOOST_HANA_STRING("ab"),
88 BOOST_HANA_STRING("abcd"),
89 BOOST_HANA_STRING("ba"),
90 BOOST_HANA_STRING("afcd")
93 hana::test::TestSearchable<hana::string_tag>{strings, keys};