• 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