]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/21_strings/basic_string/operations/substr/char.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 21_strings / basic_string / operations / substr / char.cc
CommitLineData
b2dad0e3
BK
1// 1999-06-10 bkoz
2
a945c346 3// Copyright (C) 1999-2024 Free Software Foundation, Inc.
b2dad0e3
BK
4//
5// This file is part of the GNU ISO C++ Library. This library is free
6// software; you can redistribute it and/or modify it under the
7// terms of the GNU General Public License as published by the
748086b7 8// Free Software Foundation; either version 3, or (at your option)
b2dad0e3
BK
9// any later version.
10
11// This library is distributed in the hope that it will be useful,
12// but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14// GNU General Public License for more details.
15
16// You should have received a copy of the GNU General Public License along
748086b7
JJ
17// with this library; see the file COPYING3. If not see
18// <http://www.gnu.org/licenses/>.
b2dad0e3
BK
19
20// 21.3.6.7 basic_string::substr
21
22#include <string>
23#include <stdexcept>
fe413112 24#include <testsuite_hooks.h>
b2dad0e3 25
118c8424 26void test01(void)
b2dad0e3 27{
b2dad0e3
BK
28 typedef std::string::size_type csize_type;
29 typedef std::string::const_reference cref;
30 typedef std::string::reference ref;
11f10e6b 31 csize_type csz01;
b2dad0e3
BK
32
33 const char str_lit01[] = "rockaway, pacifica";
34 const std::string str01(str_lit01);
35 std::string str02;
36
37 // basic_string<charT, _Traits, _Alloc>
38 // substr(size_type pos = 0, size_type n = npos) const;
39 csz01 = str01.size();
40 str02 = str01.substr(0, 1);
aa1b2f7d 41 VERIFY( str02 == "r" );
b2dad0e3 42 str02 = str01.substr(10);
aa1b2f7d 43 VERIFY( str02 == "pacifica" );
b2dad0e3
BK
44
45 try {
46 str02 = str01.substr(csz01 + 1);
aa1b2f7d 47 VERIFY( false );
b2dad0e3
BK
48 }
49 catch(std::out_of_range& fail) {
aa1b2f7d 50 VERIFY( true );
b2dad0e3
BK
51 }
52 catch(...) {
aa1b2f7d 53 VERIFY( false );
b2dad0e3
BK
54 }
55
56 try {
57 str02 = str01.substr(csz01);
aa1b2f7d 58 VERIFY( str02.size() == 0 );
b2dad0e3
BK
59 }
60 catch(std::out_of_range& fail) {
aa1b2f7d 61 VERIFY( false );
b2dad0e3
BK
62 }
63 catch(...) {
aa1b2f7d 64 VERIFY( false );
b2dad0e3 65 }
b2dad0e3
BK
66}
67
68int main()
69{
70 test01();
04d930e6 71 return 0;
b2dad0e3 72}