• 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 #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 
main()17 int main() {
18     auto container = ::seq;
19 
20     {
21         auto storage1 = container(ct_eq<0>{});
22         auto storage2 = container();
23         auto joined = hana::experimental::joined(storage1, storage2);
24         BOOST_HANA_CONSTANT_CHECK(hana::equal(
25             hana::at(joined, hana::size_c<0>),
26             ct_eq<0>{}
27         ));
28     }{
29         auto storage1 = container();
30         auto storage2 = container(ct_eq<0>{});
31         auto joined = hana::experimental::joined(storage1, storage2);
32         BOOST_HANA_CONSTANT_CHECK(hana::equal(
33             hana::at(joined, hana::size_c<0>),
34             ct_eq<0>{}
35         ));
36     }
37 
38     {
39         auto storage1 = container(ct_eq<0>{}, ct_eq<1>{});
40         auto storage2 = container();
41         auto joined = hana::experimental::joined(storage1, storage2);
42         BOOST_HANA_CONSTANT_CHECK(hana::equal(
43             hana::at(joined, hana::size_c<0>),
44             ct_eq<0>{}
45         ));
46         BOOST_HANA_CONSTANT_CHECK(hana::equal(
47             hana::at(joined, hana::size_c<1>),
48             ct_eq<1>{}
49         ));
50     }{
51         auto storage1 = container(ct_eq<0>{});
52         auto storage2 = container(ct_eq<1>{});
53         auto joined = hana::experimental::joined(storage1, storage2);
54         BOOST_HANA_CONSTANT_CHECK(hana::equal(
55             hana::at(joined, hana::size_c<0>),
56             ct_eq<0>{}
57         ));
58         BOOST_HANA_CONSTANT_CHECK(hana::equal(
59             hana::at(joined, hana::size_c<1>),
60             ct_eq<1>{}
61         ));
62     }{
63         auto storage1 = container();
64         auto storage2 = container(ct_eq<0>{}, ct_eq<1>{});
65         auto joined = hana::experimental::joined(storage1, storage2);
66         BOOST_HANA_CONSTANT_CHECK(hana::equal(
67             hana::at(joined, hana::size_c<0>),
68             ct_eq<0>{}
69         ));
70         BOOST_HANA_CONSTANT_CHECK(hana::equal(
71             hana::at(joined, hana::size_c<1>),
72             ct_eq<1>{}
73         ));
74     }
75 
76     {
77         auto storage1 = container(ct_eq<0>{}, ct_eq<1>{});
78         auto storage2 = container(ct_eq<2>{}, ct_eq<3>{});
79         auto joined = hana::experimental::joined(storage1, storage2);
80         BOOST_HANA_CONSTANT_CHECK(hana::equal(
81             hana::at(joined, hana::size_c<0>),
82             ct_eq<0>{}
83         ));
84         BOOST_HANA_CONSTANT_CHECK(hana::equal(
85             hana::at(joined, hana::size_c<1>),
86             ct_eq<1>{}
87         ));
88         BOOST_HANA_CONSTANT_CHECK(hana::equal(
89             hana::at(joined, hana::size_c<2>),
90             ct_eq<2>{}
91         ));
92         BOOST_HANA_CONSTANT_CHECK(hana::equal(
93             hana::at(joined, hana::size_c<3>),
94             ct_eq<3>{}
95         ));
96     }
97 }
98