]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/hana/test/optional/laws.cpp
483c1d98707e85780b49cc6a54d708eff66bf104
1 // Copyright Louis Dionne 2013-2016
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/bool.hpp>
6 #include <boost/hana/optional.hpp>
7 #include <boost/hana/tuple.hpp>
9 #include <laws/applicative.hpp>
10 #include <laws/base.hpp>
11 #include <laws/comparable.hpp>
12 #include <laws/foldable.hpp>
13 #include <laws/functor.hpp>
14 #include <laws/monad.hpp>
15 #include <laws/monad_plus.hpp>
16 #include <laws/orderable.hpp>
17 #include <laws/searchable.hpp>
18 namespace hana
= boost::hana
;
19 using hana::test::ct_eq
;
20 using hana::test::ct_ord
;
24 auto ords
= hana::make_tuple(
26 hana::just(ct_ord
<0>{}),
27 hana::just(ct_ord
<1>{}),
28 hana::just(ct_ord
<2>{})
31 auto eqs
= hana::make_tuple(
33 hana::just(ct_eq
<0>{}),
34 hana::just(ct_eq
<1>{}),
35 hana::just(ct_eq
<2>{})
38 auto eq_values
= hana::make_tuple(ct_eq
<0>{}, ct_eq
<2>{}, ct_eq
<3>{});
40 auto predicates
= hana::make_tuple(
41 hana::equal
.to(ct_eq
<0>{}),
42 hana::equal
.to(ct_eq
<2>{}),
43 hana::equal
.to(ct_eq
<3>{}),
44 hana::always(hana::false_c
),
45 hana::always(hana::true_c
)
48 auto nested_eqs
= hana::make_tuple(
50 hana::just(hana::just(ct_eq
<0>{})),
51 hana::just(hana::nothing
),
52 hana::just(hana::just(ct_eq
<2>{}))
56 hana::test::TestComparable
<hana::optional_tag
>{eqs
};
57 hana::test::TestOrderable
<hana::optional_tag
>{ords
};
58 hana::test::TestFunctor
<hana::optional_tag
>{eqs
, eq_values
};
59 hana::test::TestApplicative
<hana::optional_tag
>{eqs
};
60 hana::test::TestMonad
<hana::optional_tag
>{eqs
, nested_eqs
};
61 hana::test::TestMonadPlus
<hana::optional_tag
>{eqs
, predicates
, eq_values
};
62 hana::test::TestSearchable
<hana::optional_tag
>{eqs
, eq_values
};
63 hana::test::TestSearchable
<hana::optional_tag
>{
65 hana::just(hana::true_c
),
66 hana::just(hana::false_c
),
69 hana::make_tuple(hana::true_c
, hana::false_c
)
71 hana::test::TestFoldable
<hana::optional_tag
>{eqs
};