1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/ossrv/genericopenlibs/cppstdlib/stl/test/unit/ioiter_test.cpp Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,110 @@
1.4 +#include <string>
1.5 +#if !defined (STLPORT) || !defined (_STLP_USE_NO_IOSTREAMS)
1.6 +#include <sstream>
1.7 +#include <vector>
1.8 +#include <iterator>
1.9 +
1.10 +#include "cppunit/cppunit_proxy.h"
1.11 +
1.12 +#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
1.13 +using namespace std;
1.14 +#endif
1.15 +
1.16 +class IoiterTest : public CPPUNIT_NS::TestCase
1.17 +{
1.18 + CPPUNIT_TEST_SUITE(IoiterTest);
1.19 + CPPUNIT_TEST(ioiter_test);
1.20 + CPPUNIT_TEST(assign_test);
1.21 + CPPUNIT_TEST(assign2_test);
1.22 + CPPUNIT_TEST_SUITE_END();
1.23 +
1.24 +protected:
1.25 + void ioiter_test();
1.26 + void assign_test();
1.27 + void assign2_test();
1.28 +};
1.29 +
1.30 +CPPUNIT_TEST_SUITE_REGISTRATION(IoiterTest);
1.31 +
1.32 +void IoiterTest::ioiter_test()
1.33 +{
1.34 +
1.35 + char c;
1.36 + char *pc;
1.37 + char *strorg = "abcd";
1.38 + string tmp;
1.39 +
1.40 + string objStr(strorg);
1.41 +
1.42 + istringstream objIStrStrm1(objStr);
1.43 + istringstream objIStrStrm2(objStr);
1.44 + istringstream objIStrStrm3(objStr);
1.45 +
1.46 + pc = strorg;
1.47 + string::size_type sz = strlen(strorg);
1.48 + string::size_type i;
1.49 + for ( i = 0; i < sz; ++i ) {
1.50 + c = *pc++;
1.51 + tmp += c;
1.52 + }
1.53 + CPPUNIT_ASSERT( tmp == "abcd" );
1.54 +
1.55 + istreambuf_iterator<char, char_traits<char> > objIStrmbIt1( objIStrStrm1.rdbuf() );
1.56 + istreambuf_iterator<char, char_traits<char> > end;
1.57 +
1.58 + tmp.clear();
1.59 +
1.60 + for ( i = 0; i < sz /* objIStrmbIt1 != end */; ++i ) {
1.61 + c = *objIStrmbIt1++;
1.62 + tmp += c;
1.63 + }
1.64 + CPPUNIT_ASSERT( tmp == "abcd" );
1.65 +
1.66 + tmp.clear();
1.67 +
1.68 + istreambuf_iterator<char, char_traits<char> > objIStrmbIt2( objIStrStrm2.rdbuf() );
1.69 + for ( i = 0; i < sz; ++i ) {
1.70 + c = *objIStrmbIt2;
1.71 + tmp += c;
1.72 + objIStrmbIt2++;
1.73 + }
1.74 + CPPUNIT_ASSERT( tmp == "abcd" );
1.75 +
1.76 + tmp.clear();
1.77 +
1.78 + istreambuf_iterator<char, char_traits<char> > objIStrmbIt3( objIStrStrm3.rdbuf() );
1.79 +
1.80 + while ( objIStrmbIt3 != end ) {
1.81 + c = *objIStrmbIt3++;
1.82 + tmp += c;
1.83 + }
1.84 + CPPUNIT_ASSERT( tmp == "abcd" );
1.85 +}
1.86 +
1.87 +void IoiterTest::assign_test()
1.88 +{
1.89 + stringstream s( "1234567890" );
1.90 + vector<char> v;
1.91 +
1.92 + v.assign( istreambuf_iterator<char>(s), istreambuf_iterator<char>() );
1.93 + CPPUNIT_CHECK( v.size() == 10 );
1.94 + if ( v.size() == 10 ) {
1.95 + CPPUNIT_CHECK( v[0] == '1' );
1.96 + CPPUNIT_CHECK( v[9] == '0' );
1.97 + }
1.98 +}
1.99 +
1.100 +void IoiterTest::assign2_test()
1.101 +{
1.102 + stringstream s( "1234567890" );
1.103 + vector<char> v;
1.104 +
1.105 + v.assign( istreambuf_iterator<char>(s.rdbuf()), istreambuf_iterator<char>() );
1.106 + CPPUNIT_CHECK( v.size() == 10 );
1.107 + if ( v.size() == 10 ) {
1.108 + CPPUNIT_CHECK( v[0] == '1' );
1.109 + CPPUNIT_CHECK( v[9] == '0' );
1.110 + }
1.111 +}
1.112 +
1.113 +#endif