blob: 6f0aeb9a94954807ef7f146f41aaa2a87994d68d [file] [log] [blame]
#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