diff -r 000000000000 -r e4d67989cc36 genericopenlibs/cppstdlib/stl/test/unit/ioiter_test.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/genericopenlibs/cppstdlib/stl/test/unit/ioiter_test.cpp Tue Feb 02 02:01:42 2010 +0200 @@ -0,0 +1,110 @@ +#include +#if !defined (STLPORT) || !defined (_STLP_USE_NO_IOSTREAMS) +#include +#include +#include + +#include "cppunit/cppunit_proxy.h" + +#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) +using namespace std; +#endif + +class IoiterTest : public CPPUNIT_NS::TestCase +{ + CPPUNIT_TEST_SUITE(IoiterTest); + CPPUNIT_TEST(ioiter_test); + CPPUNIT_TEST(assign_test); + CPPUNIT_TEST(assign2_test); + CPPUNIT_TEST_SUITE_END(); + +protected: + void ioiter_test(); + void assign_test(); + void assign2_test(); +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(IoiterTest); + +void IoiterTest::ioiter_test() +{ + + char c; + char *pc; + char *strorg = "abcd"; + string tmp; + + string objStr(strorg); + + istringstream objIStrStrm1(objStr); + istringstream objIStrStrm2(objStr); + istringstream objIStrStrm3(objStr); + + pc = strorg; + string::size_type sz = strlen(strorg); + string::size_type i; + for ( i = 0; i < sz; ++i ) { + c = *pc++; + tmp += c; + } + CPPUNIT_ASSERT( tmp == "abcd" ); + + istreambuf_iterator > objIStrmbIt1( objIStrStrm1.rdbuf() ); + istreambuf_iterator > end; + + tmp.clear(); + + for ( i = 0; i < sz /* objIStrmbIt1 != end */; ++i ) { + c = *objIStrmbIt1++; + tmp += c; + } + CPPUNIT_ASSERT( tmp == "abcd" ); + + tmp.clear(); + + istreambuf_iterator > objIStrmbIt2( objIStrStrm2.rdbuf() ); + for ( i = 0; i < sz; ++i ) { + c = *objIStrmbIt2; + tmp += c; + objIStrmbIt2++; + } + CPPUNIT_ASSERT( tmp == "abcd" ); + + tmp.clear(); + + istreambuf_iterator > objIStrmbIt3( objIStrStrm3.rdbuf() ); + + while ( objIStrmbIt3 != end ) { + c = *objIStrmbIt3++; + tmp += c; + } + CPPUNIT_ASSERT( tmp == "abcd" ); +} + +void IoiterTest::assign_test() +{ + stringstream s( "1234567890" ); + vector v; + + v.assign( istreambuf_iterator(s), istreambuf_iterator() ); + CPPUNIT_CHECK( v.size() == 10 ); + if ( v.size() == 10 ) { + CPPUNIT_CHECK( v[0] == '1' ); + CPPUNIT_CHECK( v[9] == '0' ); + } +} + +void IoiterTest::assign2_test() +{ + stringstream s( "1234567890" ); + vector v; + + v.assign( istreambuf_iterator(s.rdbuf()), istreambuf_iterator() ); + CPPUNIT_CHECK( v.size() == 10 ); + if ( v.size() == 10 ) { + CPPUNIT_CHECK( v[0] == '1' ); + CPPUNIT_CHECK( v[9] == '0' ); + } +} + +#endif