mirror of
https://github.com/boostorg/mp11.git
synced 2025-08-02 22:14:26 +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 {};
|
||||
|
||||
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()
|
||||
{
|
||||
@@ -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>>));
|
||||
}
|
||||
|
||||
using boost::mp11::mp_for_each;
|
||||
using boost::mp11::mp_iota_c;
|
||||
using boost::mp11::mp_reverse;
|
||||
using boost::mp11::mp_size_t;
|
||||
|
||||
{
|
||||
int const N = 37;
|
||||
#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, <= 1800 )
|
||||
|
||||
using L = mp_iota_c<N>;
|
||||
W()( mp_size_t<37>() );
|
||||
|
||||
using R1 = mp_fold<L, mp_list<>, mp_push_back>;
|
||||
BOOST_TEST_TRAIT_TRUE((std::is_same<R1, L>));
|
||||
#else
|
||||
|
||||
using R2 = mp_fold<L, mp_list<>, mp_push_front>;
|
||||
BOOST_TEST_TRAIT_TRUE((std::is_same<R2, mp_reverse<L>>));
|
||||
mp_for_each< mp_iota_c<38> >( W{} );
|
||||
|
||||
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>>));
|
||||
}
|
||||
#endif
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
Reference in New Issue
Block a user