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