• 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_FRONT_HPP
6 #define BOOST_HANA_TEST_AUTO_TAKE_FRONT_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_front.hpp>
12 
13 #include "test_case.hpp"
14 #include <laws/base.hpp>
15 
16 
__anona4bcc8440102null17 TestCase test_take{[]{
18     namespace hana = boost::hana;
19     using hana::test::ct_eq;
20 
21     BOOST_HANA_CONSTANT_CHECK(hana::equal(
22         hana::take_front(MAKE_TUPLE(), hana::size_c<0>),
23         MAKE_TUPLE()
24     ));
25     BOOST_HANA_CONSTANT_CHECK(hana::equal(
26         hana::take_front(MAKE_TUPLE(), hana::size_c<1>),
27         MAKE_TUPLE()
28     ));
29     BOOST_HANA_CONSTANT_CHECK(hana::equal(
30         hana::take_front(MAKE_TUPLE(), hana::size_c<2>),
31         MAKE_TUPLE()
32     ));
33 
34     BOOST_HANA_CONSTANT_CHECK(hana::equal(
35         hana::take_front(MAKE_TUPLE(ct_eq<0>{}), hana::size_c<0>),
36         MAKE_TUPLE()
37     ));
38     BOOST_HANA_CONSTANT_CHECK(hana::equal(
39         hana::take_front(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_front(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_front(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_front(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_front(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}), hana::size_c<1>),
57         MAKE_TUPLE(ct_eq<0>{})
58     ));
59     BOOST_HANA_CONSTANT_CHECK(hana::equal(
60         hana::take_front(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_front(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}), hana::size_c<3>),
65         MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{})
66     ));
67     BOOST_HANA_CONSTANT_CHECK(hana::equal(
68         hana::take_front(MAKE_TUPLE(
69             ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}, ct_eq<3>{},  ct_eq<4>{},  ct_eq<5>{},  ct_eq<6>{},
70             ct_eq<7>{}, ct_eq<8>{}, ct_eq<9>{}, ct_eq<10>{}, ct_eq<11>{}, ct_eq<12>{}, ct_eq<13>{}),
71             hana::size_c<10>),
72         MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}, ct_eq<3>{}, ct_eq<4>{},
73                    ct_eq<5>{}, ct_eq<6>{}, ct_eq<7>{}, ct_eq<8>{}, ct_eq<9>{})
74     ));
75 }};
76 
77 #endif // !BOOST_HANA_TEST_AUTO_TAKE_FRONT_HPP
78