• 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/functional/partial.hpp>
8 
9 #include <laws/base.hpp>
10 namespace hana = boost::hana;
11 using hana::test::ct_eq;
12 
13 
main()14 int main() {
15     hana::test::_injection<0> f{};
16 
17     BOOST_HANA_CONSTANT_CHECK(hana::equal(
18         hana::partial(f)(),
19         f()
20     ));
21     BOOST_HANA_CONSTANT_CHECK(hana::equal(
22         hana::partial(f)(ct_eq<1>{}),
23         f(ct_eq<1>{})
24     ));
25     BOOST_HANA_CONSTANT_CHECK(hana::equal(
26         hana::partial(f)(ct_eq<1>{}, ct_eq<2>{}),
27         f(ct_eq<1>{}, ct_eq<2>{})
28     ));
29     BOOST_HANA_CONSTANT_CHECK(hana::equal(
30         hana::partial(f)(ct_eq<1>{}, ct_eq<2>{}, ct_eq<3>{}),
31         f(ct_eq<1>{}, ct_eq<2>{}, ct_eq<3>{})
32     ));
33 
34     BOOST_HANA_CONSTANT_CHECK(hana::equal(
35         hana::partial(f, ct_eq<1>{})(),
36         f(ct_eq<1>{})
37     ));
38     BOOST_HANA_CONSTANT_CHECK(hana::equal(
39         hana::partial(f, ct_eq<1>{})(ct_eq<2>{}),
40         f(ct_eq<1>{}, ct_eq<2>{})
41     ));
42     BOOST_HANA_CONSTANT_CHECK(hana::equal(
43         hana::partial(f, ct_eq<1>{})(ct_eq<2>{}, ct_eq<3>{}),
44         f(ct_eq<1>{}, ct_eq<2>{}, ct_eq<3>{})
45     ));
46 
47     BOOST_HANA_CONSTANT_CHECK(hana::equal(
48         hana::partial(f, ct_eq<1>{}, ct_eq<2>{})(),
49         f(ct_eq<1>{}, ct_eq<2>{})
50     ));
51     BOOST_HANA_CONSTANT_CHECK(hana::equal(
52         hana::partial(f, ct_eq<1>{}, ct_eq<2>{})(ct_eq<3>{}),
53         f(ct_eq<1>{}, ct_eq<2>{}, ct_eq<3>{})
54     ));
55     BOOST_HANA_CONSTANT_CHECK(hana::equal(
56         hana::partial(f, ct_eq<1>{}, ct_eq<2>{})(ct_eq<3>{}, ct_eq<4>{}),
57         f(ct_eq<1>{}, ct_eq<2>{}, ct_eq<3>{}, ct_eq<4>{})
58     ));
59 
60     BOOST_HANA_CONSTANT_CHECK(hana::equal(
61         hana::partial(f, ct_eq<1>{}, ct_eq<2>{}, ct_eq<3>{})(),
62         f(ct_eq<1>{}, ct_eq<2>{}, ct_eq<3>{})
63     ));
64 }
65