summaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite/experimental/string_view/operations/substr/char/1.cc
diff options
context:
space:
mode:
authorEdward Smith-Rowland <emsr@gcc.gnu.org>2013-11-16 17:44:48 +0000
committerEdward Smith-Rowland <emsr@gcc.gnu.org>2013-11-16 17:44:48 +0000
commit77cba5af77ccf8fc66f3309de666daa8a4deb623 (patch)
tree514d119f9b28a549f0a74a9bf155e1defe856fd4 /libstdc++-v3/testsuite/experimental/string_view/operations/substr/char/1.cc
parent0bc69b81721b14fa272b7fe5001a50a5e47d20a6 (diff)
downloadgcc-77cba5af77ccf8fc66f3309de666daa8a4deb623.tar.gz
Implement N3762 string_view: a non-owning reference to a string.
2013-11-16 Edward Smith-Rowland <3dw4rd@verizon.net> Implement N3762 string_view: a non-owning reference to a string. * include/Makefile.am: Add string_view and string_view.tcc. * include/Makefile.in: Regenerate. * include/experimental/string_view: Implement basic_string_view. * include/experimental/string_view.tcc: Implement basic_string_view. * testsuite/experimental/string_view/capacity/1.cc: New. * testsuite/experimental/string_view/cons/char/1.cc: New. * testsuite/experimental/string_view/cons/char/2.cc: New. * testsuite/experimental/string_view/cons/char/3.cc: New. * testsuite/experimental/string_view/cons/wchar_t/1.cc: New. * testsuite/experimental/string_view/cons/wchar_t/2.cc: New. * testsuite/experimental/string_view/cons/wchar_t/3.cc: New. * testsuite/experimental/string_view/element_access/char/1.cc: New. * testsuite/experimental/string_view/element_access/char/2.cc: New. * testsuite/experimental/string_view/element_access/char/empty.cc: New. * testsuite/experimental/string_view/element_access/char/front_back.cc: New. * testsuite/experimental/string_view/element_access/wchar_t/1.cc: New. * testsuite/experimental/string_view/element_access/wchar_t/2.cc: New. * testsuite/experimental/string_view/element_access/wchar_t/empty.cc: New. * testsuite/experimental/string_view/element_access/wchar_t/ front_back.cc: New. * testsuite/experimental/string_view/include.cc: New. * testsuite/experimental/string_view/inserters/char/1.cc: New. * testsuite/experimental/string_view/inserters/char/2.cc: New. * testsuite/experimental/string_view/inserters/char/3.cc: New. * testsuite/experimental/string_view/inserters/pod/10081-out.cc: New. * testsuite/experimental/string_view/inserters/wchar_t/1.cc: New. * testsuite/experimental/string_view/inserters/wchar_t/2.cc: New. * testsuite/experimental/string_view/inserters/wchar_t/3.cc: New. * testsuite/experimental/string_view/literals/types.cc: New. * testsuite/experimental/string_view/literals/values.cc: New. * testsuite/experimental/string_view/modifiers/remove_prefix/char/1.cc: New. * testsuite/experimental/string_view/modifiers/remove_prefix/wchar_t/ 1.cc: New. * testsuite/experimental/string_view/modifiers/remove_suffix/char/1.cc: New. * testsuite/experimental/string_view/modifiers/remove_suffix/wchar_t/ 1.cc: New. * testsuite/experimental/string_view/operations/compare/char/1.cc: New. * testsuite/experimental/string_view/operations/compare/char/13650.cc: New. * testsuite/experimental/string_view/operations/compare/wchar_t/1.cc: New. * testsuite/experimental/string_view/operations/compare/wchar_t/ 13650.cc: New. * testsuite/experimental/string_view/operations/data/char/1.cc: New. * testsuite/experimental/string_view/operations/data/wchar_t/1.cc: New. * testsuite/experimental/string_view/operations/find/char/1.cc: New. * testsuite/experimental/string_view/operations/find/char/2.cc: New. * testsuite/experimental/string_view/operations/find/char/3.cc: New. * testsuite/experimental/string_view/operations/find/char/4.cc: New. * testsuite/experimental/string_view/operations/find/wchar_t/1.cc: New. * testsuite/experimental/string_view/operations/find/wchar_t/2.cc: New. * testsuite/experimental/string_view/operations/find/wchar_t/3.cc: New. * testsuite/experimental/string_view/operations/find/wchar_t/4.cc: New. * testsuite/experimental/string_view/operations/rfind/char/1.cc: New. * testsuite/experimental/string_view/operations/rfind/char/2.cc: New. * testsuite/experimental/string_view/operations/rfind/char/3.cc: New. * testsuite/experimental/string_view/operations/rfind/wchar_t/1.cc: New. * testsuite/experimental/string_view/operations/rfind/wchar_t/2.cc: New. * testsuite/experimental/string_view/operations/rfind/wchar_t/3.cc: New. * testsuite/experimental/string_view/operations/substr/char/1.cc: New. * testsuite/experimental/string_view/operations/substr/wchar_t/1.cc: New. * testsuite/experimental/string_view/operators/char/2.cc: New. * testsuite/experimental/string_view/operators/wchar_t/2.cc: New. * testsuite/experimental/string_view/range_access/char/1.cc: New. * testsuite/experimental/string_view/range_access/wchar_t/1.cc: New. * testsuite/experimental/string_view/requirements/ explicit_instantiation/1.cc: New. * testsuite/experimental/string_view/requirements/ explicit_instantiation/char/1.cc: New. * testsuite/experimental/string_view/requirements/ explicit_instantiation/char16_t/1.cc: New. * testsuite/experimental/string_view/requirements/ explicit_instantiation/char32_t/1.cc: New. * testsuite/experimental/string_view/requirements/ explicit_instantiation/wchar_t/1.cc: New. * testsuite/experimental/string_view/requirements/typedefs.cc: New. * testsuite/experimental/string_view/types/1.cc: New. From-SVN: r204902
Diffstat (limited to 'libstdc++-v3/testsuite/experimental/string_view/operations/substr/char/1.cc')
-rw-r--r--libstdc++-v3/testsuite/experimental/string_view/operations/substr/char/1.cc85
1 files changed, 85 insertions, 0 deletions
diff --git a/libstdc++-v3/testsuite/experimental/string_view/operations/substr/char/1.cc b/libstdc++-v3/testsuite/experimental/string_view/operations/substr/char/1.cc
new file mode 100644
index 00000000000..007d8b16627
--- /dev/null
+++ b/libstdc++-v3/testsuite/experimental/string_view/operations/substr/char/1.cc
@@ -0,0 +1,85 @@
+// { dg-options "-std=gnu++1y" }
+
+// Copyright (C) 2013 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/>.
+
+// basic_string_view::substr
+
+#include <experimental/string_view>
+#include <stdexcept>
+#include <testsuite_hooks.h>
+
+bool
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ typedef std::experimental::string_view::size_type csize_type;
+ typedef std::experimental::string_view::const_reference cref;
+ typedef std::experimental::string_view::reference ref;
+ csize_type csz01;
+
+ const char str_lit01[] = "rockaway, pacifica";
+ const std::experimental::string_view str01(str_lit01);
+ std::experimental::string_view str02;
+
+ // basic_string_view<charT, _Traits, _Alloc>
+ // substr(size_type pos = 0, size_type n = npos) const;
+ csz01 = str01.size();
+ str02 = str01.substr(0, 1);
+ VERIFY( str02 == "r" );
+ str02 = str01.substr(10);
+ VERIFY( str02 == "pacifica" );
+
+ try
+ {
+ str02 = str01.substr(csz01 + 1);
+ VERIFY( false );
+ }
+ catch(std::out_of_range& fail)
+ {
+ VERIFY( true );
+ }
+ catch(...)
+ {
+ VERIFY( false );
+ }
+
+ try
+ {
+ str02 = str01.substr(csz01);
+ VERIFY( str02.size() == 0 );
+ }
+ catch(std::out_of_range& fail)
+ {
+ VERIFY( true ); // No terminating null in basic_string_view
+ }
+ catch(...)
+ {
+ VERIFY( false );
+ }
+
+ return test;
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}