// Copyright Aleksey Gurtovoy 2003-2004 // Copyright David Abrahams 2003-2004 // // 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) // // See http://www.boost.org/libs/mpl for documentation. // $Source$ // $Date$ // $Revision$ #include #include #include #include #include #include #include #include #include #include #include #include #include MPL_TEST_CASE() { #if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) typedef m_mask > > > m; #else typedef m_mask > > > m; #endif MPL_ASSERT_RELATION( size::type::value, ==, 1 ); MPL_ASSERT_NOT(( empty )); MPL_ASSERT(( is_same< clear::type,map0<> > )); MPL_ASSERT(( is_same< at::type,unsigned> )); MPL_ASSERT(( is_same< at::type,void_ > )); MPL_ASSERT(( contains< m,pair > )); MPL_ASSERT_NOT(( contains< m,pair > )); MPL_ASSERT_NOT(( contains< m,pair > )); MPL_ASSERT_NOT(( has_key::type )); MPL_ASSERT(( has_key::type )); MPL_ASSERT_RELATION( (order::type::value), ==, 3 ); MPL_ASSERT(( is_same< item_by_order::type,pair > )); MPL_ASSERT(( is_same< order::type,void_ > )); typedef begin::type first; typedef end::type last; MPL_ASSERT(( is_same< first::type,pair > )); MPL_ASSERT(( is_same< next::type,last > )); #if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) typedef m_item m2; #else typedef m_item3 m2; #endif MPL_ASSERT_RELATION( size::type::value, ==, 2 ); MPL_ASSERT_NOT(( empty::type )); MPL_ASSERT(( is_same< clear::type,map0<> > )); MPL_ASSERT(( is_same< at::type,unsigned > )); MPL_ASSERT(( is_same< at::type,long > )); MPL_ASSERT(( contains< m2,pair > )); MPL_ASSERT_NOT(( contains< m2,pair > )); MPL_ASSERT_NOT(( contains< m2,pair > )); MPL_ASSERT(( contains< m2,pair > )); MPL_ASSERT(( has_key::type )); MPL_ASSERT_NOT(( has_key::type )); MPL_ASSERT_RELATION( (order::type::value), ==, 3 ); MPL_ASSERT_RELATION( (order::type::value), ==, 4 ); typedef begin::type first2; typedef end::type last2; MPL_ASSERT(( is_same > )); typedef next::type iter; MPL_ASSERT(( is_same > )); MPL_ASSERT(( is_same< next::type,last2 > )); #if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) typedef insert >::type s2_1; MPL_ASSERT(( is_same )); typedef insert >::type m3; MPL_ASSERT_RELATION( size::type::value, ==, 3 ); MPL_ASSERT(( has_key::type )); MPL_ASSERT(( has_key::type )); MPL_ASSERT(( has_key::type )); MPL_ASSERT(( contains< m3,pair > )); MPL_ASSERT(( contains< m3,pair > )); typedef insert >::type m1; MPL_ASSERT_RELATION( size::type::value, ==, 2 ); MPL_ASSERT(( is_same< at::type,unsigned > )); MPL_ASSERT(( is_same< at::type,long > )); MPL_ASSERT(( contains< m1,pair > )); MPL_ASSERT_NOT(( contains< m1,pair > )); MPL_ASSERT_NOT(( contains< m1,pair > )); MPL_ASSERT(( contains< m1,pair > )); MPL_ASSERT(( is_same< m1,m2 > )); typedef erase_key::type m_1; MPL_ASSERT(( is_same )); MPL_ASSERT_RELATION( size::type::value, ==, 1 ); MPL_ASSERT(( is_same< at::type,void_ > )); MPL_ASSERT(( is_same< at::type,unsigned > )); typedef erase_key::type m2_1; MPL_ASSERT_RELATION( size::type::value, ==, 2 ); MPL_ASSERT(( is_same< at::type,void_ > )); MPL_ASSERT(( is_same< at::type,unsigned > )); MPL_ASSERT(( is_same< at::type,unsigned > )); #endif } MPL_TEST_CASE() { typedef map0<> m; MPL_ASSERT_RELATION( size::type::value, ==, 0 ); MPL_ASSERT(( empty::type )); MPL_ASSERT(( is_same< clear::type,map0<> > )); MPL_ASSERT(( is_same< at::type,void_ > )); MPL_ASSERT_NOT(( has_key::type )); MPL_ASSERT_NOT(( has_key::type )); MPL_ASSERT_NOT(( has_key::type )); MPL_ASSERT_NOT(( has_key::type )); MPL_ASSERT_NOT(( has_key::type )); MPL_ASSERT_NOT(( has_key::type )); MPL_ASSERT_NOT(( has_key::type )); MPL_ASSERT_NOT(( has_key::type )); MPL_ASSERT_NOT(( has_key::type )); MPL_ASSERT_NOT(( has_key::type )); MPL_ASSERT_NOT(( has_key::type )); MPL_ASSERT_NOT(( has_key::type )); MPL_ASSERT_NOT(( has_key::type )); MPL_ASSERT_NOT(( has_key::type )); #if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) typedef insert >::type m1; MPL_ASSERT_RELATION( size::type::value, ==, 1 ); MPL_ASSERT(( is_same< at::type,int > )); typedef erase_key::type m0_1; MPL_ASSERT_RELATION( size::type::value, ==, 0 ); MPL_ASSERT(( is_same< at::type,void_ > )); #endif }