1#include <string>
2
3#if !defined (STLPORT) || !defined (_STLP_USE_NO_IOSTREAMS)
4#  include <sstream>
5//#  include <locale>
6#  include <iostream>
7//#  include <stdexcept>
8
9#  include "cppunit/cppunit_proxy.h"
10
11#  if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
12using namespace std;
13#  endif
14
15//
16// TestCase class
17//
18class IOStreamTest : public CPPUNIT_NS::TestCase
19{
20  CPPUNIT_TEST_SUITE(IOStreamTest);
21  CPPUNIT_TEST(manipulators);
22  CPPUNIT_TEST(in_avail);
23//#if defined (STLPORT) && defined (_STLP_NO_WCHAR_T)
24  //CPPUNIT_IGNORE;
25//#endif
26  //CPPUNIT_TEST(wimbue);
27  CPPUNIT_TEST_SUITE_END();
28
29private:
30  void manipulators();
31  void in_avail();
32  //void wimbue();
33};
34
35CPPUNIT_TEST_SUITE_REGISTRATION(IOStreamTest);
36
37//
38// tests implementation
39//
40void IOStreamTest::manipulators()
41{
42  {
43    istringstream istr;
44    istr.str("bar");
45
46    istr >> ws;
47    CPPUNIT_ASSERT( istr.good() );
48
49    string foo;
50    istr >> foo;
51    CPPUNIT_ASSERT( istr.eof() );
52    CPPUNIT_ASSERT( !istr.fail() );
53    CPPUNIT_ASSERT( foo == "bar" );
54
55    istr >> ws;
56    CPPUNIT_ASSERT( istr.eof() );
57    CPPUNIT_ASSERT( !istr.fail() );
58    istr.clear();
59  }
60
61  {
62    istringstream istr;
63    istr.str("  bar  ");
64
65    istr >> ws;
66    CPPUNIT_ASSERT( istr.good() );
67
68    string foo;
69    istr >> foo;
70    CPPUNIT_ASSERT( !istr.eof() );
71    CPPUNIT_ASSERT( !istr.fail() );
72    CPPUNIT_ASSERT( foo == "bar" );
73
74    istr >> ws;
75    CPPUNIT_ASSERT( istr.eof() );
76    CPPUNIT_ASSERT( !istr.fail() );
77    istr.clear();
78  }
79}
80
81
82void IOStreamTest::in_avail()
83{
84  CPPUNIT_CHECK( cin.rdbuf()->in_avail() == 0 );
85  CPPUNIT_CHECK( cout.rdbuf()->in_avail() == -1 );
86  CPPUNIT_CHECK( clog.rdbuf()->in_avail() == -1 );
87  CPPUNIT_CHECK( cerr.rdbuf()->in_avail() == -1 );
88
89#if !defined (STLPORT) || !defined (_STLP_NO_WCHAR_T)
90  CPPUNIT_CHECK( wcin.rdbuf()->in_avail() == 0 );
91  CPPUNIT_CHECK( wcout.rdbuf()->in_avail() == 0 );
92  CPPUNIT_CHECK( wclog.rdbuf()->in_avail() == 0 );
93  CPPUNIT_CHECK( wcerr.rdbuf()->in_avail() == 0 );
94#endif
95}
96
97//void IOStreamTest::wimbue()
98//{
99//#if !defined (STLPORT) || !defined (_STLP_NO_WCHAR_T)
100//  locale loc;
101//  try {
102//    locale tmp(".866");
103//    loc = tmp;
104//  }
105//  catch (const runtime_error&) {
106//    return;
107//  }
108//
109//  wcout.imbue(loc);
110//  wcout << L"Hello world" << endl;
111//  wcout.imbue(loc);
112//  wcout << L"Hello world" << endl;
113//#endif
114//}
115
116#endif
117