xref: /llvm-project/libcxx/test/std/re/re.traits/isctype.pass.cpp (revision d29c9477320b982b73dc64405ff8f7fc54bb04d6)
1 //===----------------------------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 // <regex>
10 
11 // template <class charT> struct regex_traits;
12 
13 // bool isctype(charT c, char_class_type f) const;
14 
15 
16 #include <regex>
17 #include <cassert>
18 #include "test_macros.h"
19 
main(int,char **)20 int main(int, char**)
21 {
22     {
23         std::regex_traits<char> t;
24 
25         std::string s("w");
26         assert( t.isctype('_', t.lookup_classname(s.begin(), s.end())));
27         assert( t.isctype('a', t.lookup_classname(s.begin(), s.end())));
28         assert( t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
29         assert( t.isctype('5', t.lookup_classname(s.begin(), s.end())));
30         assert(!t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
31         assert(!t.isctype('-', t.lookup_classname(s.begin(), s.end())));
32         assert(!t.isctype('@', t.lookup_classname(s.begin(), s.end())));
33 
34         s = "alnum";
35         assert(!t.isctype('_', t.lookup_classname(s.begin(), s.end())));
36         assert( t.isctype('a', t.lookup_classname(s.begin(), s.end())));
37         assert( t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
38         assert( t.isctype('5', t.lookup_classname(s.begin(), s.end())));
39         assert(!t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
40         assert(!t.isctype('-', t.lookup_classname(s.begin(), s.end())));
41         assert(!t.isctype('@', t.lookup_classname(s.begin(), s.end())));
42 
43         s = "alpha";
44         assert(!t.isctype('_', t.lookup_classname(s.begin(), s.end())));
45         assert( t.isctype('a', t.lookup_classname(s.begin(), s.end())));
46         assert( t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
47         assert(!t.isctype('5', t.lookup_classname(s.begin(), s.end())));
48         assert(!t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
49         assert(!t.isctype('-', t.lookup_classname(s.begin(), s.end())));
50         assert(!t.isctype('@', t.lookup_classname(s.begin(), s.end())));
51 
52         s = "blank";
53         assert(!t.isctype('_', t.lookup_classname(s.begin(), s.end())));
54         assert(!t.isctype('a', t.lookup_classname(s.begin(), s.end())));
55         assert(!t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
56         assert(!t.isctype('5', t.lookup_classname(s.begin(), s.end())));
57         assert( t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
58         assert(!t.isctype('-', t.lookup_classname(s.begin(), s.end())));
59         assert(!t.isctype('@', t.lookup_classname(s.begin(), s.end())));
60 
61         s = "cntrl";
62         assert( t.isctype('\n', t.lookup_classname(s.begin(), s.end())));
63         assert(!t.isctype('_', t.lookup_classname(s.begin(), s.end())));
64         assert(!t.isctype('a', t.lookup_classname(s.begin(), s.end())));
65         assert(!t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
66         assert(!t.isctype('5', t.lookup_classname(s.begin(), s.end())));
67         assert(!t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
68         assert(!t.isctype('-', t.lookup_classname(s.begin(), s.end())));
69         assert(!t.isctype('@', t.lookup_classname(s.begin(), s.end())));
70 
71         s = "digit";
72         assert(!t.isctype('\n', t.lookup_classname(s.begin(), s.end())));
73         assert(!t.isctype('_', t.lookup_classname(s.begin(), s.end())));
74         assert(!t.isctype('a', t.lookup_classname(s.begin(), s.end())));
75         assert(!t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
76         assert( t.isctype('5', t.lookup_classname(s.begin(), s.end())));
77         assert(!t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
78         assert(!t.isctype('-', t.lookup_classname(s.begin(), s.end())));
79         assert(!t.isctype('@', t.lookup_classname(s.begin(), s.end())));
80 
81         s = "graph";
82         assert(!t.isctype('\n', t.lookup_classname(s.begin(), s.end())));
83         assert( t.isctype('_', t.lookup_classname(s.begin(), s.end())));
84         assert( t.isctype('a', t.lookup_classname(s.begin(), s.end())));
85         assert( t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
86         assert( t.isctype('5', t.lookup_classname(s.begin(), s.end())));
87         assert(!t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
88         assert( t.isctype('-', t.lookup_classname(s.begin(), s.end())));
89         assert( t.isctype('@', t.lookup_classname(s.begin(), s.end())));
90 
91         s = "lower";
92         assert(!t.isctype('\n', t.lookup_classname(s.begin(), s.end())));
93         assert(!t.isctype('_', t.lookup_classname(s.begin(), s.end())));
94         assert( t.isctype('a', t.lookup_classname(s.begin(), s.end())));
95         assert(!t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
96         assert(!t.isctype('5', t.lookup_classname(s.begin(), s.end())));
97         assert(!t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
98         assert(!t.isctype('-', t.lookup_classname(s.begin(), s.end())));
99         assert(!t.isctype('@', t.lookup_classname(s.begin(), s.end())));
100 
101         s = "print";
102         assert(!t.isctype('\n', t.lookup_classname(s.begin(), s.end())));
103         assert( t.isctype('_', t.lookup_classname(s.begin(), s.end())));
104         assert( t.isctype('a', t.lookup_classname(s.begin(), s.end())));
105         assert( t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
106         assert( t.isctype('5', t.lookup_classname(s.begin(), s.end())));
107         assert( t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
108         assert( t.isctype('-', t.lookup_classname(s.begin(), s.end())));
109         assert( t.isctype('@', t.lookup_classname(s.begin(), s.end())));
110 
111         s = "punct";
112         assert(!t.isctype('\n', t.lookup_classname(s.begin(), s.end())));
113         assert( t.isctype('_', t.lookup_classname(s.begin(), s.end())));
114         assert(!t.isctype('a', t.lookup_classname(s.begin(), s.end())));
115         assert(!t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
116         assert(!t.isctype('5', t.lookup_classname(s.begin(), s.end())));
117         assert(!t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
118         assert( t.isctype('-', t.lookup_classname(s.begin(), s.end())));
119         assert( t.isctype('@', t.lookup_classname(s.begin(), s.end())));
120 
121         s = "space";
122         assert( t.isctype('\n', t.lookup_classname(s.begin(), s.end())));
123         assert(!t.isctype('_', t.lookup_classname(s.begin(), s.end())));
124         assert(!t.isctype('a', t.lookup_classname(s.begin(), s.end())));
125         assert(!t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
126         assert(!t.isctype('5', t.lookup_classname(s.begin(), s.end())));
127         assert( t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
128         assert(!t.isctype('-', t.lookup_classname(s.begin(), s.end())));
129         assert(!t.isctype('@', t.lookup_classname(s.begin(), s.end())));
130 
131         s = "upper";
132         assert(!t.isctype('\n', t.lookup_classname(s.begin(), s.end())));
133         assert(!t.isctype('_', t.lookup_classname(s.begin(), s.end())));
134         assert(!t.isctype('a', t.lookup_classname(s.begin(), s.end())));
135         assert( t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
136         assert(!t.isctype('5', t.lookup_classname(s.begin(), s.end())));
137         assert(!t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
138         assert(!t.isctype('-', t.lookup_classname(s.begin(), s.end())));
139         assert(!t.isctype('@', t.lookup_classname(s.begin(), s.end())));
140 
141         s = "xdigit";
142         assert(!t.isctype('\n', t.lookup_classname(s.begin(), s.end())));
143         assert(!t.isctype('_', t.lookup_classname(s.begin(), s.end())));
144         assert( t.isctype('a', t.lookup_classname(s.begin(), s.end())));
145         assert(!t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
146         assert( t.isctype('5', t.lookup_classname(s.begin(), s.end())));
147         assert(!t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
148         assert(!t.isctype('-', t.lookup_classname(s.begin(), s.end())));
149         assert(!t.isctype('@', t.lookup_classname(s.begin(), s.end())));
150     }
151 
152 #ifndef TEST_HAS_NO_WIDE_CHARACTERS
153     {
154         std::regex_traits<wchar_t> t;
155 
156         std::wstring s(L"w");
157         assert( t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
158         assert( t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
159         assert( t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
160         assert( t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
161         assert(!t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
162         assert(!t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
163         assert(!t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
164 
165         s = L"alnum";
166         assert(!t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
167         assert( t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
168         assert( t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
169         assert( t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
170         assert(!t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
171         assert(!t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
172         assert(!t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
173 
174         s = L"alpha";
175         assert(!t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
176         assert( t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
177         assert( t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
178         assert(!t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
179         assert(!t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
180         assert(!t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
181         assert(!t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
182 
183         s = L"blank";
184         assert(!t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
185         assert(!t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
186         assert(!t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
187         assert(!t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
188         assert( t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
189         assert(!t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
190         assert(!t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
191 
192         s = L"cntrl";
193         assert( t.isctype(L'\n', t.lookup_classname(s.begin(), s.end())));
194         assert(!t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
195         assert(!t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
196         assert(!t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
197         assert(!t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
198         assert(!t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
199         assert(!t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
200         assert(!t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
201 
202         s = L"digit";
203         assert(!t.isctype(L'\n', t.lookup_classname(s.begin(), s.end())));
204         assert(!t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
205         assert(!t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
206         assert(!t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
207         assert( t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
208         assert(!t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
209         assert(!t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
210         assert(!t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
211 
212         s = L"graph";
213         assert(!t.isctype(L'\n', t.lookup_classname(s.begin(), s.end())));
214         assert( t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
215         assert( t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
216         assert( t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
217         assert( t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
218         assert(!t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
219         assert( t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
220         assert( t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
221 
222         s = L"lower";
223         assert(!t.isctype(L'\n', t.lookup_classname(s.begin(), s.end())));
224         assert(!t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
225         assert( t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
226         assert(!t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
227         assert(!t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
228         assert(!t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
229         assert(!t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
230         assert(!t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
231 
232         s = L"print";
233         assert(!t.isctype(L'\n', t.lookup_classname(s.begin(), s.end())));
234         assert( t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
235         assert( t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
236         assert( t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
237         assert( t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
238         assert( t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
239         assert( t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
240         assert( t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
241 
242         s = L"punct";
243         assert(!t.isctype(L'\n', t.lookup_classname(s.begin(), s.end())));
244         assert( t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
245         assert(!t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
246         assert(!t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
247         assert(!t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
248         assert(!t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
249         assert( t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
250         assert( t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
251 
252         s = L"space";
253         assert( t.isctype(L'\n', t.lookup_classname(s.begin(), s.end())));
254         assert(!t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
255         assert(!t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
256         assert(!t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
257         assert(!t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
258         assert( t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
259         assert(!t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
260         assert(!t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
261 
262         s = L"upper";
263         assert(!t.isctype(L'\n', t.lookup_classname(s.begin(), s.end())));
264         assert(!t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
265         assert(!t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
266         assert( t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
267         assert(!t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
268         assert(!t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
269         assert(!t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
270         assert(!t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
271 
272         s = L"xdigit";
273         assert(!t.isctype(L'\n', t.lookup_classname(s.begin(), s.end())));
274         assert(!t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
275         assert( t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
276         assert(!t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
277         assert( t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
278         assert(!t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
279         assert(!t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
280         assert(!t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
281     }
282 #endif // TEST_HAS_NO_WIDE_CHARACTERS
283 
284   return 0;
285 }
286