• 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 #ifndef BOOST_HANA_TEST_AUTO_INSERT_RANGE_HPP
6 #define BOOST_HANA_TEST_AUTO_INSERT_RANGE_HPP
7 
8 #include <boost/hana/assert.hpp>
9 #include <boost/hana/equal.hpp>
10 #include <boost/hana/insert_range.hpp>
11 #include <boost/hana/integral_constant.hpp>
12 
13 #include "test_case.hpp"
14 #include <laws/base.hpp>
15 #include <support/seq.hpp>
16 
17 
__anonaaa248f90102null18 TestCase test_insert_range{[]{
19     namespace hana = boost::hana;
20     using hana::test::ct_eq;
21 
22     auto foldable = ::seq;
23 
24     BOOST_HANA_CONSTANT_CHECK(hana::equal(
25         hana::insert_range(
26             MAKE_TUPLE(ct_eq<1>{}),
27             hana::size_c<0>,
28             foldable()),
29         MAKE_TUPLE(ct_eq<1>{})
30     ));
31     BOOST_HANA_CONSTANT_CHECK(hana::equal(
32         hana::insert_range(
33             MAKE_TUPLE(ct_eq<1>{}),
34             hana::size_c<0>,
35             foldable(ct_eq<-1>{})),
36         MAKE_TUPLE(ct_eq<-1>{}, ct_eq<1>{})
37     ));
38     BOOST_HANA_CONSTANT_CHECK(hana::equal(
39         hana::insert_range(
40             MAKE_TUPLE(ct_eq<1>{}),
41             hana::size_c<0>,
42             foldable(ct_eq<-1>{}, ct_eq<-2>{})),
43         MAKE_TUPLE(ct_eq<-1>{}, ct_eq<-2>{}, ct_eq<1>{})
44     ));
45     BOOST_HANA_CONSTANT_CHECK(hana::equal(
46         hana::insert_range(
47             MAKE_TUPLE(ct_eq<1>{}),
48             hana::size_c<0>,
49             foldable(ct_eq<-1>{}, ct_eq<-2>{}, ct_eq<-3>{})),
50         MAKE_TUPLE(ct_eq<-1>{}, ct_eq<-2>{}, ct_eq<-3>{}, ct_eq<1>{})
51     ));
52 
53     BOOST_HANA_CONSTANT_CHECK(hana::equal(
54         hana::insert_range(
55             MAKE_TUPLE(ct_eq<1>{}, ct_eq<2>{}),
56             hana::size_c<0>,
57             foldable()),
58         MAKE_TUPLE(ct_eq<1>{}, ct_eq<2>{})
59     ));
60     BOOST_HANA_CONSTANT_CHECK(hana::equal(
61         hana::insert_range(
62             MAKE_TUPLE(ct_eq<1>{}, ct_eq<2>{}),
63             hana::size_c<0>,
64             foldable(ct_eq<-1>{})),
65         MAKE_TUPLE(ct_eq<-1>{}, ct_eq<1>{}, ct_eq<2>{})
66     ));
67     BOOST_HANA_CONSTANT_CHECK(hana::equal(
68         hana::insert_range(
69             MAKE_TUPLE(ct_eq<1>{}, ct_eq<2>{}),
70             hana::size_c<0>,
71             foldable(ct_eq<-1>{}, ct_eq<-2>{})),
72         MAKE_TUPLE(ct_eq<-1>{}, ct_eq<-2>{}, ct_eq<1>{}, ct_eq<2>{})
73     ));
74     BOOST_HANA_CONSTANT_CHECK(hana::equal(
75         hana::insert_range(
76             MAKE_TUPLE(ct_eq<1>{}, ct_eq<2>{}),
77             hana::size_c<1>,
78             foldable()),
79         MAKE_TUPLE(ct_eq<1>{}, ct_eq<2>{})
80     ));
81     BOOST_HANA_CONSTANT_CHECK(hana::equal(
82         hana::insert_range(
83             MAKE_TUPLE(ct_eq<1>{}, ct_eq<2>{}),
84             hana::size_c<1>,
85             foldable(ct_eq<-1>{})),
86         MAKE_TUPLE(ct_eq<1>{}, ct_eq<-1>{}, ct_eq<2>{})
87     ));
88     BOOST_HANA_CONSTANT_CHECK(hana::equal(
89         hana::insert_range(
90             MAKE_TUPLE(ct_eq<1>{}, ct_eq<2>{}),
91             hana::size_c<1>,
92             foldable(ct_eq<-1>{}, ct_eq<-2>{})),
93         MAKE_TUPLE(ct_eq<1>{}, ct_eq<-1>{}, ct_eq<-2>{}, ct_eq<2>{})
94     ));
95 
96     BOOST_HANA_CONSTANT_CHECK(hana::equal(
97         hana::insert_range(
98             MAKE_TUPLE(ct_eq<1>{}, ct_eq<2>{}, ct_eq<3>{}, ct_eq<4>{}),
99             hana::size_c<2>,
100             foldable(ct_eq<-1>{}, ct_eq<-2>{})),
101         MAKE_TUPLE(ct_eq<1>{}, ct_eq<2>{}, ct_eq<-1>{}, ct_eq<-2>{}, ct_eq<3>{}, ct_eq<4>{})
102     ));
103 }};
104 
105 #endif // !BOOST_HANA_TEST_AUTO_INSERT_RANGE_HPP
106