// // Boost.Pointer Container // // Copyright Thorsten Ottosen 2003-2005. Use, modification and // distribution is subject to 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) // // For more information, see http://www.boost.org/libs/ptr_container/ // #include #include "associative_test_data.hpp" #include template< class SetDerived, class SetBase, class T > void test_transfer() { SetBase to; SetDerived from; from.insert( new T ); from.insert( new T ); transfer_test( from, to ); } template< class BaseContainer, class DerivedContainer, class Derived > void test_copy() { DerivedContainer derived; derived.insert( new Derived ); derived.insert( new Derived ); BaseContainer base( derived ); BOOST_CHECK_EQUAL( derived.size(), base.size() ); base.clear(); base = derived; BOOST_CHECK_EQUAL( derived.size(), base.size() ); base = base; } void test_set() { srand( 0 ); ptr_set_test< ptr_set, Base, Derived_class >(); ptr_set_test< ptr_set, Value, Value >(); ptr_set_test< ptr_multiset, Base, Derived_class >(); ptr_set_test< ptr_multiset, Value, Value >(); test_copy< ptr_set, ptr_set, Derived_class>(); test_copy< ptr_multiset, ptr_multiset, Derived_class>(); test_transfer< ptr_set, ptr_set, Derived_class>(); test_transfer< ptr_multiset, ptr_multiset, Derived_class>(); ptr_set set; BOOST_CHECK_THROW( set.insert( 0 ), bad_ptr_container_operation ); set.insert( new int(0) ); set.insert( std::auto_ptr( new int(1) ) ); BOOST_CHECK_THROW( (set.replace(set.begin(), 0 )), bad_ptr_container_operation ); BOOST_CHECK_THROW( (set.replace(set.begin(), std::auto_ptr(0) )), bad_ptr_container_operation ); } using boost::unit_test::test_suite; test_suite* init_unit_test_suite( int argc, char* argv[] ) { test_suite* test = BOOST_TEST_SUITE( "Pointer Container Test Suite" ); test->add( BOOST_TEST_CASE( &test_set ) ); return test; }