diff -r 000000000000 -r e4d67989cc36 genericopenlibs/cppstdlib/stl/test/eh/test_map.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/genericopenlibs/cppstdlib/stl/test/eh/test_map.cpp Tue Feb 02 02:01:42 2010 +0200 @@ -0,0 +1,127 @@ +/*********************************************************************************** + test_map.cpp + + * Copyright (c) 1997 + * Mark of the Unicorn, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Mark of the Unicorn makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + +***********************************************************************************/ +#include "Tests.h" +#include "TestClass.h" +#include "LeakCheck.h" +# if defined (EH_NEW_HEADERS) +#include +# else +#include +#include +# endif + +#include "test_construct.h" +#include "test_assign_op.h" +#include "test_push_back.h" +#include "test_insert.h" +#include "test_push_front.h" +#include "ThrowCompare.h" +#include "test_insert.h" + +template +inline multimap_tag +container_category(const EH_STD::__multimap__&) +{ + return multimap_tag(); +} + +template +inline map_tag +container_category(const EH_STD::__map__&) +{ + return map_tag(); +} + +typedef EH_STD::__multimap__ TestMultiMap; + +void test_multimap() +{ + TestMultiMap testMultiMap, testMultiMap2; + + const size_t mapSize = random_number(random_base); + + while ( testMultiMap.size() < mapSize ) + { + TestMultiMap::value_type x; + testMultiMap.insert( x ); + testMultiMap2.insert( TestMultiMap::value_type() ); + } + + StrongCheck( testMultiMap, test_insert_value(testMultiMap) ); + + size_t insCnt = 1 + random_number(random_base); + TestMultiMap::value_type *insFirst = new TestMultiMap::value_type[insCnt]; + + WeakCheck( testMultiMap, insert_range_tester(testMultiMap, insFirst, insFirst+insCnt) ); + + ConstCheck( 0, test_construct_pointer_range(insFirst, insFirst+insCnt) ); + delete[] insFirst; + + + WeakCheck( testMultiMap, insert_range_tester(testMultiMap, testMultiMap2.begin(), testMultiMap2.end() ) ); + + + ConstCheck( 0, test_default_construct() ); + + ConstCheck( 0, test_construct_iter_range( testMultiMap2 ) ); + + ConstCheck( testMultiMap, test_copy_construct() ); + + WeakCheck( testMultiMap, test_assign_op( testMultiMap2 ) ); +} + +typedef EH_STD::__map__ TestMap; + +void CheckInvariant( const TestMap& m ); + +void CheckInvariant( const TestMap& m ) +{ +// assert( map.__rb_verify() ); + size_t total = 0; + EH_DISTANCE( m.begin(), m.end(), total ); + assert( m.size() == total ); +} + +void test_map() +{ + TestMap testMap, testMap2; + + const size_t mapSize = random_number(random_base); + + while ( testMap.size() < mapSize ) + { + TestMap::value_type x; + testMap.insert( x ); + testMap2.insert( TestMap::value_type() ); + } + + StrongCheck( testMap, test_insert_value(testMap) ); + + size_t insCnt = random_number(random_base); + TestMap::value_type *insFirst = new TestMap::value_type[1+insCnt]; + + WeakCheck( testMap, insert_range_tester(testMap, insFirst, insFirst+insCnt) ); + + ConstCheck( 0, test_construct_pointer_range(insFirst, insFirst+insCnt) ); + delete[] insFirst; + + WeakCheck( testMap, insert_range_tester(testMap, testMap2.begin(), testMap2.end() ) ); + ConstCheck( 0, test_default_construct() ); + ConstCheck( 0, test_construct_iter_range( testMap2 ) ); + ConstCheck( testMap, test_copy_construct() ); + WeakCheck( testMap, test_assign_op( testMap2 ) ); +} +