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