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. */
23 #include "signature.h"
24 SIGNATURE_CHECK (iswctype
, int, (wint_t, wctype_t));
29 main (int argc
, char *argv
[])
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
;