1// 2003-05-04  Paolo Carlini  <pcarlini@unitus.it>
2
3// Copyright (C) 2003, 2005 Free Software Foundation, Inc.
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
8// Free Software Foundation; either version 2, or (at your option)
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
17// with this library; see the file COPYING.  If not, write to the Free
18// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
19// USA.
20
21// 21.3.6.5 basic_string find_first_not_of
22
23#include <string>
24#include <testsuite_hooks.h>
25
26bool test03(void)
27{
28  bool test __attribute__((unused)) = true;
29  typedef std::wstring::size_type csize_type;
30  csize_type npos = std::wstring::npos;
31  csize_type csz01;
32
33  const std::wstring str01(L"Bob Rock, per me");
34  const wchar_t str_lit01[] = L"Bob Rock";
35  std::wstring str02(L"ovvero Trivi");
36  std::wstring str03(str_lit01);
37  std::wstring str04;
38
39  // size_type find_first_not_of(const string&, size_type pos = 0) const;
40  csz01 = str01.find_first_not_of(str01);
41  VERIFY( csz01 == npos );
42  csz01 = str01.find_first_not_of(str02, 0);
43  VERIFY( csz01 == 0 );
44  csz01 = str01.find_first_not_of(str02, 10);
45  VERIFY( csz01 == 10 );
46  csz01 = str01.find_first_not_of(str02, 12);
47  VERIFY( csz01 == 14 );
48  csz01 = str01.find_first_not_of(str03, 0);
49  VERIFY( csz01 == 8 );
50  csz01 = str01.find_first_not_of(str03, 15);
51  VERIFY( csz01 == 15 );
52  csz01 = str01.find_first_not_of(str03, 16);
53  VERIFY( csz01 == npos );
54  csz01 = str01.find_first_not_of(str04, 0);
55  VERIFY( csz01 == 0 );
56  csz01 = str01.find_first_not_of(str04, 12);
57  VERIFY( csz01 == 12 );
58  csz01 = str03.find_first_not_of(str01, 0);
59  VERIFY( csz01 == npos );
60  csz01 = str04.find_first_not_of(str02, 0);
61  VERIFY( csz01 == npos );
62
63  // size_type find_first_not_of(const char* s, size_type pos, size_type n) const;
64  csz01 = str01.find_first_not_of(str_lit01, 0, 0);
65  VERIFY( csz01 == 0 );
66  csz01 = str01.find_first_not_of(str_lit01, 0, 8);
67  VERIFY( csz01 == 8 );
68  csz01 = str01.find_first_not_of(str_lit01, 10, 0);
69  VERIFY( csz01 == 10 );
70
71  // size_type find_first_not_of(const char* s, size_type pos = 0) const;
72  csz01 = str01.find_first_not_of(str_lit01);
73  VERIFY( csz01 == 8 );
74  csz01 = str02.find_first_not_of(str_lit01, 2);
75  VERIFY( csz01 == 2 );
76
77  // size_type find_first_not_of(char c, size_type pos = 0) const;
78  csz01 = str01.find_first_not_of(L'B');
79  VERIFY( csz01 == 1 );
80  csz01 = str01.find_first_not_of(L'o', 1);
81  VERIFY( csz01 == 2 );
82  csz01 = str02.find_first_not_of(L'z');
83  VERIFY( csz01 == 0 );
84  csz01 = str04.find_first_not_of(L'S');
85  VERIFY( csz01 == npos );
86  return test;
87}
88
89int main()
90{
91  test03();
92  return 0;
93}
94