]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/hana/test/_include/auto/partition.hpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / hana / test / _include / auto / partition.hpp
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)
4
5 #ifndef BOOST_HANA_TEST_AUTO_PARTITION_HPP
6 #define BOOST_HANA_TEST_AUTO_PARTITION_HPP
7
8 #include <boost/hana/assert.hpp>
9 #include <boost/hana/contains.hpp>
10 #include <boost/hana/equal.hpp>
11 #include <boost/hana/partition.hpp>
12
13 #include "test_case.hpp"
14 #include <laws/base.hpp>
15 #include <support/minimal_product.hpp>
16
17
18 TestCase test_partition{[]{
19 namespace hana = boost::hana;
20 using hana::test::ct_eq;
21
22 struct undefined { };
23
24 auto pair = ::minimal_product;
25 auto pred = hana::in ^ MAKE_TUPLE(ct_eq<-1>{}, ct_eq<-2>{}, ct_eq<-3>{}, ct_eq<-4>{}, ct_eq<-5>{});
26
27 BOOST_HANA_CONSTANT_CHECK(hana::equal(
28 hana::partition(MAKE_TUPLE(), undefined{}),
29 pair(MAKE_TUPLE(), MAKE_TUPLE())
30 ));
31 BOOST_HANA_CONSTANT_CHECK(hana::equal(
32 hana::partition(MAKE_TUPLE(ct_eq<0>{}), pred),
33 pair(MAKE_TUPLE(),
34 MAKE_TUPLE(ct_eq<0>{}))
35 ));
36 BOOST_HANA_CONSTANT_CHECK(hana::equal(
37 hana::partition(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}), pred),
38 pair(MAKE_TUPLE(),
39 MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}))
40 ));
41 BOOST_HANA_CONSTANT_CHECK(hana::equal(
42 hana::partition(MAKE_TUPLE(ct_eq<-1>{}), pred),
43 pair(MAKE_TUPLE(ct_eq<-1>{}),
44 MAKE_TUPLE())
45 ));
46 BOOST_HANA_CONSTANT_CHECK(hana::equal(
47 hana::partition(MAKE_TUPLE(ct_eq<-1>{}, ct_eq<0>{}, ct_eq<2>{}), pred),
48 pair(MAKE_TUPLE(ct_eq<-1>{}),
49 MAKE_TUPLE(ct_eq<0>{}, ct_eq<2>{}))
50 ));
51 BOOST_HANA_CONSTANT_CHECK(hana::equal(
52 hana::partition(MAKE_TUPLE(ct_eq<0>{}, ct_eq<-3>{}, ct_eq<2>{}, ct_eq<-5>{}, ct_eq<6>{}), pred),
53 pair(MAKE_TUPLE(ct_eq<-3>{}, ct_eq<-5>{}),
54 MAKE_TUPLE(ct_eq<0>{}, ct_eq<2>{}, ct_eq<6>{}))
55 ));
56 BOOST_HANA_CONSTANT_CHECK(hana::equal(
57 hana::partition(MAKE_TUPLE(ct_eq<-1>{}, ct_eq<2>{}, ct_eq<-3>{}, ct_eq<0>{}, ct_eq<-3>{}, ct_eq<4>{}), pred),
58 pair(MAKE_TUPLE(ct_eq<-1>{}, ct_eq<-3>{}, ct_eq<-3>{}),
59 MAKE_TUPLE(ct_eq<2>{}, ct_eq<0>{}, ct_eq<4>{}))
60 ));
61
62 // partition.by
63 BOOST_HANA_CONSTANT_CHECK(hana::equal(
64 hana::partition.by(pred, MAKE_TUPLE(ct_eq<-1>{}, ct_eq<0>{}, ct_eq<2>{})),
65 hana::partition(MAKE_TUPLE(ct_eq<-1>{}, ct_eq<0>{}, ct_eq<2>{}), pred)
66 ));
67
68 BOOST_HANA_CONSTANT_CHECK(hana::equal(
69 hana::partition.by(pred)(MAKE_TUPLE(ct_eq<-1>{}, ct_eq<0>{}, ct_eq<2>{})),
70 hana::partition(MAKE_TUPLE(ct_eq<-1>{}, ct_eq<0>{}, ct_eq<2>{}), pred)
71 ));
72 }};
73
74 #endif // !BOOST_HANA_TEST_AUTO_PARTITION_HPP