]>
Commit | Line | Data |
---|---|---|
913c27bf BV |
1 | // 2000-06-22 -=dbv=- (shamelessy copied from bkoz' find.cc) |
2 | ||
8d9254fc | 3 | // Copyright (C) 2000-2020 Free Software Foundation, Inc. |
913c27bf BV |
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) |
913c27bf BV |
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/>. | |
913c27bf BV |
19 | |
20 | #include <string> | |
fe413112 | 21 | #include <testsuite_hooks.h> |
913c27bf BV |
22 | |
23 | // 21.3.6.2 basic_string rfind | |
118c8424 | 24 | void test01(void) |
913c27bf | 25 | { |
61f1ed59 PC |
26 | typedef std::wstring::size_type csize_type; |
27 | typedef std::wstring::const_reference cref; | |
28 | typedef std::wstring::reference ref; | |
29 | csize_type npos = std::wstring::npos; | |
913c27bf BV |
30 | csize_type csz01, csz02; |
31 | ||
61f1ed59 PC |
32 | const wchar_t str_lit01[] = L"mave"; |
33 | const std::wstring str01(L"mavericks, santa cruz"); | |
34 | std::wstring str02(str_lit01); | |
35 | std::wstring str03(L"s, s"); | |
36 | std::wstring str04; | |
913c27bf | 37 | |
61f1ed59 | 38 | // size_type rfind(const wstring&, size_type pos = 0) const; |
913c27bf | 39 | csz01 = str01.rfind(str01); |
aa1b2f7d | 40 | VERIFY( csz01 == 0 ); |
913c27bf | 41 | csz01 = str01.rfind(str01, 4); |
aa1b2f7d | 42 | VERIFY( csz01 == 0 ); |
913c27bf | 43 | csz01 = str01.rfind(str02,3); |
aa1b2f7d | 44 | VERIFY( csz01 == 0 ); |
913c27bf | 45 | csz01 = str01.rfind(str02); |
aa1b2f7d | 46 | VERIFY( csz01 == 0 ); |
913c27bf | 47 | csz01 = str01.rfind(str03); |
aa1b2f7d | 48 | VERIFY( csz01 == 8 ); |
913c27bf | 49 | csz01 = str01.rfind(str03, 3); |
aa1b2f7d | 50 | VERIFY( csz01 == npos ); |
913c27bf | 51 | csz01 = str01.rfind(str03, 12); |
aa1b2f7d | 52 | VERIFY( csz01 == 8 ); |
913c27bf BV |
53 | |
54 | // An empty string consists of no characters | |
55 | // therefore it should be found at every point in a string, | |
56 | // except beyond the end | |
57 | csz01 = str01.rfind(str04, 0); | |
aa1b2f7d | 58 | VERIFY( csz01 == 0 ); |
913c27bf | 59 | csz01 = str01.rfind(str04, 5); |
aa1b2f7d | 60 | VERIFY( csz01 == 5 ); |
913c27bf | 61 | csz01 = str01.rfind(str04, str01.size()); |
aa1b2f7d | 62 | VERIFY( csz01 == str01.size() ); |
913c27bf | 63 | csz01 = str01.rfind(str04, str01.size()+1); |
aa1b2f7d | 64 | VERIFY( csz01 == str01.size() ); |
913c27bf | 65 | |
61f1ed59 | 66 | // size_type rfind(const wchar_t* s, size_type pos, size_type n) const; |
913c27bf | 67 | csz01 = str01.rfind(str_lit01, 0, 3); |
aa1b2f7d | 68 | VERIFY( csz01 == 0 ); |
913c27bf | 69 | csz01 = str01.rfind(str_lit01, 3, 0); |
aa1b2f7d | 70 | VERIFY( csz01 == 3 ); |
913c27bf | 71 | |
61f1ed59 | 72 | // size_type rfind(const wchar_t* s, size_type pos = 0) const; |
913c27bf | 73 | csz01 = str01.rfind(str_lit01); |
aa1b2f7d | 74 | VERIFY( csz01 == 0 ); |
913c27bf | 75 | csz01 = str01.rfind(str_lit01, 3); |
aa1b2f7d | 76 | VERIFY( csz01 == 0 ); |
913c27bf | 77 | |
61f1ed59 PC |
78 | // size_type rfind(wchar_t c, size_type pos = 0) const; |
79 | csz01 = str01.rfind(L'z'); | |
913c27bf | 80 | csz02 = str01.size() - 1; |
aa1b2f7d | 81 | VERIFY( csz01 == csz02 ); |
61f1ed59 | 82 | csz01 = str01.rfind(L'/'); |
aa1b2f7d | 83 | VERIFY( csz01 == npos ); |
913c27bf BV |
84 | } |
85 | ||
913c27bf BV |
86 | int main() |
87 | { | |
88 | test01(); | |
04d930e6 | 89 | return 0; |
913c27bf | 90 | } |