]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/hana/test/_include/auto/drop_front.hpp
update sources to v12.2.3
[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
61 // make sure hana::drop_front(xs) == hana::drop_front(xs, size_c<1>)
62 BOOST_HANA_CHECK(hana::equal(
63 hana::drop_front(MAKE_TUPLE()),
64 hana::drop_front(MAKE_TUPLE(), hana::size_c<1>)
65 ));
66
67 BOOST_HANA_CHECK(hana::equal(
68 hana::drop_front(MAKE_TUPLE(ct_eq<0>{})),
69 hana::drop_front(MAKE_TUPLE(ct_eq<0>{}), hana::size_c<1>)
70 ));
71
72 BOOST_HANA_CHECK(hana::equal(
73 hana::drop_front(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{})),
74 hana::drop_front(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}), hana::size_c<1>)
75 ));
76
77 BOOST_HANA_CHECK(hana::equal(
78 hana::drop_front(MAKE_TUPLE(ct_eq<0>{}, ct_eq<2>{})),
79 hana::drop_front(MAKE_TUPLE(ct_eq<0>{}, ct_eq<2>{}), hana::size_c<1>)
80 ));
81}};
82
83TestCase test_drop_front_exactly{[]{
84 namespace hana = boost::hana;
85 using hana::test::ct_eq;
86
87 BOOST_HANA_CONSTANT_CHECK(hana::equal(
88 hana::drop_front_exactly(MAKE_TUPLE(), hana::size_c<0>),
89 MAKE_TUPLE()
90 ));
91
92 BOOST_HANA_CONSTANT_CHECK(hana::equal(
93 hana::drop_front_exactly(MAKE_TUPLE(ct_eq<0>{}), hana::size_c<0>),
94 MAKE_TUPLE(ct_eq<0>{})
95 ));
96 BOOST_HANA_CONSTANT_CHECK(hana::equal(
97 hana::drop_front_exactly(MAKE_TUPLE(ct_eq<0>{}), hana::size_c<1>),
98 MAKE_TUPLE()
99 ));
100
101 BOOST_HANA_CONSTANT_CHECK(hana::equal(
102 hana::drop_front_exactly(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}), hana::size_c<0>),
103 MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{})
104 ));
105 BOOST_HANA_CONSTANT_CHECK(hana::equal(
106 hana::drop_front_exactly(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}), hana::size_c<1>),
107 MAKE_TUPLE(ct_eq<1>{})
108 ));
109 BOOST_HANA_CONSTANT_CHECK(hana::equal(
110 hana::drop_front_exactly(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}), hana::size_c<2>),
111 MAKE_TUPLE()
112 ));
113
114 BOOST_HANA_CONSTANT_CHECK(hana::equal(
115 hana::drop_front_exactly(
116 MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}, ct_eq<3>{},
117 ct_eq<4>{}, ct_eq<5>{}, ct_eq<6>{}, ct_eq<7>{}), hana::size_c<4>),
118 MAKE_TUPLE(ct_eq<4>{}, ct_eq<5>{}, ct_eq<6>{}, ct_eq<7>{})
119 ));
120
121 // make sure drop_front_exactly(xs) == drop_front_exactly(xs, size_c<1>)
122 BOOST_HANA_CHECK(hana::equal(
123 hana::drop_front_exactly(MAKE_TUPLE(ct_eq<0>{})),
124 hana::drop_front_exactly(MAKE_TUPLE(ct_eq<0>{}), hana::size_c<1>)
125 ));
126
127 BOOST_HANA_CHECK(hana::equal(
128 hana::drop_front_exactly(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{})),
129 hana::drop_front_exactly(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}), hana::size_c<1>)
130 ));
131
132 BOOST_HANA_CHECK(hana::equal(
133 hana::drop_front_exactly(MAKE_TUPLE(ct_eq<0>{}, ct_eq<2>{})),
134 hana::drop_front_exactly(MAKE_TUPLE(ct_eq<0>{}, ct_eq<2>{}), hana::size_c<1>)
135 ));
136}};
137
138#endif // !BOOST_HANA_TEST_AUTO_DROP_FRONT_HPP