sl@0: #include sl@0: #if !defined (STLPORT) || !defined (_STLP_USE_NO_IOSTREAMS) sl@0: #include sl@0: #include sl@0: #include sl@0: sl@0: #include "cppunit/cppunit_proxy.h" sl@0: sl@0: #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) sl@0: using namespace std; sl@0: #endif sl@0: sl@0: class IoiterTest : public CPPUNIT_NS::TestCase sl@0: { sl@0: CPPUNIT_TEST_SUITE(IoiterTest); sl@0: CPPUNIT_TEST(ioiter_test); sl@0: CPPUNIT_TEST(assign_test); sl@0: CPPUNIT_TEST(assign2_test); sl@0: CPPUNIT_TEST_SUITE_END(); sl@0: sl@0: protected: sl@0: void ioiter_test(); sl@0: void assign_test(); sl@0: void assign2_test(); sl@0: }; sl@0: sl@0: CPPUNIT_TEST_SUITE_REGISTRATION(IoiterTest); sl@0: sl@0: void IoiterTest::ioiter_test() sl@0: { sl@0: sl@0: char c; sl@0: char *pc; sl@0: char *strorg = "abcd"; sl@0: string tmp; sl@0: sl@0: string objStr(strorg); sl@0: sl@0: istringstream objIStrStrm1(objStr); sl@0: istringstream objIStrStrm2(objStr); sl@0: istringstream objIStrStrm3(objStr); sl@0: sl@0: pc = strorg; sl@0: string::size_type sz = strlen(strorg); sl@0: string::size_type i; sl@0: for ( i = 0; i < sz; ++i ) { sl@0: c = *pc++; sl@0: tmp += c; sl@0: } sl@0: CPPUNIT_ASSERT( tmp == "abcd" ); sl@0: sl@0: istreambuf_iterator > objIStrmbIt1( objIStrStrm1.rdbuf() ); sl@0: istreambuf_iterator > end; sl@0: sl@0: tmp.clear(); sl@0: sl@0: for ( i = 0; i < sz /* objIStrmbIt1 != end */; ++i ) { sl@0: c = *objIStrmbIt1++; sl@0: tmp += c; sl@0: } sl@0: CPPUNIT_ASSERT( tmp == "abcd" ); sl@0: sl@0: tmp.clear(); sl@0: sl@0: istreambuf_iterator > objIStrmbIt2( objIStrStrm2.rdbuf() ); sl@0: for ( i = 0; i < sz; ++i ) { sl@0: c = *objIStrmbIt2; sl@0: tmp += c; sl@0: objIStrmbIt2++; sl@0: } sl@0: CPPUNIT_ASSERT( tmp == "abcd" ); sl@0: sl@0: tmp.clear(); sl@0: sl@0: istreambuf_iterator > objIStrmbIt3( objIStrStrm3.rdbuf() ); sl@0: sl@0: while ( objIStrmbIt3 != end ) { sl@0: c = *objIStrmbIt3++; sl@0: tmp += c; sl@0: } sl@0: CPPUNIT_ASSERT( tmp == "abcd" ); sl@0: } sl@0: sl@0: void IoiterTest::assign_test() sl@0: { sl@0: stringstream s( "1234567890" ); sl@0: vector v; sl@0: sl@0: v.assign( istreambuf_iterator(s), istreambuf_iterator() ); sl@0: CPPUNIT_CHECK( v.size() == 10 ); sl@0: if ( v.size() == 10 ) { sl@0: CPPUNIT_CHECK( v[0] == '1' ); sl@0: CPPUNIT_CHECK( v[9] == '0' ); sl@0: } sl@0: } sl@0: sl@0: void IoiterTest::assign2_test() sl@0: { sl@0: stringstream s( "1234567890" ); sl@0: vector v; sl@0: sl@0: v.assign( istreambuf_iterator(s.rdbuf()), istreambuf_iterator() ); sl@0: CPPUNIT_CHECK( v.size() == 10 ); sl@0: if ( v.size() == 10 ) { sl@0: CPPUNIT_CHECK( v[0] == '1' ); sl@0: CPPUNIT_CHECK( v[9] == '0' ); sl@0: } sl@0: } sl@0: sl@0: #endif