9 #include <boost/test/unit_test.hpp>
22 #include <boost/hana/equal.hpp>
23 #include <boost/hana/integral_constant.hpp>
24 #include <boost/hana/tuple.hpp>
25 #include <boost/hana/type.hpp>
27 namespace hana = boost::hana;
28 using namespace hana::literals;
30 #define _T(...) hana::tuple_c<size_t, __VA_ARGS__>
37 constexpr
auto result = detail::unique_ordered_sublists<1>();
38 constexpr
auto expected = hana::make_tuple(
_T(0));
39 static_assert(result == expected,
"At size 1 is not equal");
42 constexpr
auto result = detail::unique_ordered_sublists<2>();
43 constexpr
auto expected = hana::make_tuple(
_T(0),
_T(1),
_T(0, 1));
44 static_assert(result == expected,
"At size 2 is not equal");
47 constexpr
auto result = detail::unique_ordered_sublists<3>();
48 constexpr
auto expected = hana::make_tuple(
_T(0),
_T(1),
_T(0, 1),
_T(2),
49 _T(0, 2),
_T(1, 2),
_T(0, 1, 2));
50 static_assert(result == expected,
"At size 3 is not equal");
53 constexpr
auto result = detail::unique_ordered_sublists<4>();
54 constexpr
auto expected =
55 hana::make_tuple(
_T(0),
_T(1),
_T(0, 1),
_T(2),
_T(0, 2),
_T(1, 2),
56 _T(0, 1, 2),
_T(3),
_T(0, 3),
_T(1, 3),
_T(0, 1, 3),
57 _T(2, 3),
_T(0, 2, 3),
_T(1, 2, 3),
_T(0, 1, 2, 3));
58 static_assert(result == expected,
"At size 4 is not equal");
61 constexpr
auto result = detail::unique_ordered_sublists<5>();
62 constexpr
auto expected = hana::make_tuple(
63 _T(0),
_T(1),
_T(0, 1),
_T(2),
_T(0, 2),
_T(1, 2),
_T(0, 1, 2),
_T(3),
64 _T(0, 3),
_T(1, 3),
_T(0, 1, 3),
_T(2, 3),
_T(0, 2, 3),
_T(1, 2, 3),
65 _T(0, 1, 2, 3),
_T(4),
_T(0, 4),
_T(1, 4),
_T(0, 1, 4),
_T(2, 4),
66 _T(0, 2, 4),
_T(1, 2, 4),
_T(0, 1, 2, 4),
_T(3, 4),
_T(0, 3, 4),
67 _T(1, 3, 4),
_T(0, 1, 3, 4),
_T(2, 3, 4),
_T(0, 2, 3, 4),
68 _T(1, 2, 3, 4),
_T(0, 1, 2, 3, 4));
69 static_assert(result == expected,
"At size 5 is not equal");
76 template <
par_t... pars>
81 constexpr
par_t operator"" _p(
unsigned long long i) {
87 using actual = detail::type_generator_t<par_t, meas_factory>;
88 using expected = std::variant<
148 "Variant is not identical");
159 constexpr
freePar_t operator"" _fp(
unsigned long long i) {
165 using actual = detail::type_generator_t<freePar_t, meas_factory2>;
166 using expected = std::variant<
432 "Variant is not identical");