aboutsummaryrefslogtreecommitdiff
path: root/test/unit/ioiter_test.cpp
blob: 6f0aeb9a94954807ef7f146f41aaa2a87994d68d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#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