X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;ds=sidebyside;f=libstdc%2B%2B-v3%2Ftestsuite%2F27_io%2Fostream_inserter_char.cc;fp=libstdc%2B%2B-v3%2Ftestsuite%2F27_io%2Fostream_inserter_char.cc;h=0000000000000000000000000000000000000000;hb=6fed43773c9b0ce596dca5686f37ac3fc0fa11c0;hp=2fe88f5815b589cab8167fa7bd7b342c98eba0d1;hpb=27b11d56b743098deb193d510b337ba22dc52e5c;p=msp430-gcc.git diff --git a/libstdc++-v3/testsuite/27_io/ostream_inserter_char.cc b/libstdc++-v3/testsuite/27_io/ostream_inserter_char.cc deleted file mode 100644 index 2fe88f58..00000000 --- a/libstdc++-v3/testsuite/27_io/ostream_inserter_char.cc +++ /dev/null @@ -1,342 +0,0 @@ -// 1999-08-16 bkoz - -// Copyright (C) 1999, 2000, 2002 Free Software Foundation -// -// 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 -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -// 27.6.2.5.4 basic_ostream character inserters - -#include -#include -#include -#include -#include - -// ofstream -bool test01() -{ - bool test = true; - std::string str01; - const int size = 1000; - const char name_02[] = "ostream_inserter_char-1.txt"; - - // initialize string - for(int i=0 ; i < size; i++) { - str01 += '1'; - str01 += '2'; - str01 += '3'; - str01 += '4'; - str01 += '5'; - str01 += '6'; - str01 += '7'; - str01 += '8'; - str01 += '9'; - str01 += '\n'; - } - std::ofstream f(name_02); - - f << str01; - f.close(); - - VERIFY( test ); - return test; -} - -// ostringstream width() != zero -// left -bool test02(void) -{ - bool test = true; - std::string tmp; - - std::string str01 = ""; - std::ostringstream oss01; - oss01.width(5); - oss01.fill('0'); - oss01.flags(std::ios_base::left); - oss01 << str01; - tmp = oss01.str(); - VERIFY( tmp == "00000" ); - - std::string str02 = "1"; - std::ostringstream oss02; - oss02.width(5); - oss02.fill('0'); - oss02.flags(std::ios_base::left); - oss02 << str02; - tmp = oss02.str(); - VERIFY( tmp == "10000" ); - - std::string str03 = "909909"; - std::ostringstream oss03; - oss03.width(5); - oss03.fill('0'); - oss03.flags(std::ios_base::left); - oss03 << str03; - tmp = oss03.str(); - VERIFY( tmp == "909909" ); - return test; -} - -// width() != zero -// right -bool test03(void) -{ - bool test = true; - std::string tmp; - - std::string str01 = ""; - std::ostringstream oss01; - oss01.width(5); - oss01.fill('0'); - oss01.flags(std::ios_base::right); - oss01 << str01; - tmp = oss01.str(); - VERIFY( tmp == "00000" ); - - std::string str02 = "1"; - std::ostringstream oss02; - oss02.width(5); - oss02.fill('0'); - oss02.flags(std::ios_base::right); - oss02 << str02; - tmp = oss02.str(); - VERIFY( tmp == "00001" ); - - std::string str03 = "909909"; - std::ostringstream oss03; - oss03.width(5); - oss03.fill('0'); - oss03.flags(std::ios_base::right); - oss03 << str03; - tmp = oss03.str(); - VERIFY( tmp == "909909" ); - return test; -} - -// stringstream and large strings -bool test04() -{ - bool test = true; - std::string str_01; - const std::string str_02("coltrane playing 'softly as a morning sunrise'"); - const std::string str_03("coltrane"); - std::string str_tmp; - const int i_max=250; - - std::ostringstream oss_01(std::ios_base::out); - std::ostringstream oss_02(str_01, std::ios_base::out); - - std::ios_base::iostate state1, state2, statefail; - statefail = std::ios_base::failbit; - - // template<_CharT, _Traits> - // basic_ostream& operator<<(ostream&, const char*) - for (int i = 0; i < i_max; ++i) - oss_02 << "Test: " << i << std::endl; - str_tmp = oss_02.str(); - VERIFY( !oss_02.bad() ); - VERIFY( oss_02.good() ); - VERIFY( str_tmp != str_01 ); - VERIFY( str_tmp.size() == 2390 ); - return test; -} - -// ostringstream and large strings number 2 -bool test05() -{ - bool test = true; - std::string str05, str10; - - typedef std::ostream::pos_type pos_type; - typedef std::ostream::off_type off_type; - std::string str01; - const int size = 1000; - - // initialize string - for(int i=0 ; i < size; i++) { - str01 += '1'; - str01 += '2'; - str01 += '3'; - str01 += '4'; - str01 += '5'; - str01 += '6'; - str01 += '7'; - str01 += '8'; - str01 += '9'; - str01 += '\n'; - } - - // test 1: out - std::ostringstream sstr01(str01, std::ios_base::out); - std::ostringstream sstr02; - sstr02 << str01; - str05 = sstr01.str(); - str10 = sstr02.str(); - VERIFY( str05 == str01 ); - VERIFY( str10 == str01 ); - - // test 2: in | out - std::ostringstream sstr04(str01, std::ios_base::out | std::ios_base::in); - std::ostringstream sstr05(std::ios_base::in | std::ios_base::out); - sstr05 << str01; - str05 = sstr04.str(); - str10 = sstr05.str(); - VERIFY( str05 == str01 ); - VERIFY( str10 == str01 ); - return test; -} - - -// ostringstream and positioning, multiple writes -// http://gcc.gnu.org/ml/libstdc++/2000-q1/msg00326.html -void test06() -{ - bool test = true; - const char carray01[] = "mos def & talib kweli are black star"; - - // normal - std::ostringstream ostr1("mos def"); - VERIFY( ostr1.str() == "mos def" ); - ostr1 << " & talib kweli"; // should overwrite first part of buffer - VERIFY( ostr1.str() == " & talib kweli" ); - ostr1 << " are black star"; // should append to string from above - VERIFY( ostr1.str() != carray01 ); - VERIFY( ostr1.str() == " & talib kweli are black star" ); - - // appending - std::ostringstream ostr2("blackalicious", - std::ios_base::out | std::ios_base::ate); - VERIFY( ostr2.str() == "blackalicious" ); - ostr2 << " NIA "; // should not overwrite first part of buffer - VERIFY( ostr2.str() == "blackalicious NIA " ); - ostr2 << "4: deception (5:19)"; // should append to full string from above - VERIFY( ostr2.str() == "blackalicious NIA 4: deception (5:19)" ); -} - -// Global counter, needs to be reset after use. -bool used; - -class gnu_ctype : public std::ctype -{ -protected: - char_type - do_widen(char c) const - { - used = true; - return std::ctype::do_widen(c); - } - - const char* - do_widen(const char* low, const char* high, char_type* dest) const - { - used = true; - return std::ctype::do_widen(low, high, dest); - } -}; - -// 27.6.2.5.4 - Character inserter template functions -// [lib.ostream.inserters.character] -void test07() -{ -#if _GLIBCPP_USE_WCHAR_T - using namespace std; - bool test = true; - - const char* buffer = "SFPL 5th floor, outside carrol, the Asian side"; - - wostringstream oss; - oss.imbue(locale(locale::classic(), new gnu_ctype)); - - // 1 - // template - // basic_ostream& operator<<(basic_ostream& out, - // const char* s); - used = false; - oss << buffer; - VERIFY( used ); // Only required for char_type != char - wstring str = oss.str(); - wchar_t c1 = oss.widen(buffer[0]); - VERIFY( str[0] == c1 ); - wchar_t c2 = oss.widen(buffer[1]); - VERIFY( str[1] == c2 ); - - // 2 - // template - // basic_ostream& operator<<(basic_ostream& out, - // char c); - used = false; - oss.str(wstring()); - oss << 'b'; - VERIFY( used ); // Only required for char_type != char - str = oss.str(); - wchar_t c3 = oss.widen('b'); - VERIFY( str[0] == c3 ); -#endif -} - -void test08() -{ - bool test = true; - char* pt = NULL; - - // 1 - std::ostringstream oss; - oss << pt; - VERIFY( oss.bad() ); - VERIFY( oss.str().size() == 0 ); - - oss.clear(); - oss << ""; - VERIFY( oss.good() ); - -#if _GLIBCPP_USE_WCHAR_T - // 2 - std::wostringstream woss; - woss << pt; - VERIFY( woss.bad() ); - VERIFY( woss.str().size() == 0 ); - - woss.clear(); - woss << ""; - VERIFY( woss.good() ); - - // 3 - wchar_t* wt = NULL; - woss.clear(); - woss << wt; - VERIFY( woss.bad() ); - VERIFY( woss.str().size() == 0 ); - - woss.clear(); - woss << L""; - VERIFY( woss.good() ); -#endif -} - -int main() -{ - test01(); - test02(); - test03(); - test04(); - test05(); - test06(); - test07(); - test08(); - return 0; -}