diff -r e20de85af2ee -r ce057bb09d0b 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 Fri Jun 04 16:20:51 2010 +0100 @@ -0,0 +1,126 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ +#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