diff options
author | Ville Voutilainen <ville.voutilainen@gmail.com> | 2016-07-28 15:15:26 +0000 |
---|---|---|
committer | Ville Voutilainen <ville.voutilainen@gmail.com> | 2016-07-28 15:15:26 +0000 |
commit | 80daa24cddbfdc3e541084119eae209fe1f59d20 (patch) | |
tree | f14b086558dff5bf4964880f66d0b1f7d272d7ac /libstdc++-v3/testsuite/21_strings/basic_string/operations | |
parent | a4d12f92155f2298540798d822483ced5376f8f9 (diff) |
Implement std::string_view and P0254r2,
Integrating std::string_view and std::string.
* include/Makefile.am: Add string_view and string_view.tcc
to the exported headers.
* include/Makefile.in: Likewise.
* include/bits/basic_string.h: Include <string_view> in C++17 mode.
(__sv_type): New.
(basic_string(__sv_type, const _Alloc&)): Likewise.
(operator=(__sv_type)): Likewise.
(operator __sv_type()): Likewise.
(operator+=(__sv_type)): Likewise.
(append(__sv_type __sv)): Likewise.
(append(__sv_type, size_type, size_type)): Likewise.
(assign(__sv_type)): Likewise.
(assign(__sv_type, size_type, size_type)): Likewise.
(insert(size_type, __sv_type)): Likewise.
(insert(size_type, __sv_type, size_type, size_type)): Likewise.
(replace(size_type, size_type, __sv_type)): Likewise.
(replace(size_type, size_type, __sv_type, size_type, size_type)):
Likewise.
(replace(const_iterator, const_iterator, __sv_type)): Likewise.
(find(__sv_type, size_type)): Likewise.
(rfind(__sv_type, size_type)): Likewise.
(find_first_of(__sv_type, size_type)): Likewise.
(find_last_of(__sv_type, size_type)): Likewise.
(find_first_not_of(__sv_type, size_type)): Likewise.
(find_last_not_of(__sv_type, size_type)): Likewise.
(compare(__sv_type)): Likewise.
(compare(size_type, size_type, __sv_type)): Likewise.
(compare(size_type, size_type, __sv_type, size_type, size_type)):
Likewise.
* include/bits/string_view.tcc: New.
* include/std/string_view: Likewise.
* testsuite/21_strings/basic_string/cons/char/7.cc: Likewise.
* testsuite/21_strings/basic_string/cons/wchar_t/7.cc: Likewise.
* testsuite/21_strings/basic_string/modifiers/append/char/4.cc:
Likewise.
* testsuite/21_strings/basic_string/modifiers/append/wchar_t/4.cc:
Likewise.
* testsuite/21_strings/basic_string/modifiers/assign/char/4.cc:
Likewise.
* testsuite/21_strings/basic_string/modifiers/assign/wchar_t/4.cc:
Likewise.
* testsuite/21_strings/basic_string/modifiers/insert/char/3.cc:
Likewise.
* testsuite/21_strings/basic_string/modifiers/insert/wchar_t/3.cc:
Likewise.
* testsuite/21_strings/basic_string/modifiers/replace/char/7.cc:
Likewise.
* testsuite/21_strings/basic_string/modifiers/replace/wchar_t/7.cc:
Likewise.
* testsuite/21_strings/basic_string/operations/compare/char/2.cc:
Likewise.
* testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc:
Likewise.
* testsuite/21_strings/basic_string/operations/find/char/5.cc:
Likewise.
* testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc:
Likewise.
* testsuite/21_strings/basic_string/operators/char/5.cc: Likewise.
* testsuite/21_strings/basic_string/operators/wchar_t/5.cc: Likewise.
* testsuite/21_strings/basic_string_view/capacity/1.cc: Likewise.
* testsuite/21_strings/basic_string_view/cons/char/1.cc: Likewise.
* testsuite/21_strings/basic_string_view/cons/char/2.cc: Likewise.
* testsuite/21_strings/basic_string_view/cons/char/3.cc: Likewise.
* testsuite/21_strings/basic_string_view/cons/wchar_t/1.cc: Likewise.
* testsuite/21_strings/basic_string_view/cons/wchar_t/2.cc: Likewise.
* testsuite/21_strings/basic_string_view/cons/wchar_t/3.cc: Likewise.
* testsuite/21_strings/basic_string_view/element_access/char/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/element_access/char/2.cc:
Likewise.
* testsuite/21_strings/basic_string_view/element_access/char/empty.cc:
Likewise.
* testsuite/21_strings/basic_string_view/element_access/char/front_back.cc:
Likewise.
* testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc:
Likewise.
* testsuite/21_strings/basic_string_view/element_access/wchar_t/empty.cc:
Likewise.
* testsuite/21_strings/basic_string_view/element_access/wchar_t/front_back.cc:
Likewise.
* testsuite/21_strings/basic_string_view/include.cc: Likewise.
* testsuite/21_strings/basic_string_view/inserters/char/1.cc: Likewise.
* testsuite/21_strings/basic_string_view/inserters/char/2.cc: Likewise.
* testsuite/21_strings/basic_string_view/inserters/char/3.cc: Likewise.
* testsuite/21_strings/basic_string_view/inserters/pod/10081-out.cc:
Likewise.
* testsuite/21_strings/basic_string_view/inserters/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc:
Likewise.
* testsuite/21_strings/basic_string_view/inserters/wchar_t/3.cc:
Likewise.
* testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/compare/char/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/compare/char/13650.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/compare/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/compare/wchar_t/13650.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/copy/char/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/data/char/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/data/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/find/char/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/find/char/2.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/find/char/3.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/find/char/4.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/find/wchar_t/4.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/rfind/char/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/rfind/char/2.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/rfind/char/3.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/2.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/3.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/string_conversion/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/substr/char/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operators/char/2.cc: Likewise.
* testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc:
Likewise.
* testsuite/21_strings/basic_string_view/range_access/char/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/requirements/typedefs.cc:
Likewise.
* testsuite/21_strings/basic_string_view/typedefs.cc: Likewise.
* testsuite/21_strings/basic_string_view/types/1.cc: Likewise.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@238823 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/testsuite/21_strings/basic_string/operations')
4 files changed, 288 insertions, 0 deletions
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/2.cc new file mode 100644 index 00000000000..65474d0e50e --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/2.cc @@ -0,0 +1,56 @@ +// { dg-options "-std=gnu++17" } + +// Copyright (C) 2016 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 +// <http://www.gnu.org/licenses/>. + +// [string::compare] + +#include <string> +#include <testsuite_hooks.h> + +void +test03() +{ + bool test __attribute__((unused)) = true; + std::string_view str1("foobar"); + std::string str2("foobar"); + + auto x = str2.compare(str1); + VERIFY (x == 0); + + str1 = "bar"; + x = str2.compare(str1); + VERIFY (x > 0); + + str1 = "foobar"; + str2 = "bar"; + x = str2.compare(str1); + VERIFY (x < 0); + x = str2.compare(0, 3, str1, 3, 3); + VERIFY (x == 0); + + str1 = "bar"; + str2 = "foobar"; + x = str2.compare(3, 3, str1); + VERIFY (x == 0); +} + +int main() +{ + test03(); + return 0; +} diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc new file mode 100644 index 00000000000..f7a976070bf --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc @@ -0,0 +1,56 @@ +// { dg-options "-std=gnu++17" } + +// Copyright (C) 2016 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 +// <http://www.gnu.org/licenses/>. + +// [string::compare] + +#include <string> +#include <testsuite_hooks.h> + +void +test03() +{ + bool test __attribute__((unused)) = true; + std::wstring_view str1(L"foobar"); + std::wstring str2(L"foobar"); + + auto x = str2.compare(str1); + VERIFY (x == 0); + + str1 = L"bar"; + x = str2.compare(str1); + VERIFY (x > 0); + + str1 = L"foobar"; + str2 = L"bar"; + x = str2.compare(str1); + VERIFY (x < 0); + x = str2.compare(0, 3, str1, 3, 3); + VERIFY (x == 0); + + str1 = L"bar"; + str2 = L"foobar"; + x = str2.compare(3, 3, str1); + VERIFY (x == 0); +} + +int main() +{ + test03(); + return 0; +} diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/5.cc b/libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/5.cc new file mode 100644 index 00000000000..930c61a9b5f --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/5.cc @@ -0,0 +1,88 @@ +// { dg-options "-std=gnu++17" } + +// Copyright (C) 2016 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 +// <http://www.gnu.org/licenses/>. + +// [string::find] +// [string::rfind] +// [string::find.first.of] +// [string::find.last.of] +// [string::find.first.not.of] +// [string::find.last.not.of] + +#include <string> +#include <testsuite_hooks.h> + +void +test03() +{ + bool test __attribute__((unused)) = true; + std::string_view str1("bar"); + std::string str2("foobar"); + + auto x = str2.find(str1); + VERIFY (x == 3); + + x = str2.find(str1, 1); + VERIFY (x == 3); + + str2 = "barbar"; + x = str2.rfind(str1); + VERIFY (x == 3); + + x = str2.rfind(str1, 0); + VERIFY (x == 0); + + x = str2.rfind(str1, 3); + VERIFY (x == 3); + + str2 = "foobarxyz"; + str1 = "zyx"; + x = str2.find_first_of(str1); + VERIFY (x == 6); + + str2 = "foobarxyzfooxyz"; + x = str2.find_first_of(str1); + VERIFY (x == 6); + x = str2.find_first_of(str1, 9); + VERIFY (x == 12); + x = str2.find_last_of(str1); + VERIFY (x == 14); + x = str2.find_last_of(str1, 10); + VERIFY (x == 8); + + str2 = "abcabcabcxxx"; + str1 = "cba"; + x = str2.find_first_not_of(str1); + VERIFY (x == 9); + + str2 = "abcabcabcxxxabcabcxxx"; + x = str2.find_first_not_of(str1, 12); + VERIFY (x == 18); + + str1 = "x"; + x = str2.find_last_not_of(str1); + VERIFY (x == 17); + x = str2.find_last_not_of(str1, 11); + VERIFY (x == 8); +} + +int main() +{ + test03(); + return 0; +} diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc b/libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc new file mode 100644 index 00000000000..701cc4cca1b --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc @@ -0,0 +1,88 @@ +// { dg-options "-std=gnu++17" } + +// Copyright (C) 2016 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 +// <http://www.gnu.org/licenses/>. + +// [string::find] +// [string::rfind] +// [string::find.first.of] +// [string::find.last.of] +// [string::find.first.not.of] +// [string::find.last.not.of] + +#include <string> +#include <testsuite_hooks.h> + +void +test03() +{ + bool test __attribute__((unused)) = true; + std::wstring_view str1(L"bar"); + std::wstring str2(L"foobar"); + + auto x = str2.find(str1); + VERIFY (x == 3); + + x = str2.find(str1, 1); + VERIFY (x == 3); + + str2 = L"barbar"; + x = str2.rfind(str1); + VERIFY (x == 3); + + x = str2.rfind(str1, 0); + VERIFY (x == 0); + + x = str2.rfind(str1, 3); + VERIFY (x == 3); + + str2 = L"foobarxyz"; + str1 = L"zyx"; + x = str2.find_first_of(str1); + VERIFY (x == 6); + + str2 = L"foobarxyzfooxyz"; + x = str2.find_first_of(str1); + VERIFY (x == 6); + x = str2.find_first_of(str1, 9); + VERIFY (x == 12); + x = str2.find_last_of(str1); + VERIFY (x == 14); + x = str2.find_last_of(str1, 10); + VERIFY (x == 8); + + str2 = L"abcabcabcxxx"; + str1 = L"cba"; + x = str2.find_first_not_of(str1); + VERIFY (x == 9); + + str2 = L"abcabcabcxxxabcabcxxx"; + x = str2.find_first_not_of(str1, 12); + VERIFY (x == 18); + + str1 = L"x"; + x = str2.find_last_not_of(str1); + VERIFY (x == 17); + x = str2.find_last_not_of(str1, 11); + VERIFY (x == 8); +} + +int main() +{ + test03(); + return 0; +} |