]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/hana/test/_include/auto/drop_front.hpp
update sources to ceph Nautilus 14.2.1
[ceph.git] / ceph / src / boost / libs / hana / test / _include / auto / drop_front.hpp
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
5 #ifndef BOOST_HANA_TEST_AUTO_DROP_FRONT_HPP
6 #define BOOST_HANA_TEST_AUTO_DROP_FRONT_HPP
7
8 #include <boost/hana/assert.hpp>
9 #include <boost/hana/drop_front.hpp>
10 #include <boost/hana/drop_front_exactly.hpp>
11 #include <boost/hana/equal.hpp>
12 #include <boost/hana/integral_constant.hpp>
13
14 #include <laws/base.hpp>
15 #include "test_case.hpp"
16
17
18 TestCase test_drop_front{[]{
19 namespace hana = boost::hana;
20 using hana::test::ct_eq;
21
22 BOOST_HANA_CONSTANT_CHECK(hana::equal(
23 hana::drop_front(MAKE_TUPLE(), hana::size_c<0>),
24 MAKE_TUPLE()
25 ));
26 BOOST_HANA_CONSTANT_CHECK(hana::equal(
27 hana::drop_front(MAKE_TUPLE(), hana::size_c<1>),
28 MAKE_TUPLE()
29 ));
30 BOOST_HANA_CONSTANT_CHECK(hana::equal(
31 hana::drop_front(MAKE_TUPLE(), hana::size_c<2>),
32 MAKE_TUPLE()
33 ));
34
35 BOOST_HANA_CONSTANT_CHECK(hana::equal(
36 hana::drop_front(MAKE_TUPLE(ct_eq<0>{}), hana::size_c<0>),
37 MAKE_TUPLE(ct_eq<0>{})
38 ));
39 BOOST_HANA_CONSTANT_CHECK(hana::equal(
40 hana::drop_front(MAKE_TUPLE(ct_eq<0>{}), hana::size_c<1>),
41 MAKE_TUPLE()
42 ));
43 BOOST_HANA_CONSTANT_CHECK(hana::equal(
44 hana::drop_front(MAKE_TUPLE(ct_eq<0>{}), hana::size_c<2>),
45 MAKE_TUPLE()
46 ));
47
48 BOOST_HANA_CONSTANT_CHECK(hana::equal(
49 hana::drop_front(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}), hana::size_c<0>),
50 MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{})
51 ));
52 BOOST_HANA_CONSTANT_CHECK(hana::equal(
53 hana::drop_front(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}), hana::size_c<1>),
54 MAKE_TUPLE(ct_eq<1>{})
55 ));
56 BOOST_HANA_CONSTANT_CHECK(hana::equal(
57 hana::drop_front(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}), hana::size_c<2>),
58 MAKE_TUPLE()
59 ));
60
61 BOOST_HANA_CONSTANT_CHECK(hana::equal(
62 hana::drop_front(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}), hana::size_c<0>),
63 MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{})
64 ));
65 BOOST_HANA_CONSTANT_CHECK(hana::equal(
66 hana::drop_front(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}), hana::size_c<1>),
67 MAKE_TUPLE(ct_eq<1>{}, ct_eq<2>{})
68 ));
69 BOOST_HANA_CONSTANT_CHECK(hana::equal(
70 hana::drop_front(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}), hana::size_c<2>),
71 MAKE_TUPLE(ct_eq<2>{})
72 ));
73 BOOST_HANA_CONSTANT_CHECK(hana::equal(
74 hana::drop_front(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}), hana::size_c<3>),
75 MAKE_TUPLE()
76 ));
77
78 // make sure hana::drop_front(xs) == hana::drop_front(xs, size_c<1>)
79 BOOST_HANA_CHECK(hana::equal(
80 hana::drop_front(MAKE_TUPLE()),
81 hana::drop_front(MAKE_TUPLE(), hana::size_c<1>)
82 ));
83
84 BOOST_HANA_CHECK(hana::equal(
85 hana::drop_front(MAKE_TUPLE(ct_eq<0>{})),
86 hana::drop_front(MAKE_TUPLE(ct_eq<0>{}), hana::size_c<1>)
87 ));
88
89 BOOST_HANA_CHECK(hana::equal(
90 hana::drop_front(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{})),
91 hana::drop_front(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}), hana::size_c<1>)
92 ));
93
94 BOOST_HANA_CHECK(hana::equal(
95 hana::drop_front(MAKE_TUPLE(ct_eq<0>{}, ct_eq<2>{})),
96 hana::drop_front(MAKE_TUPLE(ct_eq<0>{}, ct_eq<2>{}), hana::size_c<1>)
97 ));
98
99 BOOST_HANA_CONSTANT_CHECK(hana::equal(
100 hana::drop_front(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}, ct_eq<3>{})),
101 MAKE_TUPLE(ct_eq<1>{}, ct_eq<2>{}, ct_eq<3>{})
102 ));
103 }};
104
105 TestCase test_drop_front_exactly{[]{
106 namespace hana = boost::hana;
107 using hana::test::ct_eq;
108
109 BOOST_HANA_CONSTANT_CHECK(hana::equal(
110 hana::drop_front_exactly(MAKE_TUPLE(), hana::size_c<0>),
111 MAKE_TUPLE()
112 ));
113
114 BOOST_HANA_CONSTANT_CHECK(hana::equal(
115 hana::drop_front_exactly(MAKE_TUPLE(ct_eq<0>{}), hana::size_c<0>),
116 MAKE_TUPLE(ct_eq<0>{})
117 ));
118 BOOST_HANA_CONSTANT_CHECK(hana::equal(
119 hana::drop_front_exactly(MAKE_TUPLE(ct_eq<0>{}), hana::size_c<1>),
120 MAKE_TUPLE()
121 ));
122
123 BOOST_HANA_CONSTANT_CHECK(hana::equal(
124 hana::drop_front_exactly(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}), hana::size_c<0>),
125 MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{})
126 ));
127 BOOST_HANA_CONSTANT_CHECK(hana::equal(
128 hana::drop_front_exactly(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}), hana::size_c<1>),
129 MAKE_TUPLE(ct_eq<1>{})
130 ));
131 BOOST_HANA_CONSTANT_CHECK(hana::equal(
132 hana::drop_front_exactly(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}), hana::size_c<2>),
133 MAKE_TUPLE()
134 ));
135
136 BOOST_HANA_CONSTANT_CHECK(hana::equal(
137 hana::drop_front_exactly(
138 MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}, ct_eq<3>{},
139 ct_eq<4>{}, ct_eq<5>{}, ct_eq<6>{}, ct_eq<7>{}), hana::size_c<4>),
140 MAKE_TUPLE(ct_eq<4>{}, ct_eq<5>{}, ct_eq<6>{}, ct_eq<7>{})
141 ));
142
143 // make sure drop_front_exactly(xs) == drop_front_exactly(xs, size_c<1>)
144 BOOST_HANA_CHECK(hana::equal(
145 hana::drop_front_exactly(MAKE_TUPLE(ct_eq<0>{})),
146 hana::drop_front_exactly(MAKE_TUPLE(ct_eq<0>{}), hana::size_c<1>)
147 ));
148
149 BOOST_HANA_CHECK(hana::equal(
150 hana::drop_front_exactly(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{})),
151 hana::drop_front_exactly(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}), hana::size_c<1>)
152 ));
153
154 BOOST_HANA_CHECK(hana::equal(
155 hana::drop_front_exactly(MAKE_TUPLE(ct_eq<0>{}, ct_eq<2>{})),
156 hana::drop_front_exactly(MAKE_TUPLE(ct_eq<0>{}, ct_eq<2>{}), hana::size_c<1>)
157 ));
158 }};
159
160 #endif // !BOOST_HANA_TEST_AUTO_DROP_FRONT_HPP