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)
5 #ifndef BOOST_HANA_TEST_AUTO_LEXICOGRAPHICAL_COMPARE_HPP
6 #define BOOST_HANA_TEST_AUTO_LEXICOGRAPHICAL_COMPARE_HPP
8 #include <boost/hana/assert.hpp>
9 #include <boost/hana/equal.hpp>
10 #include <boost/hana/lexicographical_compare.hpp>
11 #include <boost/hana/not.hpp>
13 #include <laws/base.hpp>
14 #include "test_case.hpp"
17 TestCase test_lexicographical_compare{[]{
18 namespace hana = boost::hana;
19 using hana::test::ct_ord;
23 BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::lexicographical_compare(
28 BOOST_HANA_CONSTANT_CHECK(hana::lexicographical_compare(
30 MAKE_TUPLE(undefined{})
33 BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::lexicographical_compare(
34 MAKE_TUPLE(undefined{}),
38 BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::lexicographical_compare(
39 MAKE_TUPLE(ct_ord<0>{}),
40 MAKE_TUPLE(ct_ord<0>{})
43 BOOST_HANA_CONSTANT_CHECK(hana::lexicographical_compare(
44 MAKE_TUPLE(ct_ord<0>{}),
45 MAKE_TUPLE(ct_ord<1>{})
48 BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::lexicographical_compare(
49 MAKE_TUPLE(ct_ord<1>{}),
50 MAKE_TUPLE(ct_ord<0>{})
53 BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::lexicographical_compare(
54 MAKE_TUPLE(ct_ord<0>{}, undefined{}),
55 MAKE_TUPLE(ct_ord<0>{})
58 BOOST_HANA_CONSTANT_CHECK(hana::lexicographical_compare(
59 MAKE_TUPLE(ct_ord<0>{}),
60 MAKE_TUPLE(ct_ord<0>{}, undefined{})
63 BOOST_HANA_CONSTANT_CHECK(hana::lexicographical_compare(
64 MAKE_TUPLE(ct_ord<0>{}, ct_ord<0>{}),
65 MAKE_TUPLE(ct_ord<0>{}, ct_ord<1>{})
68 BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::lexicographical_compare(
69 MAKE_TUPLE(ct_ord<0>{}, ct_ord<1>{}),
70 MAKE_TUPLE(ct_ord<0>{}, ct_ord<0>{})
73 BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::lexicographical_compare(
74 MAKE_TUPLE(ct_ord<0>{}, ct_ord<1>{}, ct_ord<2>{}),
75 MAKE_TUPLE(ct_ord<0>{}, ct_ord<1>{}, ct_ord<2>{})
78 BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::lexicographical_compare(
79 MAKE_TUPLE(ct_ord<0>{}, ct_ord<1>{}, ct_ord<2>{}, undefined{}),
80 MAKE_TUPLE(ct_ord<0>{}, ct_ord<1>{}, ct_ord<2>{})
83 BOOST_HANA_CONSTANT_CHECK(hana::lexicographical_compare(
84 MAKE_TUPLE(ct_ord<0>{}, ct_ord<1>{}, ct_ord<2>{}),
85 MAKE_TUPLE(ct_ord<0>{}, ct_ord<1>{}, ct_ord<2>{}, undefined{})
88 BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::lexicographical_compare(
89 MAKE_TUPLE(ct_ord<0>{}, ct_ord<1>{}, ct_ord<3>{}, undefined{}),
90 MAKE_TUPLE(ct_ord<0>{}, ct_ord<1>{}, ct_ord<2>{}, undefined{})
93 BOOST_HANA_CONSTANT_CHECK(hana::lexicographical_compare(
94 MAKE_TUPLE(ct_ord<0>{}, ct_ord<1>{}, ct_ord<2>{}, undefined{}),
95 MAKE_TUPLE(ct_ord<0>{}, ct_ord<1>{}, ct_ord<3>{}, undefined{})
98 BOOST_HANA_CONSTANT_CHECK(hana::lexicographical_compare(
99 MAKE_TUPLE(ct_ord<0>{}, ct_ord<1>{}, ct_ord<2>{}, undefined{}),
100 MAKE_TUPLE(ct_ord<0>{}, ct_ord<1>{}, ct_ord<3>{})
103 BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::lexicographical_compare(
104 MAKE_TUPLE(ct_ord<0>{}, ct_ord<1>{}, ct_ord<3>{}),
105 MAKE_TUPLE(ct_ord<0>{}, ct_ord<1>{}, ct_ord<2>{}, undefined{})
109 #endif // !BOOST_HANA_TEST_AUTO_LEXICOGRAPHICAL_COMPARE_HPP