mirror of
https://github.com/boostorg/mp11.git
synced 2025-08-03 14:34:27 +02:00
Increase test/mp_fold.cpp coverage
This commit is contained in:
@@ -21,7 +21,32 @@ struct X4 {};
|
|||||||
|
|
||||||
template<class T1, class T2> struct F {};
|
template<class T1, class T2> struct F {};
|
||||||
|
|
||||||
using boost::mp11::mp_plus;
|
using boost::mp11::mp_size_t;
|
||||||
|
|
||||||
|
struct W
|
||||||
|
{
|
||||||
|
template<std::size_t N> void operator()( mp_size_t<N> ) const
|
||||||
|
{
|
||||||
|
using boost::mp11::mp_iota_c;
|
||||||
|
using boost::mp11::mp_fold;
|
||||||
|
using boost::mp11::mp_list;
|
||||||
|
using boost::mp11::mp_push_back;
|
||||||
|
using boost::mp11::mp_push_front;
|
||||||
|
using boost::mp11::mp_reverse;
|
||||||
|
using boost::mp11::mp_plus;
|
||||||
|
|
||||||
|
using L = mp_iota_c<N>;
|
||||||
|
|
||||||
|
using R1 = mp_fold<L, mp_list<>, mp_push_back>;
|
||||||
|
BOOST_TEST_TRAIT_TRUE((std::is_same<R1, L>));
|
||||||
|
|
||||||
|
using R2 = mp_fold<L, mp_list<>, mp_push_front>;
|
||||||
|
BOOST_TEST_TRAIT_TRUE((std::is_same<R2, mp_reverse<L>>));
|
||||||
|
|
||||||
|
using R3 = mp_fold<L, mp_size_t<0>, mp_plus>;
|
||||||
|
BOOST_TEST_TRAIT_TRUE((std::is_same<R3, mp_size_t<N*(N-1)/2>>));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
@@ -56,24 +81,18 @@ int main()
|
|||||||
BOOST_TEST_TRAIT_TRUE((std::is_same<mp_fold<std::tuple<X1, X2, X3, X4>, mp_list<>, mp_push_front>, mp_list<X4, X3, X2, X1>>));
|
BOOST_TEST_TRAIT_TRUE((std::is_same<mp_fold<std::tuple<X1, X2, X3, X4>, mp_list<>, mp_push_front>, mp_list<X4, X3, X2, X1>>));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
using boost::mp11::mp_for_each;
|
||||||
using boost::mp11::mp_iota_c;
|
using boost::mp11::mp_iota_c;
|
||||||
using boost::mp11::mp_reverse;
|
|
||||||
using boost::mp11::mp_size_t;
|
|
||||||
|
|
||||||
{
|
#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, <= 1800 )
|
||||||
int const N = 37;
|
|
||||||
|
|
||||||
using L = mp_iota_c<N>;
|
W()( mp_size_t<37>() );
|
||||||
|
|
||||||
using R1 = mp_fold<L, mp_list<>, mp_push_back>;
|
#else
|
||||||
BOOST_TEST_TRAIT_TRUE((std::is_same<R1, L>));
|
|
||||||
|
|
||||||
using R2 = mp_fold<L, mp_list<>, mp_push_front>;
|
mp_for_each< mp_iota_c<38> >( W{} );
|
||||||
BOOST_TEST_TRAIT_TRUE((std::is_same<R2, mp_reverse<L>>));
|
|
||||||
|
|
||||||
using R3 = mp_fold<L, mp_size_t<0>, mp_plus>;
|
#endif
|
||||||
BOOST_TEST_TRAIT_TRUE((std::is_same<R3, mp_size_t<N*(N-1)/2>>));
|
|
||||||
}
|
|
||||||
|
|
||||||
return boost::report_errors();
|
return boost::report_errors();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user