• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include <boost/hana/assert.hpp>
6 #include <boost/hana/at.hpp>
7 #include <boost/hana/equal.hpp>
8 #include <boost/hana/experimental/view.hpp>
9 
10 #include <laws/base.hpp>
11 #include <support/seq.hpp>
12 namespace hana = boost::hana;
13 using hana::test::ct_eq;
14 
15 
main()16 int main() {
17     auto container = ::seq;
18     auto f = hana::test::_injection<0>{};
19 
20     {
21         auto storage = container(ct_eq<0>{});
22         auto transformed = hana::experimental::transformed(storage, f);
23         BOOST_HANA_CONSTANT_CHECK(hana::equal(
24             hana::at_c<0>(transformed),
25             f(ct_eq<0>{})
26         ));
27     }{
28         auto storage = container(ct_eq<0>{}, ct_eq<1>{});
29         auto transformed = hana::experimental::transformed(storage, f);
30         BOOST_HANA_CONSTANT_CHECK(hana::equal(
31             hana::at_c<0>(transformed),
32             f(ct_eq<0>{})
33         ));
34         BOOST_HANA_CONSTANT_CHECK(hana::equal(
35             hana::at_c<1>(transformed),
36             f(ct_eq<1>{})
37         ));
38     }{
39         auto storage = container(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{});
40         auto transformed = hana::experimental::transformed(storage, f);
41         BOOST_HANA_CONSTANT_CHECK(hana::equal(
42             hana::at_c<0>(transformed),
43             f(ct_eq<0>{})
44         ));
45         BOOST_HANA_CONSTANT_CHECK(hana::equal(
46             hana::at_c<1>(transformed),
47             f(ct_eq<1>{})
48         ));
49         BOOST_HANA_CONSTANT_CHECK(hana::equal(
50             hana::at_c<2>(transformed),
51             f(ct_eq<2>{})
52         ));
53     }{
54         auto storage = container(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}, ct_eq<3>{});
55         auto transformed = hana::experimental::transformed(storage, f);
56         BOOST_HANA_CONSTANT_CHECK(hana::equal(
57             hana::at_c<0>(transformed),
58             f(ct_eq<0>{})
59         ));
60         BOOST_HANA_CONSTANT_CHECK(hana::equal(
61             hana::at_c<1>(transformed),
62             f(ct_eq<1>{})
63         ));
64         BOOST_HANA_CONSTANT_CHECK(hana::equal(
65             hana::at_c<2>(transformed),
66             f(ct_eq<2>{})
67         ));
68         BOOST_HANA_CONSTANT_CHECK(hana::equal(
69             hana::at_c<3>(transformed),
70             f(ct_eq<3>{})
71         ));
72     }
73 }
74