1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- // Copyright Louis Dionne 2013-2017
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
- #include <boost/hana/string.hpp>
- #include <boost/hana/tuple.hpp>
- #include <laws/comparable.hpp>
- #include <laws/foldable.hpp>
- #include <laws/hashable.hpp>
- #include <laws/iterable.hpp>
- #include <laws/monoid.hpp>
- #include <laws/orderable.hpp>
- #include <laws/searchable.hpp>
- namespace hana = boost::hana;
- int main() {
- // Comparable and Hashable
- {
- auto strings = hana::make_tuple(
- BOOST_HANA_STRING(""),
- BOOST_HANA_STRING("a"),
- BOOST_HANA_STRING("ab"),
- BOOST_HANA_STRING("abc"),
- BOOST_HANA_STRING("abcd"),
- BOOST_HANA_STRING("abcde"),
- BOOST_HANA_STRING("ba")
- );
- hana::test::TestComparable<hana::string_tag>{strings};
- hana::test::TestHashable<hana::string_tag>{strings};
- }
- // Monoid
- {
- auto strings = hana::make_tuple(
- BOOST_HANA_STRING(""),
- BOOST_HANA_STRING("a"),
- BOOST_HANA_STRING("ab"),
- BOOST_HANA_STRING("abc"),
- BOOST_HANA_STRING("abcd"),
- BOOST_HANA_STRING("abcde"),
- BOOST_HANA_STRING("ba")
- );
- hana::test::TestMonoid<hana::string_tag>{strings};
- }
- // Foldable and Iterable
- {
- auto strings = hana::make_tuple(
- BOOST_HANA_STRING(""),
- BOOST_HANA_STRING("a"),
- BOOST_HANA_STRING("ab"),
- BOOST_HANA_STRING("abc"),
- BOOST_HANA_STRING("abcd"),
- BOOST_HANA_STRING("abcde"),
- BOOST_HANA_STRING("ba"),
- BOOST_HANA_STRING("afcd")
- );
- hana::test::TestFoldable<hana::string_tag>{strings};
- hana::test::TestIterable<hana::string_tag>{strings};
- }
- // Orderable
- {
- auto strings = hana::make_tuple(
- BOOST_HANA_STRING(""),
- BOOST_HANA_STRING("a"),
- BOOST_HANA_STRING("ab"),
- BOOST_HANA_STRING("abc"),
- BOOST_HANA_STRING("ba"),
- BOOST_HANA_STRING("abd")
- );
- hana::test::TestOrderable<hana::string_tag>{strings};
- }
- // Searchable
- {
- auto keys = hana::tuple_c<char, 'a', 'f'>;
- auto strings = hana::make_tuple(
- BOOST_HANA_STRING(""),
- BOOST_HANA_STRING("a"),
- BOOST_HANA_STRING("ab"),
- BOOST_HANA_STRING("abcd"),
- BOOST_HANA_STRING("ba"),
- BOOST_HANA_STRING("afcd")
- );
- hana::test::TestSearchable<hana::string_tag>{strings, keys};
- }
- }
|