]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
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 | #include <boost/hana/assert.hpp> | |
6 | #include <boost/hana/drop_front.hpp> | |
7 | #include <boost/hana/equal.hpp> | |
8 | #include <boost/hana/experimental/view.hpp> | |
9 | #include <boost/hana/integral_constant.hpp> | |
10 | ||
11 | #include <laws/base.hpp> | |
12 | #include <support/seq.hpp> | |
13 | namespace hana = boost::hana; | |
14 | using hana::test::ct_eq; | |
15 | ||
16 | ||
17 | int main() { | |
18 | auto container = ::seq; | |
19 | auto f = hana::test::_injection<0>{}; | |
20 | ||
21 | { | |
22 | auto storage = container(); | |
23 | auto transformed = hana::experimental::transformed(storage, f); | |
24 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
25 | hana::drop_front(transformed, hana::size_c<0>), | |
26 | container() | |
27 | )); | |
28 | } | |
29 | ||
30 | { | |
31 | auto storage = container(ct_eq<0>{}); | |
32 | auto transformed = hana::experimental::transformed(storage, f); | |
33 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
34 | hana::drop_front(transformed, hana::size_c<0>), | |
35 | container(f(ct_eq<0>{})) | |
36 | )); | |
37 | }{ | |
38 | auto storage = container(ct_eq<0>{}); | |
39 | auto transformed = hana::experimental::transformed(storage, f); | |
40 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
41 | hana::drop_front(transformed, hana::size_c<1>), | |
42 | container() | |
43 | )); | |
44 | } | |
45 | ||
46 | { | |
47 | auto storage = container(ct_eq<0>{}, ct_eq<1>{}); | |
48 | auto transformed = hana::experimental::transformed(storage, f); | |
49 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
50 | hana::drop_front(transformed, hana::size_c<0>), | |
51 | container(f(ct_eq<0>{}), f(ct_eq<1>{})) | |
52 | )); | |
53 | }{ | |
54 | auto storage = container(ct_eq<0>{}, ct_eq<1>{}); | |
55 | auto transformed = hana::experimental::transformed(storage, f); | |
56 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
57 | hana::drop_front(transformed, hana::size_c<1>), | |
58 | container(f(ct_eq<1>{})) | |
59 | )); | |
60 | }{ | |
61 | auto storage = container(ct_eq<0>{}, ct_eq<1>{}); | |
62 | auto transformed = hana::experimental::transformed(storage, f); | |
63 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
64 | hana::drop_front(transformed, hana::size_c<2>), | |
65 | container() | |
66 | )); | |
67 | } | |
68 | ||
69 | { | |
70 | auto storage = container(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}); | |
71 | auto transformed = hana::experimental::transformed(storage, f); | |
72 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
73 | hana::drop_front(transformed, hana::size_c<0>), | |
74 | container(f(ct_eq<0>{}), f(ct_eq<1>{}), f(ct_eq<2>{})) | |
75 | )); | |
76 | }{ | |
77 | auto storage = container(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}); | |
78 | auto transformed = hana::experimental::transformed(storage, f); | |
79 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
80 | hana::drop_front(transformed, hana::size_c<1>), | |
81 | container(f(ct_eq<1>{}), f(ct_eq<2>{})) | |
82 | )); | |
83 | }{ | |
84 | auto storage = container(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}); | |
85 | auto transformed = hana::experimental::transformed(storage, f); | |
86 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
87 | hana::drop_front(transformed, hana::size_c<2>), | |
88 | container(f(ct_eq<2>{})) | |
89 | )); | |
90 | }{ | |
91 | auto storage = container(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}); | |
92 | auto transformed = hana::experimental::transformed(storage, f); | |
93 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
94 | hana::drop_front(transformed, hana::size_c<3>), | |
95 | container() | |
96 | )); | |
97 | } | |
98 | } |