diff -r e20de85af2ee -r ce057bb09d0b genericopenlibs/cppstdlib/stl/test/eh/test_deque.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/genericopenlibs/cppstdlib/stl/test/eh/test_deque.cpp Fri Jun 04 16:20:51 2010 +0100 @@ -0,0 +1,99 @@ +/*********************************************************************************** + test_deque.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" +# if defined (EH_NEW_HEADERS) +# ifdef __SUNPRO_CC +# include +# else +# include +# endif +# include +# else +# include +# include +# endif +#include "TestClass.h" +#include "LeakCheck.h" +#include "test_construct.h" +#include "test_assign_op.h" +#include "test_push_back.h" +#include "test_insert.h" +#include "test_push_front.h" + +typedef TestClass DQTestClass; + +typedef EH_STD::deque TestDeque; + +inline sequence_container_tag +container_category(const TestDeque&) +{ + return sequence_container_tag(); +} + +void test_deque() +{ + size_t dequeSize = random_number(random_base); + TestDeque emptyDeque; + TestDeque testDeque, testDeque2; + while ( testDeque.size() < dequeSize ) + { + DQTestClass x; + testDeque.push_back( x ); + testDeque2.push_back( DQTestClass() ); + } + + ConstCheck( testDeque, test_copy_construct() ); + WeakCheck( testDeque, test_insert_one(testDeque) ); + StrongCheck( testDeque, test_insert_one(testDeque,0) ); + StrongCheck( testDeque, test_insert_one(testDeque, testDeque.size()) ); + + WeakCheck( testDeque, test_insert_n(testDeque, random_number(random_base) ) ); + StrongCheck( testDeque, test_insert_n(testDeque, random_number(random_base), 0 ) ); + StrongCheck( testDeque, test_insert_n(testDeque, random_number(random_base), testDeque.size() ) ); + + size_t insCnt = random_number(random_base); + DQTestClass *insFirst = new TestDeque::value_type[insCnt+1]; + + WeakCheck( testDeque, insert_range_tester(testDeque, (DQTestClass *)insFirst, + insFirst+insCnt) ); + StrongCheck( testDeque, insert_range_at_begin_tester(testDeque, (DQTestClass *)insFirst, + insFirst+insCnt) ); + StrongCheck( testDeque, insert_range_at_end_tester(testDeque, (DQTestClass *)insFirst, + insFirst+insCnt) ); + + ConstCheck( 0, test_construct_pointer_range( (DQTestClass *)insFirst, + insFirst+insCnt ) ); + delete[] insFirst; + + WeakCheck( testDeque, insert_range_tester(testDeque, testDeque2.begin(), testDeque2.end() ) ); + + StrongCheck( testDeque, test_push_back(testDeque) ); + StrongCheck( emptyDeque, test_push_back(emptyDeque) ); + StrongCheck( testDeque, test_push_front(testDeque) ); + StrongCheck( emptyDeque, test_push_front(emptyDeque) ); + + + ConstCheck( 0, test_default_construct() ); + ConstCheck( 0, test_construct_n( random_number(random_base) ) ); + ConstCheck( 0, test_construct_n_instance( random_number(random_base) ) ); + ConstCheck( 0, test_construct_iter_range( testDeque2 ) ); + + testDeque2.resize( testDeque.size() * 3 / 2 ); + WeakCheck( testDeque, test_assign_op( testDeque2 ) ); + testDeque2.resize( testDeque.size() * 2 / 3 ); + WeakCheck( testDeque, test_assign_op( testDeque2 ) ); +}