]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/2.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 21_strings / basic_string / operations / find / wchar_t / 2.cc
CommitLineData
eea5120f
PC
1// 1999-06-09 bkoz
2
8d9254fc 3// Copyright (C) 1994-2020 Free Software Foundation, Inc.
eea5120f
PC
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)
eea5120f
PC
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/>.
eea5120f
PC
19
20// 21.3.6.3 basic_string find_first_of
21
22#include <string>
23#include <testsuite_hooks.h>
24
118c8424 25void test02(void)
eea5120f 26{
eea5120f
PC
27 typedef std::wstring::size_type csize_type;
28 csize_type npos = std::wstring::npos;
29 csize_type csz01, csz02;
30
31 const wchar_t str_lit01[] = L"mave";
32 const std::wstring str01(L"mavericks, santa cruz");
33 std::wstring str02(str_lit01);
34 std::wstring str03(L"s, s");
35 std::wstring str04;
36
37 // size_type find_first_of(const wstring&, size_type pos = 0) const;
38 std::wstring str05(L"xena rulez");
39 csz01 = str01.find_first_of(str01);
40 VERIFY( csz01 == 0 );
41 csz01 = str01.find_first_of(str01, 4);
42 VERIFY( csz01 == 4 );
43 csz01 = str01.find_first_of(str02, 0);
44 VERIFY( csz01 == 0 );
45 csz01 = str01.find_first_of(str02, 3);
46 VERIFY( csz01 == 3 );
47 csz01 = str01.find_first_of(str03, 0);
48 VERIFY( csz01 == 8 );
49 csz01 = str01.find_first_of(str03, 3);
50 VERIFY( csz01 == 8 );
51 csz01 = str01.find_first_of(str03, 12);
52 VERIFY( csz01 == 16 );
53 csz01 = str01.find_first_of(str05, 0);
54 VERIFY( csz01 == 1 );
55 csz01 = str01.find_first_of(str05, 4);
56 VERIFY( csz01 == 4 );
57
58 // An empty string consists of no characters
59 // therefore it should be found at every point in a string,
60 // except beyond the end
61 // However, str1.find_first_of(str2,pos) finds the first character in
62 // str1 (starting at pos) that exists in str2, which is none for empty str2
63 csz01 = str01.find_first_of(str04, 0);
64 VERIFY( csz01 == npos );
65 csz01 = str01.find_first_of(str04, 5);
66 VERIFY( csz01 == npos );
67
68 // size_type find_first_of(const wchar_t* s, size_type pos, size_type n) const;
69 csz01 = str01.find_first_of(str_lit01, 0, 3);
70 VERIFY( csz01 == 0 );
71 csz01 = str01.find_first_of(str_lit01, 3, 0);
72 VERIFY( csz01 == npos );
73
74 // size_type find_first_of(const wchar_t* s, size_type pos = 0) const;
75 csz01 = str01.find_first_of(str_lit01);
76 VERIFY( csz01 == 0 );
77 csz01 = str01.find_first_of(str_lit01, 3);
78 VERIFY( csz01 == 3 );
79
80 // size_type find_first_of(wchar_t c, size_type pos = 0) const;
81 csz01 = str01.find_first_of(L'z');
82 csz02 = str01.size() - 1;
83 VERIFY( csz01 == csz02 );
eea5120f
PC
84}
85
86int main()
87{
88 test02();
89 return 0;
90}