• 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_TAKE_BACK_HPP
6 #define BOOST_HANA_TEST_AUTO_TAKE_BACK_HPP
7 
8 #include <boost/hana/assert.hpp>
9 #include <boost/hana/equal.hpp>
10 #include <boost/hana/integral_constant.hpp>
11 #include <boost/hana/take_back.hpp>
12 
13 #include "test_case.hpp"
14 #include <laws/base.hpp>
15 
16 
__anon255bec110102null17 TestCase test_take_back{[]{
18     namespace hana = boost::hana;
19     using hana::test::ct_eq;
20 
21     BOOST_HANA_CONSTANT_CHECK(hana::equal(
22         hana::take_back(MAKE_TUPLE(), hana::size_c<0>),
23         MAKE_TUPLE()
24     ));
25     BOOST_HANA_CONSTANT_CHECK(hana::equal(
26         hana::take_back(MAKE_TUPLE(), hana::size_c<1>),
27         MAKE_TUPLE()
28     ));
29     BOOST_HANA_CONSTANT_CHECK(hana::equal(
30         hana::take_back(MAKE_TUPLE(), hana::size_c<2>),
31         MAKE_TUPLE()
32     ));
33 
34     BOOST_HANA_CONSTANT_CHECK(hana::equal(
35         hana::take_back(MAKE_TUPLE(ct_eq<0>{}), hana::size_c<0>),
36         MAKE_TUPLE()
37     ));
38     BOOST_HANA_CONSTANT_CHECK(hana::equal(
39         hana::take_back(MAKE_TUPLE(ct_eq<0>{}), hana::size_c<1>),
40         MAKE_TUPLE(ct_eq<0>{})
41     ));
42     BOOST_HANA_CONSTANT_CHECK(hana::equal(
43         hana::take_back(MAKE_TUPLE(ct_eq<0>{}), hana::size_c<2>),
44         MAKE_TUPLE(ct_eq<0>{})
45     ));
46     BOOST_HANA_CONSTANT_CHECK(hana::equal(
47         hana::take_back(MAKE_TUPLE(ct_eq<0>{}), hana::size_c<3>),
48         MAKE_TUPLE(ct_eq<0>{})
49     ));
50 
51     BOOST_HANA_CONSTANT_CHECK(hana::equal(
52         hana::take_back(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}), hana::size_c<0>),
53         MAKE_TUPLE()
54     ));
55     BOOST_HANA_CONSTANT_CHECK(hana::equal(
56         hana::take_back(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}), hana::size_c<1>),
57         MAKE_TUPLE(ct_eq<1>{})
58     ));
59     BOOST_HANA_CONSTANT_CHECK(hana::equal(
60         hana::take_back(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}), hana::size_c<2>),
61         MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{})
62     ));
63     BOOST_HANA_CONSTANT_CHECK(hana::equal(
64         hana::take_back(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}), hana::size_c<3>),
65         MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{})
66     ));
67 
68     BOOST_HANA_CONSTANT_CHECK(hana::equal(
69         hana::take_back(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}, ct_eq<3>{}), hana::size_c<3>),
70         MAKE_TUPLE(ct_eq<1>{}, ct_eq<2>{}, ct_eq<3>{})
71     ));
72 
73     BOOST_HANA_CONSTANT_CHECK(hana::equal(
74         hana::take_back(MAKE_TUPLE(
75             ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}, ct_eq<3>{}, ct_eq<4>{},
76             ct_eq<5>{}, ct_eq<6>{}, ct_eq<7>{}, ct_eq<8>{}, ct_eq<9>{}),
77             hana::size_c<5>),
78         MAKE_TUPLE(ct_eq<5>{}, ct_eq<6>{}, ct_eq<7>{}, ct_eq<8>{}, ct_eq<9>{})
79     ));
80 }};
81 
82 #endif // !BOOST_HANA_TEST_AUTO_TAKE_BACK_HPP
83