1 | // Copyright 2021 Peter Dimov |
2 | // Distributed under the Boost Software License, Version 1.0. |
3 | // https://www.boost.org/LICENSE_1_0.txt |
4 | |
5 | #include <boost/core/detail/string_view.hpp> |
6 | #include <boost/core/lightweight_test.hpp> |
7 | #include <algorithm> |
8 | #include <cstddef> |
9 | |
10 | int main() |
11 | { |
12 | std::size_t const npos = boost::core::string_view::npos; |
13 | |
14 | { |
15 | boost::core::string_view sv( "" ); |
16 | |
17 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view() ), npos ); |
18 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view(), 1 ), npos ); |
19 | |
20 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "" ) ), npos ); |
21 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "" ), 1 ), npos ); |
22 | |
23 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "1" ) ), npos ); |
24 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "1" ), 1 ), npos ); |
25 | |
26 | BOOST_TEST_EQ( sv.find_last_not_of( '1' ), npos ); |
27 | BOOST_TEST_EQ( sv.find_last_not_of( '1', 1 ), npos ); |
28 | |
29 | BOOST_TEST_EQ( sv.find_last_not_of( "" ), npos ); |
30 | BOOST_TEST_EQ( sv.find_last_not_of( "" , 1 ), npos ); |
31 | |
32 | BOOST_TEST_EQ( sv.find_last_not_of( "1" ), npos ); |
33 | BOOST_TEST_EQ( sv.find_last_not_of( "1" , 1 ), npos ); |
34 | |
35 | BOOST_TEST_EQ( sv.find_last_not_of( "12" , 0, 0 ), npos ); |
36 | BOOST_TEST_EQ( sv.find_last_not_of( "12" , 1, 0 ), npos ); |
37 | |
38 | BOOST_TEST_EQ( sv.find_last_not_of( "12" , 0, 1 ), npos ); |
39 | BOOST_TEST_EQ( sv.find_last_not_of( "12" , 1, 1 ), npos ); |
40 | |
41 | BOOST_TEST_EQ( sv.find_last_not_of( "12" , 0, 2 ), npos ); |
42 | BOOST_TEST_EQ( sv.find_last_not_of( "12" , 1, 2 ), npos ); |
43 | } |
44 | |
45 | { |
46 | boost::core::wstring_view sv( L"" ); |
47 | |
48 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view() ), npos ); |
49 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view(), 1 ), npos ); |
50 | |
51 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"" ) ), npos ); |
52 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"" ), 1 ), npos ); |
53 | |
54 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"1" ) ), npos ); |
55 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"1" ), 1 ), npos ); |
56 | |
57 | BOOST_TEST_EQ( sv.find_last_not_of( L'1' ), npos ); |
58 | BOOST_TEST_EQ( sv.find_last_not_of( L'1', 1 ), npos ); |
59 | |
60 | BOOST_TEST_EQ( sv.find_last_not_of( L"" ), npos ); |
61 | BOOST_TEST_EQ( sv.find_last_not_of( L"" , 1 ), npos ); |
62 | |
63 | BOOST_TEST_EQ( sv.find_last_not_of( L"1" ), npos ); |
64 | BOOST_TEST_EQ( sv.find_last_not_of( L"1" , 1 ), npos ); |
65 | |
66 | BOOST_TEST_EQ( sv.find_last_not_of( L"12" , 0, 0 ), npos ); |
67 | BOOST_TEST_EQ( sv.find_last_not_of( L"12" , 1, 0 ), npos ); |
68 | |
69 | BOOST_TEST_EQ( sv.find_last_not_of( L"12" , 0, 1 ), npos ); |
70 | BOOST_TEST_EQ( sv.find_last_not_of( L"12" , 1, 1 ), npos ); |
71 | |
72 | BOOST_TEST_EQ( sv.find_last_not_of( L"12" , 0, 2 ), npos ); |
73 | BOOST_TEST_EQ( sv.find_last_not_of( L"12" , 1, 2 ), npos ); |
74 | } |
75 | |
76 | { |
77 | boost::core::string_view sv( "123123" ); |
78 | |
79 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view(), 0 ), 0 ); |
80 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view(), 1 ), 1 ); |
81 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view(), 2 ), 2 ); |
82 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view(), 3 ), 3 ); |
83 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view(), 4 ), 4 ); |
84 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view(), 5 ), 5 ); |
85 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view(), 6 ), 5 ); |
86 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view(), 7 ), 5 ); |
87 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view() ), 5 ); |
88 | |
89 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "" ), 0 ), 0 ); |
90 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "" ), 1 ), 1 ); |
91 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "" ), 2 ), 2 ); |
92 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "" ), 3 ), 3 ); |
93 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "" ), 4 ), 4 ); |
94 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "" ), 5 ), 5 ); |
95 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "" ), 6 ), 5 ); |
96 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "" ), 7 ), 5 ); |
97 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "" ) ), 5 ); |
98 | |
99 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "1" ), 0 ), npos ); |
100 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "1" ), 1 ), 1 ); |
101 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "1" ), 2 ), 2 ); |
102 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "1" ), 3 ), 2 ); |
103 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "1" ), 4 ), 4 ); |
104 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "1" ), 5 ), 5 ); |
105 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "1" ), 6 ), 5 ); |
106 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "1" ), 7 ), 5 ); |
107 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "1" ) ), 5 ); |
108 | |
109 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "4" ), 0 ), 0 ); |
110 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "4" ), 1 ), 1 ); |
111 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "4" ), 2 ), 2 ); |
112 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "4" ), 3 ), 3 ); |
113 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "4" ), 4 ), 4 ); |
114 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "4" ), 5 ), 5 ); |
115 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "4" ), 6 ), 5 ); |
116 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "4" ), 7 ), 5 ); |
117 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "4" ) ), 5 ); |
118 | |
119 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "23" ), 0 ), 0 ); |
120 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "23" ), 1 ), 0 ); |
121 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "23" ), 2 ), 0 ); |
122 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "23" ), 3 ), 3 ); |
123 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "23" ), 4 ), 3 ); |
124 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "23" ), 5 ), 3 ); |
125 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "23" ), 6 ), 3 ); |
126 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "23" ), 7 ), 3 ); |
127 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::string_view( "23" ) ), 3 ); |
128 | |
129 | BOOST_TEST_EQ( sv.find_last_not_of( '1', 0 ), npos ); |
130 | BOOST_TEST_EQ( sv.find_last_not_of( '1', 1 ), 1 ); |
131 | BOOST_TEST_EQ( sv.find_last_not_of( '1', 2 ), 2 ); |
132 | BOOST_TEST_EQ( sv.find_last_not_of( '1', 3 ), 2 ); |
133 | BOOST_TEST_EQ( sv.find_last_not_of( '1', 4 ), 4 ); |
134 | BOOST_TEST_EQ( sv.find_last_not_of( '1', 5 ), 5 ); |
135 | BOOST_TEST_EQ( sv.find_last_not_of( '1', 6 ), 5 ); |
136 | BOOST_TEST_EQ( sv.find_last_not_of( '1', 7 ), 5 ); |
137 | BOOST_TEST_EQ( sv.find_last_not_of( '1' ), 5 ); |
138 | |
139 | BOOST_TEST_EQ( sv.find_last_not_of( '3', 0 ), 0 ); |
140 | BOOST_TEST_EQ( sv.find_last_not_of( '3', 1 ), 1 ); |
141 | BOOST_TEST_EQ( sv.find_last_not_of( '3', 2 ), 1 ); |
142 | BOOST_TEST_EQ( sv.find_last_not_of( '3', 3 ), 3 ); |
143 | BOOST_TEST_EQ( sv.find_last_not_of( '3', 4 ), 4 ); |
144 | BOOST_TEST_EQ( sv.find_last_not_of( '3', 5 ), 4 ); |
145 | BOOST_TEST_EQ( sv.find_last_not_of( '3', 6 ), 4 ); |
146 | BOOST_TEST_EQ( sv.find_last_not_of( '3', 7 ), 4 ); |
147 | BOOST_TEST_EQ( sv.find_last_not_of( '3' ), 4 ); |
148 | |
149 | BOOST_TEST_EQ( sv.find_last_not_of( '9', 0 ), 0 ); |
150 | BOOST_TEST_EQ( sv.find_last_not_of( '9', 1 ), 1 ); |
151 | BOOST_TEST_EQ( sv.find_last_not_of( '9', 2 ), 2 ); |
152 | BOOST_TEST_EQ( sv.find_last_not_of( '9', 3 ), 3 ); |
153 | BOOST_TEST_EQ( sv.find_last_not_of( '9', 4 ), 4 ); |
154 | BOOST_TEST_EQ( sv.find_last_not_of( '9', 5 ), 5 ); |
155 | BOOST_TEST_EQ( sv.find_last_not_of( '9', 6 ), 5 ); |
156 | BOOST_TEST_EQ( sv.find_last_not_of( '9', 7 ), 5 ); |
157 | BOOST_TEST_EQ( sv.find_last_not_of( '9' ), 5 ); |
158 | |
159 | BOOST_TEST_EQ( sv.find_last_not_of( "" , 0 ), 0 ); |
160 | BOOST_TEST_EQ( sv.find_last_not_of( "" , 1 ), 1 ); |
161 | BOOST_TEST_EQ( sv.find_last_not_of( "" , 2 ), 2 ); |
162 | BOOST_TEST_EQ( sv.find_last_not_of( "" , 3 ), 3 ); |
163 | BOOST_TEST_EQ( sv.find_last_not_of( "" , 4 ), 4 ); |
164 | BOOST_TEST_EQ( sv.find_last_not_of( "" , 5 ), 5 ); |
165 | BOOST_TEST_EQ( sv.find_last_not_of( "" , 6 ), 5 ); |
166 | BOOST_TEST_EQ( sv.find_last_not_of( "" , 7 ), 5 ); |
167 | BOOST_TEST_EQ( sv.find_last_not_of( "" ), 5 ); |
168 | |
169 | BOOST_TEST_EQ( sv.find_last_not_of( "1" , 0 ), npos ); |
170 | BOOST_TEST_EQ( sv.find_last_not_of( "1" , 1 ), 1 ); |
171 | BOOST_TEST_EQ( sv.find_last_not_of( "1" , 2 ), 2 ); |
172 | BOOST_TEST_EQ( sv.find_last_not_of( "1" , 3 ), 2 ); |
173 | BOOST_TEST_EQ( sv.find_last_not_of( "1" , 4 ), 4 ); |
174 | BOOST_TEST_EQ( sv.find_last_not_of( "1" , 5 ), 5 ); |
175 | BOOST_TEST_EQ( sv.find_last_not_of( "1" , 6 ), 5 ); |
176 | BOOST_TEST_EQ( sv.find_last_not_of( "1" , 7 ), 5 ); |
177 | BOOST_TEST_EQ( sv.find_last_not_of( "1" ), 5 ); |
178 | |
179 | BOOST_TEST_EQ( sv.find_last_not_of( "23" , 0 ), 0 ); |
180 | BOOST_TEST_EQ( sv.find_last_not_of( "23" , 1 ), 0 ); |
181 | BOOST_TEST_EQ( sv.find_last_not_of( "23" , 2 ), 0 ); |
182 | BOOST_TEST_EQ( sv.find_last_not_of( "23" , 3 ), 3 ); |
183 | BOOST_TEST_EQ( sv.find_last_not_of( "23" , 4 ), 3 ); |
184 | BOOST_TEST_EQ( sv.find_last_not_of( "23" , 5 ), 3 ); |
185 | BOOST_TEST_EQ( sv.find_last_not_of( "23" , 6 ), 3 ); |
186 | BOOST_TEST_EQ( sv.find_last_not_of( "23" , 7 ), 3 ); |
187 | BOOST_TEST_EQ( sv.find_last_not_of( "23" ), 3 ); |
188 | |
189 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 0, 0 ), 0 ); |
190 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 1, 0 ), 1 ); |
191 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 2, 0 ), 2 ); |
192 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 3, 0 ), 3 ); |
193 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 4, 0 ), 4 ); |
194 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 5, 0 ), 5 ); |
195 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 6, 0 ), 5 ); |
196 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 7, 0 ), 5 ); |
197 | |
198 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 0, 1 ), npos ); |
199 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 1, 1 ), 1 ); |
200 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 2, 1 ), 2 ); |
201 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 3, 1 ), 2 ); |
202 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 4, 1 ), 4 ); |
203 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 5, 1 ), 5 ); |
204 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 6, 1 ), 5 ); |
205 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 7, 1 ), 5 ); |
206 | |
207 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 0, 2 ), npos ); |
208 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 1, 2 ), npos ); |
209 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 2, 2 ), 2 ); |
210 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 3, 2 ), 2 ); |
211 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 4, 2 ), 2 ); |
212 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 5, 2 ), 5 ); |
213 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 6, 2 ), 5 ); |
214 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 7, 2 ), 5 ); |
215 | |
216 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 0, 3 ), npos ); |
217 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 1, 3 ), npos ); |
218 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 2, 3 ), npos ); |
219 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 3, 3 ), npos ); |
220 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 4, 3 ), npos ); |
221 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 5, 3 ), npos ); |
222 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 6, 3 ), npos ); |
223 | BOOST_TEST_EQ( sv.find_last_not_of( "123" , 7, 3 ), npos ); |
224 | } |
225 | |
226 | { |
227 | boost::core::wstring_view sv( L"123123" ); |
228 | |
229 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view(), 0 ), 0 ); |
230 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view(), 1 ), 1 ); |
231 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view(), 2 ), 2 ); |
232 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view(), 3 ), 3 ); |
233 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view(), 4 ), 4 ); |
234 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view(), 5 ), 5 ); |
235 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view(), 6 ), 5 ); |
236 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view(), 7 ), 5 ); |
237 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view() ), 5 ); |
238 | |
239 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"" ), 0 ), 0 ); |
240 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"" ), 1 ), 1 ); |
241 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"" ), 2 ), 2 ); |
242 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"" ), 3 ), 3 ); |
243 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"" ), 4 ), 4 ); |
244 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"" ), 5 ), 5 ); |
245 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"" ), 6 ), 5 ); |
246 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"" ), 7 ), 5 ); |
247 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"" ) ), 5 ); |
248 | |
249 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"1" ), 0 ), npos ); |
250 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"1" ), 1 ), 1 ); |
251 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"1" ), 2 ), 2 ); |
252 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"1" ), 3 ), 2 ); |
253 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"1" ), 4 ), 4 ); |
254 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"1" ), 5 ), 5 ); |
255 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"1" ), 6 ), 5 ); |
256 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"1" ), 7 ), 5 ); |
257 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"1" ) ), 5 ); |
258 | |
259 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"4" ), 0 ), 0 ); |
260 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"4" ), 1 ), 1 ); |
261 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"4" ), 2 ), 2 ); |
262 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"4" ), 3 ), 3 ); |
263 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"4" ), 4 ), 4 ); |
264 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"4" ), 5 ), 5 ); |
265 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"4" ), 6 ), 5 ); |
266 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"4" ), 7 ), 5 ); |
267 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"4" ) ), 5 ); |
268 | |
269 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"23" ), 0 ), 0 ); |
270 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"23" ), 1 ), 0 ); |
271 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"23" ), 2 ), 0 ); |
272 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"23" ), 3 ), 3 ); |
273 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"23" ), 4 ), 3 ); |
274 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"23" ), 5 ), 3 ); |
275 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"23" ), 6 ), 3 ); |
276 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"23" ), 7 ), 3 ); |
277 | BOOST_TEST_EQ( sv.find_last_not_of( boost::core::wstring_view( L"23" ) ), 3 ); |
278 | |
279 | BOOST_TEST_EQ( sv.find_last_not_of( L'1', 0 ), npos ); |
280 | BOOST_TEST_EQ( sv.find_last_not_of( L'1', 1 ), 1 ); |
281 | BOOST_TEST_EQ( sv.find_last_not_of( L'1', 2 ), 2 ); |
282 | BOOST_TEST_EQ( sv.find_last_not_of( L'1', 3 ), 2 ); |
283 | BOOST_TEST_EQ( sv.find_last_not_of( L'1', 4 ), 4 ); |
284 | BOOST_TEST_EQ( sv.find_last_not_of( L'1', 5 ), 5 ); |
285 | BOOST_TEST_EQ( sv.find_last_not_of( L'1', 6 ), 5 ); |
286 | BOOST_TEST_EQ( sv.find_last_not_of( L'1', 7 ), 5 ); |
287 | BOOST_TEST_EQ( sv.find_last_not_of( L'1' ), 5 ); |
288 | |
289 | BOOST_TEST_EQ( sv.find_last_not_of( L'3', 0 ), 0 ); |
290 | BOOST_TEST_EQ( sv.find_last_not_of( L'3', 1 ), 1 ); |
291 | BOOST_TEST_EQ( sv.find_last_not_of( L'3', 2 ), 1 ); |
292 | BOOST_TEST_EQ( sv.find_last_not_of( L'3', 3 ), 3 ); |
293 | BOOST_TEST_EQ( sv.find_last_not_of( L'3', 4 ), 4 ); |
294 | BOOST_TEST_EQ( sv.find_last_not_of( L'3', 5 ), 4 ); |
295 | BOOST_TEST_EQ( sv.find_last_not_of( L'3', 6 ), 4 ); |
296 | BOOST_TEST_EQ( sv.find_last_not_of( L'3', 7 ), 4 ); |
297 | BOOST_TEST_EQ( sv.find_last_not_of( L'3' ), 4 ); |
298 | |
299 | BOOST_TEST_EQ( sv.find_last_not_of( L'9', 0 ), 0 ); |
300 | BOOST_TEST_EQ( sv.find_last_not_of( L'9', 1 ), 1 ); |
301 | BOOST_TEST_EQ( sv.find_last_not_of( L'9', 2 ), 2 ); |
302 | BOOST_TEST_EQ( sv.find_last_not_of( L'9', 3 ), 3 ); |
303 | BOOST_TEST_EQ( sv.find_last_not_of( L'9', 4 ), 4 ); |
304 | BOOST_TEST_EQ( sv.find_last_not_of( L'9', 5 ), 5 ); |
305 | BOOST_TEST_EQ( sv.find_last_not_of( L'9', 6 ), 5 ); |
306 | BOOST_TEST_EQ( sv.find_last_not_of( L'9', 7 ), 5 ); |
307 | BOOST_TEST_EQ( sv.find_last_not_of( L'9' ), 5 ); |
308 | |
309 | BOOST_TEST_EQ( sv.find_last_not_of( L"" , 0 ), 0 ); |
310 | BOOST_TEST_EQ( sv.find_last_not_of( L"" , 1 ), 1 ); |
311 | BOOST_TEST_EQ( sv.find_last_not_of( L"" , 2 ), 2 ); |
312 | BOOST_TEST_EQ( sv.find_last_not_of( L"" , 3 ), 3 ); |
313 | BOOST_TEST_EQ( sv.find_last_not_of( L"" , 4 ), 4 ); |
314 | BOOST_TEST_EQ( sv.find_last_not_of( L"" , 5 ), 5 ); |
315 | BOOST_TEST_EQ( sv.find_last_not_of( L"" , 6 ), 5 ); |
316 | BOOST_TEST_EQ( sv.find_last_not_of( L"" , 7 ), 5 ); |
317 | BOOST_TEST_EQ( sv.find_last_not_of( L"" ), 5 ); |
318 | |
319 | BOOST_TEST_EQ( sv.find_last_not_of( L"1" , 0 ), npos ); |
320 | BOOST_TEST_EQ( sv.find_last_not_of( L"1" , 1 ), 1 ); |
321 | BOOST_TEST_EQ( sv.find_last_not_of( L"1" , 2 ), 2 ); |
322 | BOOST_TEST_EQ( sv.find_last_not_of( L"1" , 3 ), 2 ); |
323 | BOOST_TEST_EQ( sv.find_last_not_of( L"1" , 4 ), 4 ); |
324 | BOOST_TEST_EQ( sv.find_last_not_of( L"1" , 5 ), 5 ); |
325 | BOOST_TEST_EQ( sv.find_last_not_of( L"1" , 6 ), 5 ); |
326 | BOOST_TEST_EQ( sv.find_last_not_of( L"1" , 7 ), 5 ); |
327 | BOOST_TEST_EQ( sv.find_last_not_of( L"1" ), 5 ); |
328 | |
329 | BOOST_TEST_EQ( sv.find_last_not_of( L"23" , 0 ), 0 ); |
330 | BOOST_TEST_EQ( sv.find_last_not_of( L"23" , 1 ), 0 ); |
331 | BOOST_TEST_EQ( sv.find_last_not_of( L"23" , 2 ), 0 ); |
332 | BOOST_TEST_EQ( sv.find_last_not_of( L"23" , 3 ), 3 ); |
333 | BOOST_TEST_EQ( sv.find_last_not_of( L"23" , 4 ), 3 ); |
334 | BOOST_TEST_EQ( sv.find_last_not_of( L"23" , 5 ), 3 ); |
335 | BOOST_TEST_EQ( sv.find_last_not_of( L"23" , 6 ), 3 ); |
336 | BOOST_TEST_EQ( sv.find_last_not_of( L"23" , 7 ), 3 ); |
337 | BOOST_TEST_EQ( sv.find_last_not_of( L"23" ), 3 ); |
338 | |
339 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 0, 0 ), 0 ); |
340 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 1, 0 ), 1 ); |
341 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 2, 0 ), 2 ); |
342 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 3, 0 ), 3 ); |
343 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 4, 0 ), 4 ); |
344 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 5, 0 ), 5 ); |
345 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 6, 0 ), 5 ); |
346 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 7, 0 ), 5 ); |
347 | |
348 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 0, 1 ), npos ); |
349 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 1, 1 ), 1 ); |
350 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 2, 1 ), 2 ); |
351 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 3, 1 ), 2 ); |
352 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 4, 1 ), 4 ); |
353 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 5, 1 ), 5 ); |
354 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 6, 1 ), 5 ); |
355 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 7, 1 ), 5 ); |
356 | |
357 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 0, 2 ), npos ); |
358 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 1, 2 ), npos ); |
359 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 2, 2 ), 2 ); |
360 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 3, 2 ), 2 ); |
361 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 4, 2 ), 2 ); |
362 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 5, 2 ), 5 ); |
363 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 6, 2 ), 5 ); |
364 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 7, 2 ), 5 ); |
365 | |
366 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 0, 3 ), npos ); |
367 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 1, 3 ), npos ); |
368 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 2, 3 ), npos ); |
369 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 3, 3 ), npos ); |
370 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 4, 3 ), npos ); |
371 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 5, 3 ), npos ); |
372 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 6, 3 ), npos ); |
373 | BOOST_TEST_EQ( sv.find_last_not_of( L"123" , 7, 3 ), npos ); |
374 | } |
375 | |
376 | { |
377 | boost::core::wstring_view sv( L"\x101\x102\x103\x101\x102\x103" ); |
378 | |
379 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 0, 0 ), 0 ); |
380 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 1, 0 ), 1 ); |
381 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 2, 0 ), 2 ); |
382 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 3, 0 ), 3 ); |
383 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 4, 0 ), 4 ); |
384 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 5, 0 ), 5 ); |
385 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 6, 0 ), 5 ); |
386 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 7, 0 ), 5 ); |
387 | |
388 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 0, 1 ), npos ); |
389 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 1, 1 ), 1 ); |
390 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 2, 1 ), 2 ); |
391 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 3, 1 ), 2 ); |
392 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 4, 1 ), 4 ); |
393 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 5, 1 ), 5 ); |
394 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 6, 1 ), 5 ); |
395 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 7, 1 ), 5 ); |
396 | |
397 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 0, 2 ), npos ); |
398 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 1, 2 ), npos ); |
399 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 2, 2 ), 2 ); |
400 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 3, 2 ), 2 ); |
401 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 4, 2 ), 2 ); |
402 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 5, 2 ), 5 ); |
403 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 6, 2 ), 5 ); |
404 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 7, 2 ), 5 ); |
405 | |
406 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 0, 3 ), npos ); |
407 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 1, 3 ), npos ); |
408 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 2, 3 ), npos ); |
409 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 3, 3 ), npos ); |
410 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 4, 3 ), npos ); |
411 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 5, 3 ), npos ); |
412 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 6, 3 ), npos ); |
413 | BOOST_TEST_EQ( sv.find_last_not_of( L"\x101\x102\x103" , 7, 3 ), npos ); |
414 | } |
415 | |
416 | { |
417 | boost::core::string_view sv( "123a123B123c" ); |
418 | |
419 | BOOST_TEST_EQ( sv.find_last_not_of( "0123456789" , 0 ), npos ); |
420 | BOOST_TEST_EQ( sv.find_last_not_of( "0123456789" , 1 ), npos ); |
421 | BOOST_TEST_EQ( sv.find_last_not_of( "0123456789" , 2 ), npos ); |
422 | BOOST_TEST_EQ( sv.find_last_not_of( "0123456789" , 3 ), 3 ); |
423 | BOOST_TEST_EQ( sv.find_last_not_of( "0123456789" , 4 ), 3 ); |
424 | BOOST_TEST_EQ( sv.find_last_not_of( "0123456789" , 5 ), 3 ); |
425 | BOOST_TEST_EQ( sv.find_last_not_of( "0123456789" , 6 ), 3 ); |
426 | BOOST_TEST_EQ( sv.find_last_not_of( "0123456789" , 7 ), 7 ); |
427 | BOOST_TEST_EQ( sv.find_last_not_of( "0123456789" , 8 ), 7 ); |
428 | BOOST_TEST_EQ( sv.find_last_not_of( "0123456789" , 9 ), 7 ); |
429 | BOOST_TEST_EQ( sv.find_last_not_of( "0123456789" , 10 ), 7 ); |
430 | BOOST_TEST_EQ( sv.find_last_not_of( "0123456789" , 11 ), 11 ); |
431 | BOOST_TEST_EQ( sv.find_last_not_of( "0123456789" , 12 ), 11 ); |
432 | BOOST_TEST_EQ( sv.find_last_not_of( "0123456789" ), 11 ); |
433 | } |
434 | |
435 | { |
436 | boost::core::wstring_view sv( L"123a123B123c" ); |
437 | |
438 | BOOST_TEST_EQ( sv.find_last_not_of( L"0123456789" , 0 ), npos ); |
439 | BOOST_TEST_EQ( sv.find_last_not_of( L"0123456789" , 1 ), npos ); |
440 | BOOST_TEST_EQ( sv.find_last_not_of( L"0123456789" , 2 ), npos ); |
441 | BOOST_TEST_EQ( sv.find_last_not_of( L"0123456789" , 3 ), 3 ); |
442 | BOOST_TEST_EQ( sv.find_last_not_of( L"0123456789" , 4 ), 3 ); |
443 | BOOST_TEST_EQ( sv.find_last_not_of( L"0123456789" , 5 ), 3 ); |
444 | BOOST_TEST_EQ( sv.find_last_not_of( L"0123456789" , 6 ), 3 ); |
445 | BOOST_TEST_EQ( sv.find_last_not_of( L"0123456789" , 7 ), 7 ); |
446 | BOOST_TEST_EQ( sv.find_last_not_of( L"0123456789" , 8 ), 7 ); |
447 | BOOST_TEST_EQ( sv.find_last_not_of( L"0123456789" , 9 ), 7 ); |
448 | BOOST_TEST_EQ( sv.find_last_not_of( L"0123456789" , 10 ), 7 ); |
449 | BOOST_TEST_EQ( sv.find_last_not_of( L"0123456789" , 11 ), 11 ); |
450 | BOOST_TEST_EQ( sv.find_last_not_of( L"0123456789" , 12 ), 11 ); |
451 | BOOST_TEST_EQ( sv.find_last_not_of( L"0123456789" ), 11 ); |
452 | } |
453 | |
454 | { |
455 | boost::core::string_view sv( "abc1abc2abc3" ); |
456 | |
457 | BOOST_TEST_EQ( sv.find_last_not_of( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 0 ), npos ); |
458 | BOOST_TEST_EQ( sv.find_last_not_of( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 1 ), npos ); |
459 | BOOST_TEST_EQ( sv.find_last_not_of( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 2 ), npos ); |
460 | BOOST_TEST_EQ( sv.find_last_not_of( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 3 ), 3 ); |
461 | BOOST_TEST_EQ( sv.find_last_not_of( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 4 ), 3 ); |
462 | BOOST_TEST_EQ( sv.find_last_not_of( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 5 ), 3 ); |
463 | BOOST_TEST_EQ( sv.find_last_not_of( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 6 ), 3 ); |
464 | BOOST_TEST_EQ( sv.find_last_not_of( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 7 ), 7 ); |
465 | BOOST_TEST_EQ( sv.find_last_not_of( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 8 ), 7 ); |
466 | BOOST_TEST_EQ( sv.find_last_not_of( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 9 ), 7 ); |
467 | BOOST_TEST_EQ( sv.find_last_not_of( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 10 ), 7 ); |
468 | BOOST_TEST_EQ( sv.find_last_not_of( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 11 ), 11 ); |
469 | BOOST_TEST_EQ( sv.find_last_not_of( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 12 ), 11 ); |
470 | BOOST_TEST_EQ( sv.find_last_not_of( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" ), 11 ); |
471 | } |
472 | |
473 | { |
474 | boost::core::wstring_view sv( L"abc1abc2abc3" ); |
475 | |
476 | BOOST_TEST_EQ( sv.find_last_not_of( L"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 0 ), npos ); |
477 | BOOST_TEST_EQ( sv.find_last_not_of( L"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 1 ), npos ); |
478 | BOOST_TEST_EQ( sv.find_last_not_of( L"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 2 ), npos ); |
479 | BOOST_TEST_EQ( sv.find_last_not_of( L"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 3 ), 3 ); |
480 | BOOST_TEST_EQ( sv.find_last_not_of( L"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 4 ), 3 ); |
481 | BOOST_TEST_EQ( sv.find_last_not_of( L"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 5 ), 3 ); |
482 | BOOST_TEST_EQ( sv.find_last_not_of( L"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 6 ), 3 ); |
483 | BOOST_TEST_EQ( sv.find_last_not_of( L"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 7 ), 7 ); |
484 | BOOST_TEST_EQ( sv.find_last_not_of( L"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 8 ), 7 ); |
485 | BOOST_TEST_EQ( sv.find_last_not_of( L"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 9 ), 7 ); |
486 | BOOST_TEST_EQ( sv.find_last_not_of( L"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 10 ), 7 ); |
487 | BOOST_TEST_EQ( sv.find_last_not_of( L"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 11 ), 11 ); |
488 | BOOST_TEST_EQ( sv.find_last_not_of( L"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 12 ), 11 ); |
489 | BOOST_TEST_EQ( sv.find_last_not_of( L"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" ), 11 ); |
490 | } |
491 | |
492 | { |
493 | char str[ 256 ]; |
494 | |
495 | for( int i = 0; i < 256; ++i ) |
496 | { |
497 | str[ i ] = static_cast< unsigned char >( i ); |
498 | } |
499 | |
500 | boost::core::string_view sv( str, 256 ); |
501 | |
502 | BOOST_TEST_EQ( sv.find_last_not_of( sv ), npos ); |
503 | |
504 | std::string str2( sv.data(), sv.size() ); |
505 | |
506 | for( int i = 0; i < 256; ++i ) |
507 | { |
508 | std::string str3( str2 ); |
509 | |
510 | str3[ i ] = ~str3[ i ]; |
511 | |
512 | BOOST_TEST_EQ( sv.find_last_not_of( str3 ), i ); |
513 | } |
514 | |
515 | std::reverse( first: str, last: str + 256 ); |
516 | |
517 | for( int i = 0; i < 256; ++i ) |
518 | { |
519 | std::string str3( str2 ); |
520 | |
521 | str3[ i ] = ~str3[ i ]; |
522 | |
523 | BOOST_TEST_EQ( sv.find_last_not_of( str3 ), 255 - i ); |
524 | } |
525 | } |
526 | |
527 | { |
528 | wchar_t str[ 256 ]; |
529 | |
530 | for( int i = 0; i < 256; ++i ) |
531 | { |
532 | str[ i ] = static_cast< wchar_t >( 0x100 + i ); |
533 | } |
534 | |
535 | boost::core::wstring_view sv( str, 256 ); |
536 | |
537 | BOOST_TEST_EQ( sv.find_first_not_of( sv ), npos ); |
538 | |
539 | std::wstring str2( sv.data(), sv.size() ); |
540 | |
541 | for( int i = 0; i < 256; ++i ) |
542 | { |
543 | std::wstring str3( str2 ); |
544 | |
545 | str3[ i ] = ~str3[ i ]; |
546 | |
547 | BOOST_TEST_EQ( sv.find_first_not_of( str3 ), i ); |
548 | } |
549 | |
550 | std::reverse( first: str, last: str + 256 ); |
551 | |
552 | for( int i = 0; i < 256; ++i ) |
553 | { |
554 | std::wstring str3( str2 ); |
555 | |
556 | str3[ i ] = ~str3[ i ]; |
557 | |
558 | BOOST_TEST_EQ( sv.find_first_not_of( str3 ), 255 - i ); |
559 | } |
560 | } |
561 | |
562 | #if defined(__cpp_char8_t) && __cpp_char8_t >= 201811L |
563 | |
564 | { |
565 | boost::core::u8string_view sv( u8"123123" ); |
566 | |
567 | BOOST_TEST_EQ( sv.find_last_not_of( u8"" , 0 ), 0 ); |
568 | BOOST_TEST_EQ( sv.find_last_not_of( u8"" , 1 ), 1 ); |
569 | BOOST_TEST_EQ( sv.find_last_not_of( u8"" , 2 ), 2 ); |
570 | BOOST_TEST_EQ( sv.find_last_not_of( u8"" , 3 ), 3 ); |
571 | BOOST_TEST_EQ( sv.find_last_not_of( u8"" , 4 ), 4 ); |
572 | BOOST_TEST_EQ( sv.find_last_not_of( u8"" , 5 ), 5 ); |
573 | BOOST_TEST_EQ( sv.find_last_not_of( u8"" , 6 ), 5 ); |
574 | BOOST_TEST_EQ( sv.find_last_not_of( u8"" , 7 ), 5 ); |
575 | BOOST_TEST_EQ( sv.find_last_not_of( u8"" ), 5 ); |
576 | |
577 | BOOST_TEST_EQ( sv.find_last_not_of( u8"1" , 0 ), npos ); |
578 | BOOST_TEST_EQ( sv.find_last_not_of( u8"1" , 1 ), 1 ); |
579 | BOOST_TEST_EQ( sv.find_last_not_of( u8"1" , 2 ), 2 ); |
580 | BOOST_TEST_EQ( sv.find_last_not_of( u8"1" , 3 ), 2 ); |
581 | BOOST_TEST_EQ( sv.find_last_not_of( u8"1" , 4 ), 4 ); |
582 | BOOST_TEST_EQ( sv.find_last_not_of( u8"1" , 5 ), 5 ); |
583 | BOOST_TEST_EQ( sv.find_last_not_of( u8"1" , 6 ), 5 ); |
584 | BOOST_TEST_EQ( sv.find_last_not_of( u8"1" , 7 ), 5 ); |
585 | BOOST_TEST_EQ( sv.find_last_not_of( u8"1" ), 5 ); |
586 | |
587 | BOOST_TEST_EQ( sv.find_last_not_of( u8"23" , 0 ), 0 ); |
588 | BOOST_TEST_EQ( sv.find_last_not_of( u8"23" , 1 ), 0 ); |
589 | BOOST_TEST_EQ( sv.find_last_not_of( u8"23" , 2 ), 0 ); |
590 | BOOST_TEST_EQ( sv.find_last_not_of( u8"23" , 3 ), 3 ); |
591 | BOOST_TEST_EQ( sv.find_last_not_of( u8"23" , 4 ), 3 ); |
592 | BOOST_TEST_EQ( sv.find_last_not_of( u8"23" , 5 ), 3 ); |
593 | BOOST_TEST_EQ( sv.find_last_not_of( u8"23" , 6 ), 3 ); |
594 | BOOST_TEST_EQ( sv.find_last_not_of( u8"23" , 7 ), 3 ); |
595 | BOOST_TEST_EQ( sv.find_last_not_of( u8"23" ), 3 ); |
596 | |
597 | BOOST_TEST_EQ( sv.find_last_not_of( u8"123" , 0 ), npos ); |
598 | BOOST_TEST_EQ( sv.find_last_not_of( u8"123" , 1 ), npos ); |
599 | BOOST_TEST_EQ( sv.find_last_not_of( u8"123" , 2 ), npos ); |
600 | BOOST_TEST_EQ( sv.find_last_not_of( u8"123" , 3 ), npos ); |
601 | BOOST_TEST_EQ( sv.find_last_not_of( u8"123" , 4 ), npos ); |
602 | BOOST_TEST_EQ( sv.find_last_not_of( u8"123" , 5 ), npos ); |
603 | BOOST_TEST_EQ( sv.find_last_not_of( u8"123" , 6 ), npos ); |
604 | BOOST_TEST_EQ( sv.find_last_not_of( u8"123" , 7 ), npos ); |
605 | } |
606 | |
607 | { |
608 | boost::core::u8string_view sv( u8"123a123B123c" ); |
609 | |
610 | BOOST_TEST_EQ( sv.find_last_not_of( u8"0123456789" , 0 ), npos ); |
611 | BOOST_TEST_EQ( sv.find_last_not_of( u8"0123456789" , 1 ), npos ); |
612 | BOOST_TEST_EQ( sv.find_last_not_of( u8"0123456789" , 2 ), npos ); |
613 | BOOST_TEST_EQ( sv.find_last_not_of( u8"0123456789" , 3 ), 3 ); |
614 | BOOST_TEST_EQ( sv.find_last_not_of( u8"0123456789" , 4 ), 3 ); |
615 | BOOST_TEST_EQ( sv.find_last_not_of( u8"0123456789" , 5 ), 3 ); |
616 | BOOST_TEST_EQ( sv.find_last_not_of( u8"0123456789" , 6 ), 3 ); |
617 | BOOST_TEST_EQ( sv.find_last_not_of( u8"0123456789" , 7 ), 7 ); |
618 | BOOST_TEST_EQ( sv.find_last_not_of( u8"0123456789" , 8 ), 7 ); |
619 | BOOST_TEST_EQ( sv.find_last_not_of( u8"0123456789" , 9 ), 7 ); |
620 | BOOST_TEST_EQ( sv.find_last_not_of( u8"0123456789" , 10 ), 7 ); |
621 | BOOST_TEST_EQ( sv.find_last_not_of( u8"0123456789" , 11 ), 11 ); |
622 | BOOST_TEST_EQ( sv.find_last_not_of( u8"0123456789" , 12 ), 11 ); |
623 | BOOST_TEST_EQ( sv.find_last_not_of( u8"0123456789" ), 11 ); |
624 | } |
625 | |
626 | { |
627 | boost::core::u8string_view sv( u8"abc1abc2abc3" ); |
628 | |
629 | BOOST_TEST_EQ( sv.find_last_not_of( u8"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 0 ), npos ); |
630 | BOOST_TEST_EQ( sv.find_last_not_of( u8"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 1 ), npos ); |
631 | BOOST_TEST_EQ( sv.find_last_not_of( u8"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 2 ), npos ); |
632 | BOOST_TEST_EQ( sv.find_last_not_of( u8"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 3 ), 3 ); |
633 | BOOST_TEST_EQ( sv.find_last_not_of( u8"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 4 ), 3 ); |
634 | BOOST_TEST_EQ( sv.find_last_not_of( u8"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 5 ), 3 ); |
635 | BOOST_TEST_EQ( sv.find_last_not_of( u8"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 6 ), 3 ); |
636 | BOOST_TEST_EQ( sv.find_last_not_of( u8"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 7 ), 7 ); |
637 | BOOST_TEST_EQ( sv.find_last_not_of( u8"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 8 ), 7 ); |
638 | BOOST_TEST_EQ( sv.find_last_not_of( u8"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 9 ), 7 ); |
639 | BOOST_TEST_EQ( sv.find_last_not_of( u8"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 10 ), 7 ); |
640 | BOOST_TEST_EQ( sv.find_last_not_of( u8"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 11 ), 11 ); |
641 | BOOST_TEST_EQ( sv.find_last_not_of( u8"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" , 12 ), 11 ); |
642 | BOOST_TEST_EQ( sv.find_last_not_of( u8"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" ), 11 ); |
643 | } |
644 | |
645 | #endif |
646 | |
647 | return boost::report_errors(); |
648 | } |
649 | |