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. --- .../21_strings/basic_string/capacity/wchar_t/1.cc | 99 ++++++++++++++++++++++ .../basic_string/capacity/wchar_t/18654.cc | 55 ++++++++++++ .../21_strings/basic_string/capacity/wchar_t/2.cc | 42 +++++++++ .../basic_string/capacity/wchar_t/shrink_to_fit.cc | 42 +++++++++ 4 files changed, 238 insertions(+) create mode 100644 libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc create mode 100644 libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc create mode 100644 libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/2.cc create mode 100644 libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/shrink_to_fit.cc (limited to 'libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t') diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc new file mode 100644 index 000000000..427240235 --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc @@ -0,0 +1,99 @@ +// 1999-05-11 bkoz + +// Copyright (C) 1999, 2002, 2003, 2004, 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.3 string capacity + +#include +#include + +void test01() +{ + // POD types : resize, capacity, reserve + bool test __attribute__((unused)) = true; + std::wstring str01; + typedef std::wstring::size_type size_type_s; + + size_type_s sz01 = str01.capacity(); + str01.reserve(100); + size_type_s sz02 = str01.capacity(); + VERIFY( sz02 >= sz01 ); + VERIFY( sz02 >= 100 ); + str01.reserve(); + sz01 = str01.capacity(); + VERIFY( sz01 == 0 ); + + sz01 = str01.size() + 5; + str01.resize(sz01); + sz02 = str01.size(); + VERIFY( sz01 == sz02 ); + + sz01 = str01.size() - 5; + str01.resize(sz01); + sz02 = str01.size(); + VERIFY( sz01 == sz02 ); + + std::wstring str05(30, L'q'); + std::wstring str06 = str05; + str05 = str06 + str05; + VERIFY( str05.capacity() >= str05.size() ); + VERIFY( str06.capacity() >= str06.size() ); + + // POD types: size, length, max_size, clear(), empty() + bool b01; + std::wstring str011; + b01 = str01.empty(); + VERIFY( b01 == true ); + sz01 = str01.size(); + sz02 = str01.length(); + VERIFY( sz01 == sz02 ); + str01.c_str(); + sz01 = str01.size(); + sz02 = str01.length(); + VERIFY( sz01 == sz02 ); + + sz01 = str01.length(); + str01.c_str(); + str011 = str01 + L"_addendum_"; + str01.c_str(); + sz02 = str01.length(); + VERIFY( sz01 == sz02 ); + sz02 = str011.length(); + VERIFY( sz02 > sz01 ); + + // trickster allocator issues involved with these: + std::wstring str3 = L"8-chars_8-chars_"; + std::wstring str4 = str3 + L"7-chars"; + + sz01 = str01.size(); + sz02 = str01.max_size(); + VERIFY( sz02 >= sz01 ); + + sz01 = str01.size(); + str01.clear(); + b01 = str01.empty(); + VERIFY( b01 == true ); + sz02 = str01.size(); + VERIFY( sz01 >= sz02 ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc new file mode 100644 index 000000000..fd5117576 --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc @@ -0,0 +1,55 @@ +// 2004-11-29 Paolo Carlini + +// Copyright (C) 2004, 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.3 string capacity + +#include +#include + +// libstdc++/18654 +void test01() +{ + using namespace std; + bool test __attribute__((unused)) = true; + + typedef wstring::size_type size_type; + + // Our current implementation provides exact shrink-to-size + // and shrink-to-fit (in the future, maybe this will change + // for short strings). + const size_type minsize = 2 << 0; + const size_type maxsize = 2 << 20; + for (size_type i = minsize; i <= maxsize; i *= 2) + { + wstring str(i, L'x'); + str.reserve(3 * i); + + str.reserve(2 * i); + VERIFY( str.capacity() == 2 * i ); + + str.reserve(); + VERIFY( str.capacity() == i ); + } +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/2.cc new file mode 100644 index 000000000..564a3219f --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/2.cc @@ -0,0 +1,42 @@ +// 1999-05-11 bkoz + +// Copyright (C) 1999, 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.3 string capacity + +#include +#include + +// libstdc++/4548 +// http://gcc.gnu.org/ml/libstdc++/2001-11/msg00150.html +void test02() +{ + bool test __attribute__((unused)) = true; + + std::wstring str01 = L"twelve chars"; + // str01 becomes shared + std::wstring str02 = str01; + str01.reserve(1); + VERIFY( str01.capacity() == 12 ); +} + +int main() +{ + test02(); + return 0; +} diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/shrink_to_fit.cc b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/shrink_to_fit.cc new file mode 100644 index 000000000..88f7c0ab0 --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/shrink_to_fit.cc @@ -0,0 +1,42 @@ +// { dg-options "-std=gnu++0x" } + +// 2010-01-08 Paolo Carlini + +// Copyright (C) 2010 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 +// . + +#include +#include + +// libstdc++/42573 +void test01() +{ + bool test __attribute__((unused)) = true; + + std::wstring s(100, L'a'); + s.push_back(L'b'); + s.push_back(L'b'); + VERIFY( s.size() < s.capacity() ); + s.shrink_to_fit(); + VERIFY( s.size() == s.capacity() ); +} + +int main() +{ + test01(); + return 0; +} -- cgit v1.2.3