| #include <string> |
| #if !defined (STLPORT) || !defined (_STLP_USE_NO_IOSTREAMS) |
| #include <sstream> |
| #include <vector> |
| #include <iterator> |
| |
| #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; |
| const char *pc; |
| const 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<char, char_traits<char> > objIStrmbIt1( objIStrStrm1.rdbuf() ); |
| istreambuf_iterator<char, char_traits<char> > end; |
| |
| tmp.clear(); |
| |
| for ( i = 0; i < sz /* objIStrmbIt1 != end */; ++i ) { |
| c = *objIStrmbIt1++; |
| tmp += c; |
| } |
| CPPUNIT_ASSERT( tmp == "abcd" ); |
| |
| tmp.clear(); |
| |
| istreambuf_iterator<char, char_traits<char> > objIStrmbIt2( objIStrStrm2.rdbuf() ); |
| for ( i = 0; i < sz; ++i ) { |
| c = *objIStrmbIt2; |
| tmp += c; |
| objIStrmbIt2++; |
| } |
| CPPUNIT_ASSERT( tmp == "abcd" ); |
| |
| tmp.clear(); |
| |
| istreambuf_iterator<char, char_traits<char> > objIStrmbIt3( objIStrStrm3.rdbuf() ); |
| |
| while ( objIStrmbIt3 != end ) { |
| c = *objIStrmbIt3++; |
| tmp += c; |
| } |
| CPPUNIT_ASSERT( tmp == "abcd" ); |
| } |
| |
| void IoiterTest::assign_test() |
| { |
| stringstream s( "1234567890" ); |
| vector<char> v; |
| |
| v.assign( istreambuf_iterator<char>(s), istreambuf_iterator<char>() ); |
| 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<char> v; |
| |
| v.assign( istreambuf_iterator<char>(s.rdbuf()), istreambuf_iterator<char>() ); |
| CPPUNIT_CHECK( v.size() == 10 ); |
| if ( v.size() == 10 ) { |
| CPPUNIT_CHECK( v[0] == '1' ); |
| CPPUNIT_CHECK( v[9] == '0' ); |
| } |
| } |
| |
| #endif |