nstrftime, c-nstrftime tests: Avoid test failures on native Windows.
[gnulib.git] / tests / test-iswctype.c
blob08a2101f9e3ea7cf008c2d1808508f9bbc23a2ac
1 /* Test of wide character properties.
2 Copyright (C) 2023-2024 Free Software Foundation, Inc.
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 3 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see <https://www.gnu.org/licenses/>. */
17 /* Written by Bruno Haible <bruno@clisp.org>, 2023. */
19 #include <config.h>
21 #include <wctype.h>
23 #include "signature.h"
24 SIGNATURE_CHECK (iswctype, int, (wint_t, wctype_t));
26 #include "macros.h"
28 int
29 main (int argc, char *argv[])
31 wctype_t desc;
33 desc = wctype ("any");
34 ASSERT (desc == (wctype_t) 0);
36 desc = wctype ("blank");
37 ASSERT (desc != (wctype_t) 0);
38 ASSERT (iswctype (L' ', desc));
39 ASSERT (iswctype (L'\t', desc));
40 ASSERT (! iswctype (L'\n', desc));
41 ASSERT (! iswctype (L'a', desc));
42 ASSERT (! iswctype (L'_', desc));
43 ASSERT (! iswctype (WEOF, desc));
45 desc = wctype ("space");
46 ASSERT (desc != (wctype_t) 0);
47 ASSERT (iswctype (L' ', desc));
48 ASSERT (iswctype (L'\t', desc));
49 ASSERT (iswctype (L'\n', desc));
50 ASSERT (! iswctype (L'a', desc));
51 ASSERT (! iswctype (L'_', desc));
52 ASSERT (! iswctype (WEOF, desc));
54 desc = wctype ("punct");
55 ASSERT (desc != (wctype_t) 0);
56 ASSERT (iswctype (L'!', desc));
57 ASSERT (iswctype (L'"', desc));
58 ASSERT (iswctype (L'#', desc));
59 ASSERT (iswctype (L'$', desc));
60 ASSERT (iswctype (L'%', desc));
61 ASSERT (iswctype (L'&', desc));
62 ASSERT (iswctype (L'\'', desc));
63 ASSERT (iswctype (L'(', desc));
64 ASSERT (iswctype (L')', desc));
65 ASSERT (iswctype (L'*', desc));
66 ASSERT (iswctype (L'+', desc));
67 ASSERT (iswctype (L',', desc));
68 ASSERT (iswctype (L'-', desc));
69 ASSERT (iswctype (L'.', desc));
70 ASSERT (iswctype (L'/', desc));
71 ASSERT (iswctype (L':', desc));
72 ASSERT (iswctype (L';', desc));
73 ASSERT (iswctype (L'<', desc));
74 ASSERT (iswctype (L'=', desc));
75 ASSERT (iswctype (L'>', desc));
76 ASSERT (iswctype (L'?', desc));
77 ASSERT (iswctype (L'@', desc));
78 ASSERT (iswctype (L'[', desc));
79 ASSERT (iswctype (L'\\', desc));
80 ASSERT (iswctype (L']', desc));
81 ASSERT (iswctype (L'^', desc));
82 ASSERT (iswctype (L'_', desc));
83 ASSERT (iswctype (L'`', desc));
84 ASSERT (iswctype (L'{', desc));
85 ASSERT (iswctype (L'|', desc));
86 ASSERT (iswctype (L'}', desc));
87 ASSERT (iswctype (L'~', desc));
88 ASSERT (! iswctype (L' ', desc));
89 ASSERT (! iswctype (L'a', desc));
90 ASSERT (! iswctype (L'1', desc));
91 ASSERT (! iswctype (WEOF, desc));
93 desc = wctype ("lower");
94 ASSERT (desc != (wctype_t) 0);
95 ASSERT (iswctype (L'a', desc));
96 ASSERT (iswctype (L'z', desc));
97 ASSERT (! iswctype (L'A', desc));
98 ASSERT (! iswctype (L'Z', desc));
99 ASSERT (! iswctype (L'1', desc));
100 ASSERT (! iswctype (L'_', desc));
101 ASSERT (! iswctype (WEOF, desc));
103 desc = wctype ("upper");
104 ASSERT (desc != (wctype_t) 0);
105 ASSERT (iswctype (L'A', desc));
106 ASSERT (iswctype (L'Z', desc));
107 ASSERT (! iswctype (L'a', desc));
108 ASSERT (! iswctype (L'z', desc));
109 ASSERT (! iswctype (L'1', desc));
110 ASSERT (! iswctype (L'_', desc));
111 ASSERT (! iswctype (WEOF, desc));
113 desc = wctype ("alpha");
114 ASSERT (desc != (wctype_t) 0);
115 ASSERT (iswctype (L'a', desc));
116 ASSERT (iswctype (L'z', desc));
117 ASSERT (iswctype (L'A', desc));
118 ASSERT (iswctype (L'Z', desc));
119 ASSERT (! iswctype (L'1', desc));
120 ASSERT (! iswctype (L'$', desc));
121 ASSERT (! iswctype (WEOF, desc));
123 desc = wctype ("digit");
124 ASSERT (desc != (wctype_t) 0);
125 ASSERT (iswctype (L'0', desc));
126 ASSERT (iswctype (L'9', desc));
127 ASSERT (! iswctype (L'a', desc));
128 ASSERT (! iswctype (L'f', desc));
129 ASSERT (! iswctype (L'A', desc));
130 ASSERT (! iswctype (L'F', desc));
131 ASSERT (! iswctype (WEOF, desc));
133 desc = wctype ("xdigit");
134 ASSERT (desc != (wctype_t) 0);
135 ASSERT (iswctype (L'0', desc));
136 ASSERT (iswctype (L'9', desc));
137 ASSERT (iswctype (L'a', desc));
138 ASSERT (iswctype (L'f', desc));
139 ASSERT (iswctype (L'A', desc));
140 ASSERT (iswctype (L'F', desc));
141 ASSERT (! iswctype (L'g', desc));
142 ASSERT (! iswctype (L'G', desc));
143 ASSERT (! iswctype (WEOF, desc));
145 desc = wctype ("alnum");
146 ASSERT (desc != (wctype_t) 0);
147 ASSERT (iswctype (L'a', desc));
148 ASSERT (iswctype (L'z', desc));
149 ASSERT (iswctype (L'A', desc));
150 ASSERT (iswctype (L'Z', desc));
151 ASSERT (iswctype (L'0', desc));
152 ASSERT (iswctype (L'9', desc));
153 ASSERT (! iswctype (L' ', desc));
154 ASSERT (! iswctype (L'_', desc));
155 ASSERT (! iswctype (WEOF, desc));
157 desc = wctype ("cntrl");
158 ASSERT (desc != (wctype_t) 0);
159 ASSERT (iswctype (L'\0', desc));
160 ASSERT (iswctype (L'\n', desc));
161 ASSERT (iswctype (L'\t', desc));
162 ASSERT (! iswctype (L' ', desc));
163 ASSERT (! iswctype (L'a', desc));
164 ASSERT (! iswctype (L'\\', desc));
165 ASSERT (! iswctype (WEOF, desc));
167 desc = wctype ("graph");
168 ASSERT (desc != (wctype_t) 0);
169 ASSERT (iswctype (L'a', desc));
170 ASSERT (iswctype (L'z', desc));
171 ASSERT (iswctype (L'A', desc));
172 ASSERT (iswctype (L'Z', desc));
173 ASSERT (iswctype (L'0', desc));
174 ASSERT (iswctype (L'9', desc));
175 ASSERT (iswctype (L'$', desc));
176 ASSERT (! iswctype (L' ', desc));
177 ASSERT (! iswctype (L'\t', desc));
178 ASSERT (! iswctype (L'\n', desc));
179 ASSERT (! iswctype (L'\0', desc));
180 ASSERT (! iswctype (WEOF, desc));
182 desc = wctype ("print");
183 ASSERT (desc != (wctype_t) 0);
184 ASSERT (iswctype (L'a', desc));
185 ASSERT (iswctype (L'z', desc));
186 ASSERT (iswctype (L'A', desc));
187 ASSERT (iswctype (L'Z', desc));
188 ASSERT (iswctype (L'0', desc));
189 ASSERT (iswctype (L'9', desc));
190 ASSERT (iswctype (L'$', desc));
191 ASSERT (iswctype (L' ', desc));
192 ASSERT (! iswctype (L'\t', desc));
193 ASSERT (! iswctype (L'\n', desc));
194 ASSERT (! iswctype (L'\0', desc));
195 ASSERT (! iswctype (WEOF, desc));
197 return test_exit_status;