1 // Copyright (c) 1999-2018 David Muse
2 // See the file COPYING for more information
3
4 #include <rudiments/character.h>
5 #include <rudiments/stdio.h>
6 #include "test.cpp"
7
main(int argc,const char ** argv)8 int main(int argc, const char **argv) {
9
10 header("character");
11
12 bool isalphanumeric[]={
13 false,false,false,false,false,false,false,false,false,false,
14 false,false,false,false,false,false,false,false,false,false,
15 false,false,false,false,false,false,false,false,false,false,
16 false,false,false,false,false,false,false,false,false,false,
17 false,false,false,false,false,false,false,false,true,true,
18 true,true,true,true,true,true,true,true,false,false,
19 false,false,false,false,false,true,true,true,true,true,
20 true,true,true,true,true,true,true,true,true,true,
21 true,true,true,true,true,true,true,true,true,true,
22 true,false,false,false,false,false,false,true,true,true,
23 true,true,true,true,true,true,true,true,true,true,
24 true,true,true,true,true,true,true,true,true,true,
25 true,true,true,false,false,false,false,false
26 };
27
28 bool isalphabetical[]={
29 false,false,false,false,false,false,false,false,false,false,
30 false,false,false,false,false,false,false,false,false,false,
31 false,false,false,false,false,false,false,false,false,false,
32 false,false,false,false,false,false,false,false,false,false,
33 false,false,false,false,false,false,false,false,false,false,
34 false,false,false,false,false,false,false,false,false,false,
35 false,false,false,false,false,true,true,true,true,true,
36 true,true,true,true,true,true,true,true,true,true,
37 true,true,true,true,true,true,true,true,true,true,
38 true,false,false,false,false,false,false,true,true,true,
39 true,true,true,true,true,true,true,true,true,true,
40 true,true,true,true,true,true,true,true,true,true,
41 true,true,true,false,false,false,false,false
42 };
43
44 bool islowercase[]={
45 false,false,false,false,false,false,false,false,false,false,
46 false,false,false,false,false,false,false,false,false,false,
47 false,false,false,false,false,false,false,false,false,false,
48 false,false,false,false,false,false,false,false,false,false,
49 false,false,false,false,false,false,false,false,false,false,
50 false,false,false,false,false,false,false,false,false,false,
51 false,false,false,false,false,false,false,false,false,false,
52 false,false,false,false,false,false,false,false,false,false,
53 false,false,false,false,false,false,false,false,false,false,
54 false,false,false,false,false,false,false,true,true,true,
55 true,true,true,true,true,true,true,true,true,true,
56 true,true,true,true,true,true,true,true,true,true,
57 true,true,true,false,false,false,false,false
58 };
59
60 bool isuppercase[]={
61 false,false,false,false,false,false,false,false,false,false,
62 false,false,false,false,false,false,false,false,false,false,
63 false,false,false,false,false,false,false,false,false,false,
64 false,false,false,false,false,false,false,false,false,false,
65 false,false,false,false,false,false,false,false,false,false,
66 false,false,false,false,false,false,false,false,false,false,
67 false,false,false,false,false,true,true,true,true,true,
68 true,true,true,true,true,true,true,true,true,true,
69 true,true,true,true,true,true,true,true,true,true,
70 true,false,false,false,false,false,false,false,false,false,
71 false,false,false,false,false,false,false,false,false,false,
72 false,false,false,false,false,false,false,false,false,false,
73 false,false,false,false,false,false,false,false
74 };
75
76 bool ispunctuation[]={
77 false,false,false,false,false,false,false,false,false,false,
78 false,false,false,false,false,false,false,false,false,false,
79 false,false,false,false,false,false,false,false,false,false,
80 false,false,false,true,true,true,true,true,true,true,
81 true,true,true,true,true,true,true,true,false,false,
82 false,false,false,false,false,false,false,false,true,true,
83 true,true,true,true,true,false,false,false,false,false,
84 false,false,false,false,false,false,false,false,false,false,
85 false,false,false,false,false,false,false,false,false,false,
86 false,true,true,true,true,true,true,false,false,false,
87 false,false,false,false,false,false,false,false,false,false,
88 false,false,false,false,false,false,false,false,false,false,
89 false,false,false,true,true,true,true,false
90 };
91
92 bool isprintable[]={
93 false,false,false,false,false,false,false,false,false,false,
94 false,false,false,false,false,false,false,false,false,false,
95 false,false,false,false,false,false,false,false,false,false,
96 false,false,true,true,true,true,true,true,true,true,
97 true,true,true,true,true,true,true,true,true,true,
98 true,true,true,true,true,true,true,true,true,true,
99 true,true,true,true,true,true,true,true,true,true,
100 true,true,true,true,true,true,true,true,true,true,
101 true,true,true,true,true,true,true,true,true,true,
102 true,true,true,true,true,true,true,true,true,true,
103 true,true,true,true,true,true,true,true,true,true,
104 true,true,true,true,true,true,true,true,true,true,
105 true,true,true,true,true,true,true,false
106 };
107
108 bool isprintablenonspace[]={
109 false,false,false,false,false,false,false,false,false,false,
110 false,false,false,false,false,false,false,false,false,false,
111 false,false,false,false,false,false,false,false,false,false,
112 false,false,false,true,true,true,true,true,true,true,
113 true,true,true,true,true,true,true,true,true,true,
114 true,true,true,true,true,true,true,true,true,true,
115 true,true,true,true,true,true,true,true,true,true,
116 true,true,true,true,true,true,true,true,true,true,
117 true,true,true,true,true,true,true,true,true,true,
118 true,true,true,true,true,true,true,true,true,true,
119 true,true,true,true,true,true,true,true,true,true,
120 true,true,true,true,true,true,true,true,true,true,
121 true,true,true,true,true,true,true,false
122 };
123
124 bool iscontrolchar[]={
125 true,true,true,true,true,true,true,true,true,true,
126 true,true,true,true,true,true,true,true,true,true,
127 true,true,true,true,true,true,true,true,true,true,
128 true,true,false,false,false,false,false,false,false,false,
129 false,false,false,false,false,false,false,false,false,false,
130 false,false,false,false,false,false,false,false,false,false,
131 false,false,false,false,false,false,false,false,false,false,
132 false,false,false,false,false,false,false,false,false,false,
133 false,false,false,false,false,false,false,false,false,false,
134 false,false,false,false,false,false,false,false,false,false,
135 false,false,false,false,false,false,false,false,false,false,
136 false,false,false,false,false,false,false,false,false,false,
137 false,false,false,false,false,false,false,true
138 };
139
140 bool isdigit[]={
141 false,false,false,false,false,false,false,false,false,false,
142 false,false,false,false,false,false,false,false,false,false,
143 false,false,false,false,false,false,false,false,false,false,
144 false,false,false,false,false,false,false,false,false,false,
145 false,false,false,false,false,false,false,false,true,true,
146 true,true,true,true,true,true,true,true,false,false,
147 false,false,false,false,false,false,false,false,false,false,
148 false,false,false,false,false,false,false,false,false,false,
149 false,false,false,false,false,false,false,false,false,false,
150 false,false,false,false,false,false,false,false,false,false,
151 false,false,false,false,false,false,false,false,false,false,
152 false,false,false,false,false,false,false,false,false,false,
153 false,false,false,false,false,false,false,false
154 };
155
156 bool ishexdigit[]={
157 false,false,false,false,false,false,false,false,false,false,
158 false,false,false,false,false,false,false,false,false,false,
159 false,false,false,false,false,false,false,false,false,false,
160 false,false,false,false,false,false,false,false,false,false,
161 false,false,false,false,false,false,false,false,true,true,
162 true,true,true,true,true,true,true,true,false,false,
163 false,false,false,false,false,true,true,true,true,true,
164 true,false,false,false,false,false,false,false,false,false,
165 false,false,false,false,false,false,false,false,false,false,
166 false,false,false,false,false,false,false,true,true,true,
167 true,true,true,false,false,false,false,false,false,false,
168 false,false,false,false,false,false,false,false,false,false,
169 false,false,false,false,false,false,false,false
170 };
171
172 bool isblank[]={
173 false,false,false,false,false,false,false,false,false,true,
174 false,false,false,false,false,false,false,false,false,false,
175 false,false,false,false,false,false,false,false,false,false,
176 false,false,true,false,false,false,false,false,false,false,
177 false,false,false,false,false,false,false,false,false,false,
178 false,false,false,false,false,false,false,false,false,false,
179 false,false,false,false,false,false,false,false,false,false,
180 false,false,false,false,false,false,false,false,false,false,
181 false,false,false,false,false,false,false,false,false,false,
182 false,false,false,false,false,false,false,false,false,false,
183 false,false,false,false,false,false,false,false,false,false,
184 false,false,false,false,false,false,false,false,false,false,
185 false,false,false,false,false,false,false,false
186 };
187
188 bool iswhitespace[]={
189 false,false,false,false,false,false,false,false,false,true,
190 true,true,true,true,false,false,false,false,false,false,
191 false,false,false,false,false,false,false,false,false,false,
192 false,false,true,false,false,false,false,false,false,false,
193 false,false,false,false,false,false,false,false,false,false,
194 false,false,false,false,false,false,false,false,false,false,
195 false,false,false,false,false,false,false,false,false,false,
196 false,false,false,false,false,false,false,false,false,false,
197 false,false,false,false,false,false,false,false,false,false,
198 false,false,false,false,false,false,false,false,false,false,
199 false,false,false,false,false,false,false,false,false,false,
200 false,false,false,false,false,false,false,false,false,false,
201 false,false,false,false,false,false,false,false
202 };
203
204 bool isascii[]={
205 true,true,true,true,true,true,true,true,true,true,
206 true,true,true,true,true,true,true,true,true,true,
207 true,true,true,true,true,true,true,true,true,true,
208 true,true,true,true,true,true,true,true,true,true,
209 true,true,true,true,true,true,true,true,true,true,
210 true,true,true,true,true,true,true,true,true,true,
211 true,true,true,true,true,true,true,true,true,true,
212 true,true,true,true,true,true,true,true,true,true,
213 true,true,true,true,true,true,true,true,true,true,
214 true,true,true,true,true,true,true,true,true,true,
215 true,true,true,true,true,true,true,true,true,true,
216 true,true,true,true,true,true,true,true,true,true,
217 true,true,true,true,true,true,true,true
218 };
219
220 char touppercase[]={
221 0,1,2,3,4,5,6,7,8,9,
222 10,11,12,13,14,15,16,17,18,19,
223 20,21,22,23,24,25,26,27,28,29,
224 30,31,32,33,34,35,36,37,38,39,
225 40,41,42,43,44,45,46,47,48,49,
226 50,51,52,53,54,55,56,57,58,59,
227 60,61,62,63,64,65,66,67,68,69,
228 70,71,72,73,74,75,76,77,78,79,
229 80,81,82,83,84,85,86,87,88,89,
230 90,91,92,93,94,95,96,'A','B','C',
231 'D','E','F','G','H','I','J','K','L','M',
232 'N','O','P','Q','R','S','T','U','V','W',
233 'X','Y','Z',123,124,125,126,127
234 };
235
236 char tolowercase[]={
237 0,1,2,3,4,5,6,7,8,9,
238 10,11,12,13,14,15,16,17,18,19,
239 20,21,22,23,24,25,26,27,28,29,
240 30,31,32,33,34,35,36,37,38,39,
241 40,41,42,43,44,45,46,47,48,49,
242 50,51,52,53,54,55,56,57,58,59,
243 60,61,62,63,64,'a','b','c','d','e',
244 'f','g','h','i','j','k','l','m','n','o',
245 'p','q','r','s','t','u','v','w','x','y',
246 'z',91,92,93,94,95,96,97,98,99,
247 100,101,102,103,104,105,106,107,108,109,
248 110,111,112,113,114,115,116,117,118,119,
249 120,121,122,123,124,125,126,127
250 };
251
252 char toascii[]={
253 0,1,2,3,4,5,6,7,8,9,
254 10,11,12,13,14,15,16,17,18,19,
255 20,21,22,23,24,25,26,27,28,29,
256 30,31,32,33,34,35,36,37,38,39,
257 40,41,42,43,44,45,46,47,48,49,
258 50,51,52,53,54,55,56,57,58,59,
259 60,61,62,63,64,65,66,67,68,69,
260 70,71,72,73,74,75,76,77,78,79,
261 80,81,82,83,84,85,86,87,88,89,
262 90,91,92,93,94,95,96,97,98,99,
263 100,101,102,103,104,105,106,107,108,109,
264 110,111,112,113,114,115,116,117,118,119,
265 120,121,122,123,124,125,126,127
266 };
267
268 stdoutput.printf("character:\n");
269
270 for (unsigned char c=0; c<128; c++) {
271
272 stdoutput.printf("\t0x%02x \"%c\":\n",c,c);
273 test("\tisAlphanumeric",
274 character::isAlphanumeric(c)==isalphanumeric[c]);
275 test("\tisAlphabetical",
276 character::isAlphabetical(c)==isalphabetical[c]);
277 test("\tisLowerase",
278 character::isLowerCase(c)==islowercase[c]);
279 test("\tisUpperCase",
280 character::isUpperCase(c)==isuppercase[c]);
281 test("\tisPunctuation",
282 character::isPunctuation(c)==ispunctuation[c]);
283 test("\tisPrintable",
284 character::isPrintable(c)==isprintable[c]);
285 test("\tisPrintableNonSpace",
286 character::isPrintableNonSpace(c)==
287 isprintablenonspace[c]);
288 test("\tisControlCharacter",
289 character::isControlCharacter(c)==iscontrolchar[c]);
290 test("\tisDigit",
291 character::isDigit(c)==isdigit[c]);
292 test("\tisHexDigit",
293 character::isHexDigit(c)==ishexdigit[c]);
294 test("\tisBlank",
295 character::isBlank(c)==isblank[c]);
296 test("\tisWhitespace",
297 character::isWhitespace(c)==iswhitespace[c]);
298 test("\tisAscii",
299 character::isAscii(c)==isascii[c]);
300 test("\ttoUpperCase",
301 character::toUpperCase(c)==touppercase[c]);
302 test("\ttoLowerCase",
303 character::toLowerCase(c)==tolowercase[c]);
304 test("\ttoAscii",
305 character::toAscii(c)==toascii[c]);
306 }
307 }
308