This source file includes following definitions.
- test_ascii
- test_iso_8859_1
- test_utf_8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 static void
20 test_ascii (int (*my_casecmp) (const char *, size_t, const char *, size_t))
21 {
22
23 {
24 ASSERT (my_casecmp (NULL, 0, NULL, 0) == 0);
25 }
26 {
27 static const char input[] = { 'x', 'y' };
28
29 ASSERT (my_casecmp (input, SIZEOF (input), NULL, 0) > 0);
30
31 ASSERT (my_casecmp (NULL, 0, input, SIZEOF (input)) < 0);
32
33 ASSERT (my_casecmp (input, SIZEOF (input), input, SIZEOF (input)) == 0);
34 }
35
36
37 {
38 static const char input1[] = { 'A', 'm', 'e', 'r', 'i', 'c', 'a' };
39 static const char input2[] = { 'A', 'm', 'i', 'g', 'o' };
40
41 ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2)) < 0);
42
43 ASSERT (my_casecmp (input2, SIZEOF (input2), input1, SIZEOF (input1)) > 0);
44 }
45
46
47 {
48 static const char input1[] = { 'R', 'e', 'a', 'g', 'a', 'n' };
49 static const char input2[] = { 'R', 'e', 'a', 'g', 'a', 'n', 'o', 'm', 'i', 'c', 's' };
50
51 ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2)) < 0);
52
53 ASSERT (my_casecmp (input2, SIZEOF (input2), input1, SIZEOF (input1)) > 0);
54 }
55
56 ASSERT (my_casecmp ("paragraph", 9, "Paragraph", 9) == 0);
57
58 ASSERT (my_casecmp ("paragrapH", 9, "parAgRaph", 9) == 0);
59
60 ASSERT (my_casecmp ("paragraph", 9, "paraLyzed", 9) < 0);
61 ASSERT (my_casecmp ("paraLyzed", 9, "paragraph", 9) > 0);
62
63 ASSERT (my_casecmp ("para", 4, "paragraph", 9) < 0);
64 ASSERT (my_casecmp ("paragraph", 9, "para", 4) > 0);
65
66
67 ASSERT (my_casecmp ("1\0", 2, "2\0", 2) < 0);
68 ASSERT (my_casecmp ("2\0", 2, "1\0", 2) > 0);
69 ASSERT (my_casecmp ("x\0""1", 3, "x\0""2", 3) < 0);
70 ASSERT (my_casecmp ("x\0""2", 3, "x\0""1", 3) > 0);
71 }
72
73 static void
74 test_iso_8859_1 (int (*my_casecmp) (const char *, size_t, const char *, size_t), bool assume_byte_values)
75 {
76 #if ! defined __osf__
77 {
78 static const char input1[] = { 'H', 0xF6, 'h', 'l', 'e' };
79 static const char input2[] = { 'H', 0xD6, 'h', 'L', 'e' };
80 static const char input3[] = { 'H', 0xF6, 'h', 'l', 'e', 'n' };
81 static const char input4[] = { 'H', 0xD6, 'h', 'L', 'e', 'n' };
82 static const char input5[] = { 'H', 'u', 'r', 'z' };
83
84 ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2)) == 0);
85
86 ASSERT (my_casecmp (input2, SIZEOF (input2), input1, SIZEOF (input1)) == 0);
87
88 ASSERT (my_casecmp (input3, SIZEOF (input3), input4, SIZEOF (input4)) == 0);
89
90 ASSERT (my_casecmp (input4, SIZEOF (input4), input3, SIZEOF (input3)) == 0);
91
92 ASSERT (my_casecmp (input2, SIZEOF (input2), input3, SIZEOF (input3)) < 0);
93
94 ASSERT (my_casecmp (input1, SIZEOF (input1), input4, SIZEOF (input4)) < 0);
95
96 if (assume_byte_values)
97 {
98
99
100
101
102 ASSERT (my_casecmp (input1, SIZEOF (input1), input5, SIZEOF (input5)) > 0);
103
104 ASSERT (my_casecmp (input2, SIZEOF (input2), input5, SIZEOF (input5)) > 0);
105 }
106 }
107 #endif
108
109 #if 0
110
111 {
112 static const char input1[] = { 0x68, 0x65, 0x69, 0xDF };
113 static const char input2[] = { 0x68, 0x65, 0x69, 0x73, 0x73 };
114
115 ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2)) == 0);
116 }
117 #endif
118 }
119
120 static void
121 test_utf_8 (int (*my_casecmp) (const char *, size_t, const char *, size_t), bool turkish)
122 {
123
124
125
126 ASSERT (my_casecmp ("\303\266zg\303\274r", 7, "\303\226ZG\303\234R", 7) == 0);
127 ASSERT (my_casecmp ("\303\226ZG\303\234R", 7, "\303\266zg\303\274r", 7) == 0);
128
129
130 if (turkish)
131 {
132 ASSERT (my_casecmp ("turkish", 7, "TURK\304\260SH", 8) == 0);
133 ASSERT (my_casecmp ("TURK\304\260SH", 8, "turkish", 7) == 0);
134 }
135
136 #if 0
137
138 {
139 static const char input1[] = { 'H', 0xC3, 0xB6, 'h', 'l', 'e' };
140 static const char input2[] = { 'H', 'O', 0xCC, 0x88, 'h', 'L', 'e' };
141 static const char input3[] = { 'H', 0xC3, 0xB6, 'h', 'l', 'e', 'n' };
142 static const char input4[] = { 'H', 'O', 0xCC, 0x88, 'h', 'L', 'e', 'n' };
143 static const char input5[] = { 'H', 'u', 'r', 'z' };
144
145 ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2)) == 0);
146
147 ASSERT (my_casecmp (input2, SIZEOF (input2), input1, SIZEOF (input1)) == 0);
148
149 ASSERT (my_casecmp (input3, SIZEOF (input3), input4, SIZEOF (input4)) == 0);
150
151 ASSERT (my_casecmp (input4, SIZEOF (input4), input3, SIZEOF (input3)) == 0);
152
153 ASSERT (my_casecmp (input2, SIZEOF (input2), input3, SIZEOF (input3)) < 0);
154
155 ASSERT (my_casecmp (input1, SIZEOF (input1), input4, SIZEOF (input4)) < 0);
156
157 ASSERT (my_casecmp (input1, SIZEOF (input1), input5, SIZEOF (input5)) < 0);
158
159 ASSERT (my_casecmp (input2, SIZEOF (input2), input5, SIZEOF (input5)) < 0);
160 }
161 {
162 static const char input1[] = { 0xC3, 0x84 };
163 static const char input2[] = { 0x41, 0xCC, 0x88 };
164
165 ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2)) == 0);
166 }
167 {
168 static const char input1[] = { 0xC7, 0x9E };
169 static const char input2[] = { 0x41, 0xCC, 0x88, 0xCC, 0x84 };
170
171 ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2)) == 0);
172 }
173 {
174 static const char input1[] = { 0xE1, 0xBF, 0x81 };
175 static const char input2[] = { 0xC2, 0xA8, 0xCD, 0x82 };
176
177 ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2)) == 0);
178 }
179 {
180 static const char input1[] = { 0xEA, 0xB8, 0x80 };
181 static const char input2[] = { 0xEA, 0xB7, 0xB8, 0xE1, 0x86, 0xAF };
182 static const char input3[] = { 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xB3, 0xE1, 0x86, 0xAF };
183
184 ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2)) == 0);
185
186 ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3)) == 0);
187 }
188 {
189 static const char input1[] = { 0xEA, 0xB7, 0xB8 };
190 static const char input2[] = { 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xB3 };
191
192 ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2)) == 0);
193 }
194 #endif
195
196
197 {
198 static const char input1[] =
199 { 'G', 'r', 0xC3, 0xBC, 0xC3, 0x9F, ' ', 'G', 'o', 't', 't', '.', ' ',
200 0xD0, 0x97, 0xD0, 0xB4, 0xD1, 0x80, 0xD0, 0xB0, 0xD0, 0xB2, 0xD1, 0x81,
201 0xD1, 0x82, 0xD0, 0xB2, 0xD1, 0x83, 0xD0, 0xB9, 0xD1, 0x82, 0xD0, 0xB5,
202 '!', ' ', 'x', '=', '(', '-', 'b', 0xC2, 0xB1, 's', 'q', 'r', 't', '(',
203 'b', 0xC2, 0xB2, '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')',
204 ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC, 0xE8, 0xAA, 0x9E, ',',
205 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
206 0xED, 0x95, 0x9C, 0xEA, 0xB8, 0x80, '\n'
207 };
208 static const char input2[] =
209 { 'g', 'r', 0xC3, 0xBC, 0x73, 0x73, ' ', 'g', 'o', 't', 't', '.', ' ',
210 0xD0, 0xB7, 0xD0, 0xB4, 0xD1, 0x80, 0xD0, 0xB0, 0xD0, 0xB2, 0xD1, 0x81,
211 0xD1, 0x82, 0xD0, 0xB2, 0xD1, 0x83, 0xD0, 0xB9, 0xD1, 0x82, 0xD0, 0xB5,
212 '!', ' ', 'x', '=', '(', '-', 'b', 0xC2, 0xB1, 's', 'q', 'r', 't', '(',
213 'b', 0xC2, 0xB2, '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')',
214 ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC, 0xE8, 0xAA, 0x9E, ',',
215 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
216 0xED, 0x95, 0x9C, 0xEA, 0xB8, 0x80, '\n'
217 };
218 static const char input3[] =
219 { 'G', 'R', 0xC3, 0x9C, 0x53, 0x53, ' ', 'G', 'O', 'T', 'T', '.', ' ',
220 0xD0, 0x97, 0xD0, 0x94, 0xD0, 0xA0, 0xD0, 0x90, 0xD0, 0x92, 0xD0, 0xA1,
221 0xD0, 0xA2, 0xD0, 0x92, 0xD0, 0xA3, 0xD0, 0x99, 0xD0, 0xA2, 0xD0, 0x95,
222 '!', ' ', 'X', '=', '(', '-', 'B', 0xC2, 0xB1, 'S', 'Q', 'R', 'T', '(',
223 'B', 0xC2, 0xB2, '-', '4', 'A', 'C', ')', ')', '/', '(', '2', 'A', ')',
224 ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC, 0xE8, 0xAA, 0x9E, ',',
225 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
226 0xED, 0x95, 0x9C, 0xEA, 0xB8, 0x80, '\n'
227 };
228
229 (void) input1;
230
231 #if 0
232 ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2)) == 0);
233
234 ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3)) == 0);
235 #endif
236
237 ASSERT (my_casecmp (input2, SIZEOF (input2), input3, SIZEOF (input3)) == 0);
238 }
239
240 #if 0
241
242 {
243 static const char input1[] = { 0xC5, 0x89 };
244 static const char input2[] = { 0xCA, 0xBC, 0x6E };
245 static const char input3[] = { 0xCA, 0xBC, 0x4E };
246
247 ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2)) == 0);
248
249 ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3)) == 0);
250 }
251 {
252 static const char input1[] = { 0xCE, 0x90 };
253 static const char input2[] = { 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81 };
254
255 ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2)) == 0);
256 }
257 #endif
258
259
260 {
261 static const char input[] = { 0x49 };
262 static const char casefolded[] = { 0x69 };
263 static const char casefolded_tr[] = { 0xC4, 0xB1 };
264
265 if (!turkish)
266 ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded)) == 0);
267 else
268 ASSERT (my_casecmp (input, SIZEOF (input), casefolded_tr, SIZEOF (casefolded_tr)) == 0);
269 }
270 {
271 static const char input[] = { 0x69 };
272 static const char casefolded[] = { 0x49 };
273 static const char casefolded_tr[] = { 0xC4, 0xB0 };
274
275 if (!turkish)
276 ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded)) == 0);
277 else
278 ASSERT (my_casecmp (input, SIZEOF (input), casefolded_tr, SIZEOF (casefolded_tr)) == 0);
279 }
280 {
281 static const char input[] = { 0xC4, 0xB0 };
282 static const char casefolded[] = { 0x69, 0xCC, 0x87 };
283 static const char casefolded_tr[] = { 0x69 };
284
285 (void) casefolded;
286
287 if (!turkish)
288 {
289 #if 0
290 ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded)) == 0);
291 #endif
292 }
293 else
294 ASSERT (my_casecmp (input, SIZEOF (input), casefolded_tr, SIZEOF (casefolded_tr)) == 0);
295 }
296 {
297 static const char input[] = { 0xC4, 0xB1 };
298 static const char casefolded[] = { 0x49 };
299
300 if (!turkish)
301 ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded)) > 0);
302 else
303 ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded)) == 0);
304 }
305 {
306 static const char input[] =
307 { 0x54, 0x4F, 0x50, 0x4B, 0x41, 0x50, 0x49 };
308 static const char casefolded[] =
309 { 0x74, 0x6F, 0x70, 0x6B, 0x61, 0x70, 0xC4, 0xB1 };
310
311 if (!turkish)
312 ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded)) < 0);
313 else
314 ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded)) == 0);
315 }
316
317 #if 0
318
319 {
320 static const char input1[] = { 0x68, 0x65, 0x69, 0xC3, 0x9F };
321 static const char input2[] = { 0x68, 0x65, 0x69, 0x73, 0x73 };
322
323 ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2)) == 0);
324 }
325 #endif
326
327
328 {
329 static const char input1[] =
330 {
331 0xCF, 0x80, 0xCE, 0xB5, 0xCF, 0x81, 0xCE, 0xB9, 0xCF, 0x83, 0xCF, 0x83,
332 0xCF, 0x8C, 0xCF, 0x84, 0xCE, 0xB5, 0xCF, 0x81, 0xCE, 0xB5, 0xCF, 0x82,
333 ' ', 0xCF, 0x80, 0xCE, 0xBB, 0xCE, 0xB7, 0xCF, 0x81, 0xCE, 0xBF,
334 0xCF, 0x86, 0xCE, 0xBF, 0xCF, 0x81, 0xCE, 0xAF, 0xCE, 0xB5, 0xCF, 0x82
335 };
336 static const char input2[] =
337 {
338 0xCF, 0x80, 0xCE, 0xB5, 0xCF, 0x81, 0xCE, 0xB9, 0xCF, 0x83, 0xCF, 0x83,
339 0xCF, 0x8C, 0xCF, 0x84, 0xCE, 0xB5, 0xCF, 0x81, 0xCE, 0xB5, 0xCF, 0x83,
340 ' ', 0xCF, 0x80, 0xCE, 0xBB, 0xCE, 0xB7, 0xCF, 0x81, 0xCE, 0xBF,
341 0xCF, 0x86, 0xCE, 0xBF, 0xCF, 0x81, 0xCE, 0xAF, 0xCE, 0xB5, 0xCF, 0x83
342 };
343 static const char input3[] =
344 {
345 0xCE, 0xA0, 0xCE, 0x95, 0xCE, 0xA1, 0xCE, 0x99, 0xCE, 0xA3, 0xCE, 0xA3,
346 0xCE, 0x8C, 0xCE, 0xA4, 0xCE, 0x95, 0xCE, 0xA1, 0xCE, 0x95, 0xCE, 0xA3,
347 ' ', 0xCE, 0xA0, 0xCE, 0x9B, 0xCE, 0x97, 0xCE, 0xA1, 0xCE, 0x9F,
348 0xCE, 0xA6, 0xCE, 0x9F, 0xCE, 0xA1, 0xCE, 0x8A, 0xCE, 0x95, 0xCE, 0xA3
349 };
350
351 (void) input1;
352
353 #if 0
354 ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2)) == 0);
355
356 ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3)) == 0);
357 #endif
358
359 ASSERT (my_casecmp (input2, SIZEOF (input2), input3, SIZEOF (input3)) == 0);
360 }
361
362 #if 0
363
364 {
365 static const char input[] = { 0xC7, 0xB0, 0xCC, 0xA3 };
366 static const char casefolded[] = { 0x6A, 0xCC, 0x8C, 0xCC, 0xA3 };
367 static const char casefolded_decomposed[] = { 0x6A, 0xCC, 0xA3, 0xCC, 0x8C };
368
369 ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded)) == 0);
370
371 ASSERT (my_casecmp (input, SIZEOF (input), casefolded_decomposed, SIZEOF (casefolded_decomposed)) != 0);
372
373 ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded)) == 0);
374
375 ASSERT (my_casecmp (input, SIZEOF (input), casefolded_decomposed, SIZEOF (casefolded_decomposed)) == 0);
376 }
377 #endif
378 }