• 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/equal.hpp>
7 #include <boost/hana/experimental/view.hpp>
8 #include <boost/hana/integral_constant.hpp>
9 #include <boost/hana/length.hpp>
10 
11 #include <support/seq.hpp>
12 namespace hana = boost::hana;
13 
14 
15 template <int> struct undefined { };
16 
main()17 int main() {
18     auto container = ::seq;
19 
20     {
21         auto storage1 = container();
22         auto storage2 = container();
23         auto joined = hana::experimental::joined(storage1, storage2);
24         BOOST_HANA_CONSTANT_CHECK(hana::equal(
25             hana::length(joined),
26             hana::size_c<0>
27         ));
28     }
29 
30     {
31         auto storage1 = container(undefined<0>{});
32         auto storage2 = container();
33         auto joined = hana::experimental::joined(storage1, storage2);
34         BOOST_HANA_CONSTANT_CHECK(hana::equal(
35             hana::length(joined),
36             hana::size_c<1>
37         ));
38     }
39 
40     {
41         auto storage1 = container();
42         auto storage2 = container(undefined<0>{});
43         auto joined = hana::experimental::joined(storage1, storage2);
44         BOOST_HANA_CONSTANT_CHECK(hana::equal(
45             hana::length(joined),
46             hana::size_c<1>
47         ));
48     }
49 
50     {
51         auto storage1 = container(undefined<0>{});
52         auto storage2 = container(undefined<1>{});
53         auto joined = hana::experimental::joined(storage1, storage2);
54         BOOST_HANA_CONSTANT_CHECK(hana::equal(
55             hana::length(joined),
56             hana::size_c<2>
57         ));
58     }
59 
60     {
61         auto storage1 = container(undefined<0>{});
62         auto storage2 = container(undefined<1>{});
63         auto joined = hana::experimental::joined(storage1, storage2);
64         BOOST_HANA_CONSTANT_CHECK(hana::equal(
65             hana::length(joined),
66             hana::size_c<2>
67         ));
68     }
69 
70     {
71         auto storage1 = container(undefined<0>{}, undefined<1>{});
72         auto storage2 = container(undefined<2>{});
73         auto joined = hana::experimental::joined(storage1, storage2);
74         BOOST_HANA_CONSTANT_CHECK(hana::equal(
75             hana::length(joined),
76             hana::size_c<3>
77         ));
78     }
79 
80     {
81         auto storage1 = container(undefined<0>{}, undefined<1>{}, undefined<2>{});
82         auto storage2 = container(undefined<3>{}, undefined<4>{});
83         auto joined = hana::experimental::joined(storage1, storage2);
84         BOOST_HANA_CONSTANT_CHECK(hana::equal(
85             hana::length(joined),
86             hana::size_c<5>
87         ));
88     }
89 }
90