os/ossrv/genericopenlibs/cppstdlib/stl/test/unit/ioiter_test.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
#include <string>
sl@0
     2
#if !defined (STLPORT) || !defined (_STLP_USE_NO_IOSTREAMS)
sl@0
     3
#include <sstream>
sl@0
     4
#include <vector>
sl@0
     5
#include <iterator>
sl@0
     6
sl@0
     7
#include "cppunit/cppunit_proxy.h"
sl@0
     8
sl@0
     9
#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
sl@0
    10
using namespace std;
sl@0
    11
#endif
sl@0
    12
sl@0
    13
class IoiterTest : public CPPUNIT_NS::TestCase
sl@0
    14
{
sl@0
    15
  CPPUNIT_TEST_SUITE(IoiterTest);
sl@0
    16
  CPPUNIT_TEST(ioiter_test);
sl@0
    17
  CPPUNIT_TEST(assign_test);
sl@0
    18
  CPPUNIT_TEST(assign2_test);
sl@0
    19
  CPPUNIT_TEST_SUITE_END();
sl@0
    20
sl@0
    21
protected:
sl@0
    22
  void ioiter_test();
sl@0
    23
  void assign_test();
sl@0
    24
  void assign2_test();
sl@0
    25
};
sl@0
    26
sl@0
    27
CPPUNIT_TEST_SUITE_REGISTRATION(IoiterTest);
sl@0
    28
sl@0
    29
void IoiterTest::ioiter_test()
sl@0
    30
{
sl@0
    31
sl@0
    32
  char c;
sl@0
    33
  char *pc;
sl@0
    34
  char *strorg = "abcd";
sl@0
    35
  string tmp;
sl@0
    36
sl@0
    37
  string objStr(strorg);
sl@0
    38
sl@0
    39
  istringstream objIStrStrm1(objStr);
sl@0
    40
  istringstream objIStrStrm2(objStr);
sl@0
    41
  istringstream objIStrStrm3(objStr);
sl@0
    42
sl@0
    43
  pc = strorg;
sl@0
    44
  string::size_type sz = strlen(strorg);
sl@0
    45
  string::size_type i;
sl@0
    46
  for ( i = 0; i < sz; ++i ) {
sl@0
    47
    c = *pc++;
sl@0
    48
    tmp += c;
sl@0
    49
  }
sl@0
    50
  CPPUNIT_ASSERT( tmp == "abcd" );
sl@0
    51
sl@0
    52
  istreambuf_iterator<char, char_traits<char> > objIStrmbIt1( objIStrStrm1.rdbuf() );
sl@0
    53
  istreambuf_iterator<char, char_traits<char> > end;
sl@0
    54
sl@0
    55
  tmp.clear();
sl@0
    56
sl@0
    57
  for ( i = 0; i < sz /* objIStrmbIt1 != end */; ++i ) {
sl@0
    58
    c = *objIStrmbIt1++;
sl@0
    59
    tmp += c;
sl@0
    60
  }
sl@0
    61
  CPPUNIT_ASSERT( tmp == "abcd" );
sl@0
    62
sl@0
    63
  tmp.clear();
sl@0
    64
sl@0
    65
  istreambuf_iterator<char, char_traits<char> > objIStrmbIt2( objIStrStrm2.rdbuf() );
sl@0
    66
  for ( i = 0; i < sz; ++i ) {
sl@0
    67
    c = *objIStrmbIt2;
sl@0
    68
    tmp += c;
sl@0
    69
    objIStrmbIt2++;
sl@0
    70
  }
sl@0
    71
  CPPUNIT_ASSERT( tmp == "abcd" );
sl@0
    72
sl@0
    73
  tmp.clear();
sl@0
    74
sl@0
    75
  istreambuf_iterator<char, char_traits<char> > objIStrmbIt3( objIStrStrm3.rdbuf() );
sl@0
    76
sl@0
    77
  while ( objIStrmbIt3 != end ) {
sl@0
    78
    c = *objIStrmbIt3++;
sl@0
    79
    tmp += c;
sl@0
    80
  }
sl@0
    81
  CPPUNIT_ASSERT( tmp == "abcd" );
sl@0
    82
}
sl@0
    83
sl@0
    84
void IoiterTest::assign_test()
sl@0
    85
{
sl@0
    86
  stringstream s( "1234567890" );
sl@0
    87
  vector<char> v;
sl@0
    88
sl@0
    89
  v.assign( istreambuf_iterator<char>(s), istreambuf_iterator<char>() );
sl@0
    90
  CPPUNIT_CHECK( v.size() == 10 );
sl@0
    91
  if ( v.size() == 10 ) {
sl@0
    92
    CPPUNIT_CHECK( v[0] == '1' );
sl@0
    93
    CPPUNIT_CHECK( v[9] == '0' );
sl@0
    94
  }
sl@0
    95
}
sl@0
    96
sl@0
    97
void IoiterTest::assign2_test()
sl@0
    98
{
sl@0
    99
  stringstream s( "1234567890" );
sl@0
   100
  vector<char> v;
sl@0
   101
sl@0
   102
  v.assign( istreambuf_iterator<char>(s.rdbuf()), istreambuf_iterator<char>() );
sl@0
   103
  CPPUNIT_CHECK( v.size() == 10 );
sl@0
   104
  if ( v.size() == 10 ) {
sl@0
   105
    CPPUNIT_CHECK( v[0] == '1' );
sl@0
   106
    CPPUNIT_CHECK( v[9] == '0' );
sl@0
   107
  }
sl@0
   108
}
sl@0
   109
sl@0
   110
#endif