From d16fb0201cac235821972cd16639aeade5487b3f Mon Sep 17 00:00:00 2001 From: Braden Ganetsky Date: Sun, 30 Jul 2023 22:42:05 -0500 Subject: [PATCH] Add mp_sliding_fold tests --- test/Jamfile | 2 + test/mp_sliding_fold.cpp | 100 +++++++++++++++++++++++++++++++++++ test/mp_sliding_fold_q.cpp | 104 +++++++++++++++++++++++++++++++++++++ 3 files changed, 206 insertions(+) create mode 100644 test/mp_sliding_fold.cpp create mode 100644 test/mp_sliding_fold_q.cpp diff --git a/test/Jamfile b/test/Jamfile index 335c812..510da30 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -158,6 +158,8 @@ run mp_partial_sum.cpp ; run mp_iterate.cpp ; run mp_pairwise_fold.cpp ; run mp_pairwise_fold_q.cpp ; +run mp_sliding_fold.cpp ; +run mp_sliding_fold_q.cpp ; run mp_intersperse.cpp ; run mp_split.cpp ; run mp_join.cpp ; diff --git a/test/mp_sliding_fold.cpp b/test/mp_sliding_fold.cpp new file mode 100644 index 0000000..5eacc35 --- /dev/null +++ b/test/mp_sliding_fold.cpp @@ -0,0 +1,100 @@ +// Copyright 2023 Braden Ganetsky (braden.ganetsky@gmail.com) +// +// Distributed under the Boost Software License, Version 1.0. +// +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt + +#include +#include +#include +#include + +struct X1 {}; +struct X2 {}; +struct X3 {}; +struct X4 {}; +struct X5 {}; + +template using average = boost::mp11::mp_int::value / sizeof...(C)>; + +int main() +{ + using boost::mp11::mp_list; + using boost::mp11::mp_list_c; + using boost::mp11::mp_plus; + using boost::mp11::mp_size_t; + using boost::mp11::mp_sliding_fold; + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<1>, mp_list>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<1>, mp_list>, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<1>, mp_list>, mp_list, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<1>, mp_list>, mp_list, mp_list, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<1>, mp_list>, mp_list, mp_list, mp_list, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<1>, mp_list>, mp_list, mp_list, mp_list, mp_list, mp_list>>)); + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_list>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_list>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_list>, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_list>, mp_list, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_list>, mp_list, mp_list, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_list>, mp_list, mp_list, mp_list, mp_list>>)); + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<3>, mp_list>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<3>, mp_list>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<3>, mp_list>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<3>, mp_list>, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<3>, mp_list>, mp_list, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<3>, mp_list>, mp_list, mp_list, mp_list>>)); + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>, mp_list>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>, mp_list>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>, mp_list>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>, mp_list>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>, mp_list>, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>, mp_list>, mp_list, mp_list>>)); + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>, mp_list>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>, mp_list>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>, mp_list>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>, mp_list>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>, mp_list>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>, mp_list>, mp_list>>)); + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<6>, mp_list>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<6>, mp_list>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<6>, mp_list>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<6>, mp_list>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<6>, mp_list>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<6>, mp_list>, mp_list<>>)); + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, std::pair>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, std::pair>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, std::pair>, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, std::pair>, mp_list, std::pair>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, std::pair>, mp_list, std::pair, std::pair>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, std::pair>, mp_list, std::pair, std::pair, std::pair>>)); + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, std::pair>, std::tuple<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, std::pair>, std::tuple<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, std::pair>, std::tuple>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, std::pair>, std::tuple, std::pair>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, std::pair>, std::tuple, std::pair, std::pair>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, std::pair>, std::tuple, std::pair, std::pair, std::pair>>)); + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<1>, mp_plus>, mp_list_c>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_plus>, mp_list_c>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<3>, mp_plus>, mp_list_c>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>, mp_plus>, mp_list_c>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>, mp_plus>, mp_list_c>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<6>, mp_plus>, mp_list_c>)); + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<1>, average>, mp_list_c>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, average>, mp_list_c>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<3>, average>, mp_list_c>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>, average>, mp_list_c>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>, average>, mp_list_c>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<6>, average>, mp_list_c>)); + + return boost::report_errors(); +} diff --git a/test/mp_sliding_fold_q.cpp b/test/mp_sliding_fold_q.cpp new file mode 100644 index 0000000..ac68f09 --- /dev/null +++ b/test/mp_sliding_fold_q.cpp @@ -0,0 +1,104 @@ +// Copyright 2023 Braden Ganetsky (braden.ganetsky@gmail.com) +// +// Distributed under the Boost Software License, Version 1.0. +// +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt + +#include +#include +#include +#include + +struct X1 {}; +struct X2 {}; +struct X3 {}; +struct X4 {}; +struct X5 {}; + +struct average +{ + template using fn = boost::mp11::mp_int::value / sizeof...(C)>; +}; + +int main() +{ + using boost::mp11::mp_list; + using boost::mp11::mp_list_c; + using boost::mp11::mp_plus; + using boost::mp11::mp_quote; + using boost::mp11::mp_size_t; + using boost::mp11::mp_sliding_fold_q; + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<1>, mp_quote>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<1>, mp_quote>, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<1>, mp_quote>, mp_list, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<1>, mp_quote>, mp_list, mp_list, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<1>, mp_quote>, mp_list, mp_list, mp_list, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<1>, mp_quote>, mp_list, mp_list, mp_list, mp_list, mp_list>>)); + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_quote>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_quote>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_quote>, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_quote>, mp_list, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_quote>, mp_list, mp_list, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_quote>, mp_list, mp_list, mp_list, mp_list>>)); + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<3>, mp_quote>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<3>, mp_quote>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<3>, mp_quote>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<3>, mp_quote>, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<3>, mp_quote>, mp_list, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<3>, mp_quote>, mp_list, mp_list, mp_list>>)); + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>, mp_quote>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>, mp_quote>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>, mp_quote>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>, mp_quote>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>, mp_quote>, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>, mp_quote>, mp_list, mp_list>>)); + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>, mp_quote>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>, mp_quote>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>, mp_quote>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>, mp_quote>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>, mp_quote>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>, mp_quote>, mp_list>>)); + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<6>, mp_quote>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<6>, mp_quote>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<6>, mp_quote>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<6>, mp_quote>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<6>, mp_quote>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<6>, mp_quote>, mp_list<>>)); + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_quote>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_quote>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_quote>, mp_list>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_quote>, mp_list, std::pair>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_quote>, mp_list, std::pair, std::pair>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_quote>, mp_list, std::pair, std::pair, std::pair>>)); + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_quote>, std::tuple<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_quote>, std::tuple<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_quote>, std::tuple>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_quote>, std::tuple, std::pair>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_quote>, std::tuple, std::pair, std::pair>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_quote>, std::tuple, std::pair, std::pair, std::pair>>)); + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<1>, mp_quote>, mp_list_c>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, mp_quote>, mp_list_c>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<3>, mp_quote>, mp_list_c>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>, mp_quote>, mp_list_c>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>, mp_quote>, mp_list_c>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<6>, mp_quote>, mp_list_c>)); + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<1>, average>, mp_list_c>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>, average>, mp_list_c>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<3>, average>, mp_list_c>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>, average>, mp_list_c>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>, average>, mp_list_c>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<6>, average>, mp_list_c>)); + + return boost::report_errors(); +}