diff --git a/test/Jamfile b/test/Jamfile index 510da30..445f10c 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -99,6 +99,7 @@ run mp_at_2.cpp ; run mp_at_sf.cpp : : : gcc-4.7:all ; run mp_take.cpp ; run mp_take_2.cpp ; +run mp_slice.cpp ; run mp_replace.cpp ; run mp_replace_if.cpp ; run mp_replace_if_q.cpp ; diff --git a/test/mp_slice.cpp b/test/mp_slice.cpp new file mode 100644 index 0000000..867eb55 --- /dev/null +++ b/test/mp_slice.cpp @@ -0,0 +1,118 @@ +// 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 +#include + +int main() +{ + using boost::mp11::mp_list; + using boost::mp11::mp_size_t; + using boost::mp11::mp_slice_c; + using boost::mp11::mp_slice; + + { + using L1 = mp_list; + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list<>>)); + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<0>>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<1>>, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>>, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<3>>, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>>, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>>, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<1>>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>>, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<3>>, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>>, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>>, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<3>>, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>>, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>>, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<3>>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>>, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>>, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>>, mp_list<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>>, mp_list>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>>, mp_list<>>)); + } + + { + using L2 = std::tuple; + + BOOST_TEST_TRAIT_TRUE((std::is_same, std::tuple<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, std::tuple<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, std::tuple<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, std::tuple<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, std::tuple<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, std::tuple<>>)); + + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<0>>, std::tuple<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<1>>, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>>, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<3>>, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>>, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>>, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<1>>, std::tuple<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>>, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<3>>, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>>, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>>, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<2>>, std::tuple<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<3>>, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>>, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>>, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<3>>, std::tuple<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>>, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>>, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<4>>, std::tuple<>>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>>, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_size_t<5>>, std::tuple<>>)); + } + + return boost::report_errors(); +}