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