diff options
Diffstat (limited to 'libstdc++-v3/testsuite/27_io/stringstream.cc')
-rw-r--r-- | libstdc++-v3/testsuite/27_io/stringstream.cc | 142 |
1 files changed, 22 insertions, 120 deletions
diff --git a/libstdc++-v3/testsuite/27_io/stringstream.cc b/libstdc++-v3/testsuite/27_io/stringstream.cc index 45ca438a590..cb9e39d9588 100644 --- a/libstdc++-v3/testsuite/27_io/stringstream.cc +++ b/libstdc++-v3/testsuite/27_io/stringstream.cc @@ -1,7 +1,6 @@ -// 981015 bkoz -// i,o,stringstream usage +// 2002-07-25 Benjamin Kosnik <bkoz@redhat.com> -// Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. +// Copyright (C) 2002 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -28,133 +27,36 @@ // invalidate any other reasons why the executable file might be covered by // the GNU General Public License. -#include <vector> -#include <string> +// 27.7.4 - Template class basic_stringstream +// NB: This file is for testing basic_stringstream with NO OTHER INCLUDES. + #include <sstream> #include <testsuite_hooks.h> -// 01: sanity checks for strings, stringbufs -std::string -test01() -{ - bool test = false; - - // Empty string sanity check. - std::string str01; - std::string::iterator __i_start = str01.begin(); - std::string::iterator __i_end = str01.end(); - std::string::size_type len = str01.size(); - test = __i_start == __i_end; - VERIFY( len == 0 ); - - // Full string sanity check. - std::string str02("these golden days, i spend waiting for you:\n" - "Betty Carter on Verve with I'm Yours and You're Mine."); - __i_start = str02.begin(); - __i_end = str02.end(); - len = str02.size(); - VERIFY( __i_start != __i_end ); - VERIFY( len != 0 ); - - // Test an empty ostring stream for sanity. - std::ostringstream ostrstream0; - std::string str03 = ostrstream0.str(); - __i_start = str03.begin(); - __i_end = str03.end(); - len = str03.size(); - VERIFY( __i_start == __i_end ); - VERIFY( len == 0 ); - VERIFY( str01 == str03 ); - - return str02; -} - +// { dg-do compile } -int -test02() +// libstdc++/7216 +void test01() { - bool test = true; - - // - // 1: Automatic formatting of a compound string - // - int i = 1024; - int *pi = &i; - double d = 3.14159; - double *pd = &d; - std::string blank; - std::ostringstream ostrst01; - std::ostringstream ostrst02(blank); - - // No buffer,so should be created. - ostrst01 << "i: " << i << " i's address: " << pi << "\n" - << "d: " << d << " d's address: " << pd << std::endl; - // Buffer, so existing buffer should be overwritten. - ostrst02 << "i: " << i << " i's address: " << pi << "\n" - << "d: " << d << " d's address: " << pd << std::endl; - - std::string msg01 = ostrst01.str(); - std::string msg02 = ostrst02.str(); - VERIFY( msg01 == msg02 ); - VERIFY( msg02 != blank ); - - // - // 2: istringstream - // - // extracts the stored ascii values, placing them in turn in the four vars -#if 0 - int i2 = 0; - int *pi2 = &i2; - double d2 = 0.0; - double *pd2 = &d2; - std::istringstream istrst01(ostrst02.str()); - - istrst01 >> i2 >> pi2 >> d2 >> pd2; - //istrst01 >> i2; - //istrst01 >> pi2; - VERIFY( i2 == i ); - VERIFY( d2 == d ); - VERIFY( pd2 == pd ); - VERIFY( pi2 == pi ); -#endif - - // stringstream - std::string str1(""); - std::string str3("this is a somewhat string"); - std::stringstream ss1(str1, std::ios_base::in|std::ios_base::out); - std::stringstream ss2(str3, std::ios_base::in|std::ios_base::out); - - return 0; + // Check for required typedefs + typedef std::stringstream test_type; + typedef test_type::char_type char_type; + typedef test_type::traits_type traits_type; + typedef test_type::int_type int_type; + typedef test_type::pos_type pos_type; + typedef test_type::off_type off_type; } -// user-reported error -class derived_oss: public std::ostringstream -{ -public: - derived_oss() : std::ostringstream() {} -}; - -int -test03() +namespace test { - bool test = true; - derived_oss yy; - yy << "buena vista social club\n"; - VERIFY( yy.str() == std::string("buena vista social club\n") ); - -#ifdef DEBUG_ASSERT - assert(test); -#endif - - return 0; -} + using namespace std; + typedef short type_t; + template class basic_stringstream<type_t, char_traits<type_t> >; + template class basic_stringstream<gnu_char, char_traits<gnu_char> >; +} // test -int -main() +int main() { test01(); - test02(); - test03(); - return 0; } |