From 554fd8c5195424bdbcabf5de30fdc183aba391bd Mon Sep 17 00:00:00 2001 From: upstream source tree Date: Sun, 15 Mar 2015 20:14:05 -0400 Subject: obtained gcc-4.6.4.tar.bz2 from upstream website; verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository. --- .../basic_string/inserters_extractors/char/1.cc | 165 +++++++++++++++++++++ .../basic_string/inserters_extractors/char/10.cc | 86 +++++++++++ .../basic_string/inserters_extractors/char/11.cc | 85 +++++++++++ .../inserters_extractors/char/28277.cc | 54 +++++++ .../basic_string/inserters_extractors/char/4.cc | 65 ++++++++ .../basic_string/inserters_extractors/char/5.cc | 88 +++++++++++ .../basic_string/inserters_extractors/char/6.cc | 61 ++++++++ .../basic_string/inserters_extractors/char/7.cc | 53 +++++++ .../basic_string/inserters_extractors/char/8.cc | 53 +++++++ .../basic_string/inserters_extractors/char/9.cc | 56 +++++++ 10 files changed, 766 insertions(+) create mode 100644 libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/1.cc create mode 100644 libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/10.cc create mode 100644 libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/11.cc create mode 100644 libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/28277.cc create mode 100644 libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/4.cc create mode 100644 libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/5.cc create mode 100644 libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/6.cc create mode 100644 libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/7.cc create mode 100644 libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/8.cc create mode 100644 libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/9.cc (limited to 'libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char') diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/1.cc new file mode 100644 index 000000000..9b3ed4c3c --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/1.cc @@ -0,0 +1,165 @@ +// 1999-07-01 bkoz + +// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2009 +// 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 +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, 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 COPYING3. If not see +// . + +// 21.3.7.9 inserters and extractors + +// NB: This file is predicated on sstreams, istreams, and ostreams +// working, not to mention other major details like char_traits, and +// all of the string class. + +#include +#include +#include +#include +#include +#include + +bool test01(void) +{ + bool test __attribute__((unused)) = true; + typedef std::string::size_type csize_type; + typedef std::string::const_reference cref; + typedef std::string::reference ref; + + const std::string str01("sailing grand traverse bay\n" + "\t\t\t from Elk Rapids to the point reminds me of miles"); + const std::string str02("sailing"); + const std::string str03("grand"); + const std::string str04("traverse"); + const std::string str05; + std::string str10; + + // istream& operator>>(istream&, string&) + std::istringstream istrs01(str01); + istrs01 >> str10; + VERIFY( str10 == str02 ); + try + { + std::istringstream::int_type i01 = istrs01.peek(); //a-boo + VERIFY( std::istringstream::traits_type::to_char_type(i01) == ' ' ); + } + catch(std::exception& fail) + { + VERIFY( false ); // shouldn't throw + } + + istrs01.clear(); + istrs01 >> str10; + VERIFY( str10 == str03 ); + istrs01.clear(); + istrs01 >> str10; + VERIFY( str10 == str04 ); // sentry picks out the white spaces. . + + std::istringstream istrs02(str05); // empty + istrs02 >> str10; + VERIFY( str10 == str04 ); + + // istream& getline(istream&, string&, char) + // istream& getline(istream&, string&) + try + { + istrs01.clear(); + getline(istrs01, str10); + VERIFY( !istrs01.fail() ); + VERIFY( !istrs01.eof() ); + VERIFY( istrs01.good() ); + VERIFY( str10 == " bay" ); + } + catch(std::exception& fail) + { + VERIFY( false ); // shouldn't throw + } + + try + { + istrs01.clear(); + getline(istrs01, str10,'\t'); + VERIFY( !istrs01.fail() ); + VERIFY( !istrs01.eof() ); + VERIFY( istrs01.good() ); + VERIFY( str10 == str05 ); + } + catch(std::exception& fail) + { + VERIFY( false ); // shouldn't throw + } + + try + { + istrs01.clear(); + getline(istrs01, str10,'\t'); + VERIFY( !istrs01.fail() ); + VERIFY( !istrs01.eof() ); + VERIFY( istrs01.good() ); + VERIFY( str10 == str05 ); + } + catch(std::exception& fail) + { + VERIFY( false ); // shouldn't throw + } + + try + { + istrs01.clear(); + getline(istrs01, str10, '.'); + VERIFY( !istrs01.fail() ); + VERIFY( istrs01.eof() ); + VERIFY( !istrs01.good() ); + VERIFY( str10 == "\t from Elk Rapids to the point reminds me of miles" ); + } + catch(std::exception& fail) + { + VERIFY( false ); // shouldn't throw + } + + try + { + getline(istrs02, str10); + VERIFY( istrs02.fail() ); + VERIFY( istrs02.eof() ); + VERIFY( str10 =="\t from Elk Rapids to the point reminds me of miles" ); + } + catch(std::exception& fail) + { + VERIFY( false ); // shouldn't throw + } + + // ostream& operator<<(ostream&, const basic_string&) + std::ostringstream ostrs01; + try + { + ostrs01 << str01; + VERIFY( ostrs01.str() == str01 ); + } + catch(std::exception& fail) + { + VERIFY( false ); + } + + std::string hello_world; + std::cout << hello_world; + return test; +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/10.cc b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/10.cc new file mode 100644 index 000000000..f2722fe96 --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/10.cc @@ -0,0 +1,86 @@ +// Copyright (C) 2004, 2005, 2006, 2007, 2009 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 3, 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 COPYING3. If not see +// . + +// 21.3.7.9 inserters and extractors + +// { dg-require-fileio "" } + +#include +#include +#include +#include +#include + +using namespace std; + +string prepare(string::size_type len, unsigned nchunks, char delim) +{ + string ret; + for (unsigned i = 0; i < nchunks; ++i) + { + for (string::size_type j = 0; j < len; ++j) + ret.push_back('a' + rand() % 26); + len *= 2; + ret.push_back(delim); + } + return ret; +} + +void check(istream& stream, const string& str, unsigned nchunks, char delim) +{ + bool test __attribute__((unused)) = true; + + string chunk; + string::size_type index = 0, index_new = 0; + unsigned n = 0; + + while (getline(stream, chunk, delim)) + { + index_new = str.find(delim, index); + VERIFY( !str.compare(index, index_new - index, chunk) ); + index = index_new + 1; + ++n; + } + VERIFY( stream.eof() ); + VERIFY( n == nchunks ); +} + +// istream& getline(istream&, string&, char) +void test01() +{ + const char filename[] = "inserters_extractors-2.txt"; + + const char delim = '|'; + const unsigned nchunks = 10; + const string data = prepare(777, nchunks, delim); + + ofstream ofstrm; + ofstrm.open(filename); + ofstrm.write(data.data(), data.size()); + ofstrm.close(); + + ifstream ifstrm; + ifstrm.open(filename); + check(ifstrm, data, nchunks, delim); + ifstrm.close(); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/11.cc b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/11.cc new file mode 100644 index 000000000..662311a88 --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/11.cc @@ -0,0 +1,85 @@ +// Copyright (C) 2004, 2005, 2006, 2007, 2009 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 3, 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 COPYING3. If not see +// . + +// 21.3.7.9 inserters and extractors + +// { dg-require-fileio "" } + +#include +#include +#include +#include +#include + +using namespace std; + +string prepare(string::size_type len, unsigned nchunks) +{ + string ret; + for (unsigned i = 0; i < nchunks; ++i) + { + for (string::size_type j = 0; j < len; ++j) + ret.push_back('a' + rand() % 26); + len *= 2; + ret.push_back(' '); + } + return ret; +} + +void check(istream& stream, const string& str, unsigned nchunks) +{ + bool test __attribute__((unused)) = true; + + string chunk; + string::size_type index = 0, index_new = 0; + unsigned n = 0; + + while (stream >> chunk) + { + index_new = str.find(' ', index); + VERIFY( !str.compare(index, index_new - index, chunk) ); + index = index_new + 1; + ++n; + } + VERIFY( stream.eof() ); + VERIFY( n == nchunks ); +} + +// istream& operator>>(istream&, string&) +void test01() +{ + const char filename[] = "inserters_extractors-3.txt"; + + const unsigned nchunks = 10; + const string data = prepare(666, nchunks); + + ofstream ofstrm; + ofstrm.open(filename); + ofstrm.write(data.data(), data.size()); + ofstrm.close(); + + ifstream ifstrm; + ifstrm.open(filename); + check(ifstrm, data, nchunks); + ifstrm.close(); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/28277.cc b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/28277.cc new file mode 100644 index 000000000..dfcacc089 --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/28277.cc @@ -0,0 +1,54 @@ +// 2006-10-12 Paolo Carlini + +// Copyright (C) 2006, 2007, 2008, 2009 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 3, 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 COPYING3. If not see +// . + +// { dg-options "-DWIDTH=200000" { target simulator } } + +// 21.3.7.9 inserters and extractors + +#include +#include +#include + +#ifndef WIDTH +#define WIDTH 20000000 +#endif + +// libstdc++/28277 +void test01() +{ + using namespace std; + bool test __attribute__((unused)) = true; + + ostringstream oss_01; + const string str_01(50, 'a'); + + oss_01.width(WIDTH); + const streamsize width = oss_01.width(); + + oss_01 << str_01; + + VERIFY( oss_01.good() ); + VERIFY( oss_01.str().size() == string::size_type(width) ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/4.cc b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/4.cc new file mode 100644 index 000000000..cb1713bc8 --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/4.cc @@ -0,0 +1,65 @@ +// 1999-07-01 bkoz + +// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2009 +// 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 +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, 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 COPYING3. If not see +// . + +// 21.3.7.9 inserters and extractors + +// NB: This file is predicated on sstreams, istreams, and ostreams +// working, not to mention other major details like char_traits, and +// all of the string class. + +#include +#include +#include + +// testing basic_stringbuf::xsputn via stress testing with large strings +// based on a bug report libstdc++ 9 +void test04(std::size_t size) +{ + bool test __attribute__((unused)) = true; + std::string str(size, 's'); + std::size_t expected_size = 2 * (size + 1); + std::ostringstream oss(str); + + // sanity checks + VERIFY( str.size() == size ); + VERIFY( oss.good() ); + + // stress test + oss << str << std::endl; + if (!oss.good()) + test = false; + + oss << str << std::endl; + if (!oss.good()) + test = false; + + VERIFY( str.size() == size ); + VERIFY( oss.good() ); + std::string str_tmp = oss.str(); + VERIFY( str_tmp.size() == expected_size ); +} + +int main() +{ + test04(1); // expected_size == 4 + test04(1000); // expected_size == 2002 + test04(10000); // expected_size == 20002 + return 0; +} diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/5.cc b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/5.cc new file mode 100644 index 000000000..109627325 --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/5.cc @@ -0,0 +1,88 @@ +// 1999-07-01 bkoz + +// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2009 +// 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 +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, 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 COPYING3. If not see +// . + +// 21.3.7.9 inserters and extractors + +// NB: This file is predicated on sstreams, istreams, and ostreams +// working, not to mention other major details like char_traits, and +// all of the string class. + +// { dg-require-fileio "" } + +#include +#include +#include +#include + +// testing basic_filebuf::xsputn via stress testing with large strings +// based on a bug report libstdc++ 9 +// mode == out +void test05(std::size_t size) +{ + bool test __attribute__((unused)) = true; + const char filename[] = "inserters_extractors-1.txt"; + const char fillc = 'f'; + std::ofstream ofs(filename); + std::string str(size, fillc); + + // sanity checks + VERIFY( str.size() == size ); + VERIFY( ofs.good() ); + + // stress test + ofs << str << std::endl; + if (!ofs.good()) + test = false; + + ofs << str << std::endl; + if (!ofs.good()) + test = false; + + VERIFY( str.size() == size ); + VERIFY( ofs.good() ); + + ofs.close(); + + // sanity check on the written file + std::ifstream ifs(filename); + std::size_t count = 0; + char c; + while (count <= (2 * size) + 4) + { + ifs >> c; + if (ifs.good() && c == fillc) + { + ++count; + c = '0'; + } + else + break; + } + + VERIFY( count == 2 * size ); +} + +int main() +{ + test05(1); + test05(1000); + test05(10000); + return 0; +} diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/6.cc b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/6.cc new file mode 100644 index 000000000..cc0e5d673 --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/6.cc @@ -0,0 +1,61 @@ +// 1999-07-01 bkoz + +// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2009 +// 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 +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, 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 COPYING3. If not see +// . + +// 21.3.7.9 inserters and extractors + +// NB: This file is predicated on sstreams, istreams, and ostreams +// working, not to mention other major details like char_traits, and +// all of the string class. + +#include +#include +#include + +// istringstream/stringbuf extractor properly size buffer based on +// actual, not allocated contents (string.size() vs. string.capacity()). +// http://gcc.gnu.org/ml/libstdc++/1999-q4/msg00049.html +void test06(void) +{ + bool test __attribute__((unused)) = true; + + typedef std::string::size_type size_type; + std::string str01("@silent"); + size_type i01 = str01.size(); + size_type i02 = str01.capacity(); + str01.erase(0, 1); + size_type i03 = str01.size(); + size_type i04 = str01.capacity(); + VERIFY( i01 - 1 == i03 ); + VERIFY( i02 >= i04 ); + + std::istringstream is(str01); + std::string str02; + is >> str02 >> std::ws; + size_type i05 = str02.size(); + size_type i06 = str02.capacity(); + VERIFY( i05 == i03 ); + VERIFY( i06 <= i04 ); +} + +int main() +{ + test06(); + return 0; +} diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/7.cc b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/7.cc new file mode 100644 index 000000000..c8ae3c580 --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/7.cc @@ -0,0 +1,53 @@ +// 1999-07-01 bkoz + +// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2009 +// 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 +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, 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 COPYING3. If not see +// . + +// 21.3.7.9 inserters and extractors + +// NB: This file is predicated on sstreams, istreams, and ostreams +// working, not to mention other major details like char_traits, and +// all of the string class. + +#include +#include +#include + +// http://gcc.gnu.org/ml/libstdc++/2000-q1/msg00085.html +// istream::operator>>(string) +// sets failbit +// NB: this is a defect in the standard. +void test07(void) +{ + bool test __attribute__((unused)) = true; + const std::string name("z6.cc"); + std::istringstream iss (name); + int i = 0; + std::string s; + while (iss >> s) + ++i; + + VERIFY( i < 3 ); + VERIFY( static_cast(iss.rdstate() & std::ios_base::failbit) ); +} + +int main() +{ + test07(); + return 0; +} diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/8.cc b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/8.cc new file mode 100644 index 000000000..4e008a369 --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/8.cc @@ -0,0 +1,53 @@ +// 1999-07-01 bkoz + +// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2009 +// 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 +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, 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 COPYING3. If not see +// . + +// 21.3.7.9 inserters and extractors + +// NB: This file is predicated on sstreams, istreams, and ostreams +// working, not to mention other major details like char_traits, and +// all of the string class. + +#include +#include +#include +#include + +// libstdc++/1019 +void test08() +{ + using namespace std; + + bool test __attribute__((unused)) = true; + istringstream istrm("enero:2001"); + int year; + char sep; + string month; + + istrm >> setw(5) >> month >> sep >> year; + VERIFY( month.size() == 5 ); + VERIFY( sep == ':' ); + VERIFY( year == 2001 ); +} + +int main() +{ + test08(); + return 0; +} diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/9.cc b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/9.cc new file mode 100644 index 000000000..29d3e7704 --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/9.cc @@ -0,0 +1,56 @@ +// 1999-07-01 bkoz + +// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2009 +// 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 +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, 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 COPYING3. If not see +// . + +// 21.3.7.9 inserters and extractors + +// NB: This file is predicated on sstreams, istreams, and ostreams +// working, not to mention other major details like char_traits, and +// all of the string class. + +#include +#include +#include +#include + +// libstdc++/2830 +void test09() +{ + bool test __attribute__((unused)) = true; + std::string blanks( 3, '\0'); + std::string foo = "peace"; + foo += blanks; + foo += "& love"; + + std::ostringstream oss1; + oss1 << foo; + VERIFY( oss1.str() == foo ); + + std::ostringstream oss2; + oss2.width(20); + oss2 << foo; + VERIFY( oss2.str() != foo ); + VERIFY( oss2.str().size() == 20 ); +} + +int main() +{ + test09(); + return 0; +} -- cgit v1.2.3