]> git.proxmox.com Git - ceph.git/blame - 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
CommitLineData
b32b8144 1// Copyright Louis Dionne 2013-2017
7c673cae
FG
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
18TestCase 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
11fdf7f2
TL
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
7c673cae
FG
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 ));
11fdf7f2
TL
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 ));
7c673cae
FG
103}};
104
105TestCase 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