]> git.saurik.com Git - apple/icu.git/blame - icuSources/test/cintltst/cbididat.c
ICU-491.11.3.tar.gz
[apple/icu.git] / icuSources / test / cintltst / cbididat.c
CommitLineData
b75a7d8f
A
1/********************************************************************
2 * COPYRIGHT:
46f4442e 3 * Copyright (c) 1997-2007, International Business Machines Corporation and
b75a7d8f
A
4 * others. All Rights Reserved.
5 ********************************************************************/
6/* file name: cbididat.c
7* encoding: US-ASCII
8* tab size: 8 (not used)
9* indentation:4
10*
11* created on: 1999sep22
12* created by: Markus W. Scherer
13*/
14
15#include "unicode/utypes.h"
16#include "unicode/uchar.h"
17#include "unicode/ubidi.h"
18#include "cbiditst.h"
19
46f4442e
A
20const char * const
21dirPropNames[U_CHAR_DIRECTION_COUNT]={
b75a7d8f
A
22 "L", "R", "EN", "ES", "ET", "AN", "CS", "B", "S", "WS", "ON",
23 "LRE", "LRO", "AL", "RLE", "RLO", "PDF", "NSM", "BN"
24};
25
374ca955 26UChar
46f4442e 27charFromDirProp[U_CHAR_DIRECTION_COUNT]={
b75a7d8f
A
28 /* L R EN ES ET AN CS B S WS ON */
29 0x61, 0x5d0, 0x30, 0x2f, 0x25, 0x660, 0x2c, 0xa, 0x9, 0x20, 0x26,
30 /* LRE LRO AL RLE RLO PDF NSM BN */
31 0x202a, 0x202d, 0x627, 0x202b, 0x202e, 0x202c, 0x308, 0x200c
32};
33
34static const uint8_t
35testText1[]={
36 L, L, WS, L, WS, EN, L, B
37};
38
39static const UBiDiLevel
40testLevels1[]={
41 0, 0, 0, 0, 0, 0, 0, 0
42};
43
44static const uint8_t
45testVisualMap1[]={
46 0, 1, 2, 3, 4, 5, 6, 7
47};
48
49static const uint8_t
50testText2[]={
51 R, AL, WS, R, AL, WS, R
52};
53
54static const UBiDiLevel
55testLevels2[]={
56 1, 1, 1, 1, 1, 1, 1
57};
58
59static const uint8_t
60testVisualMap2[]={
61 6, 5, 4, 3, 2, 1, 0
62};
63
64static const uint8_t
65testText3[]={
66 L, L, WS, EN, CS, WS, EN, CS, EN, WS, L, L
67};
68
69static const UBiDiLevel
70testLevels3[]={
71 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
72};
73
74static const uint8_t
75testVisualMap3[]={
76 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
77};
78
79static const uint8_t
80testText4[]={
81 L, AL, AL, AL, L, AL, AL, L, WS, EN, CS, WS, EN, CS, EN, WS, L, L
82};
83
84static const UBiDiLevel
85testLevels4[]={
86 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
87};
88
89static const uint8_t
90testVisualMap4[]={
91 0, 3, 2, 1, 4, 6, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17
92};
93
94static const uint8_t
95testText5[]={
96 AL, R, AL, WS, EN, CS, WS, EN, CS, EN, WS, R, R, WS, L, L
97};
98
99static const UBiDiLevel
100testLevels5[]={
101 1, 1, 1, 1, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 2, 2
102};
103
104static const uint8_t
105testVisualMap5[]={
106 15, 14, 13, 12, 11, 10, 9, 6, 7, 8, 5, 4, 3, 2, 0, 1
107};
108
109static const uint8_t
110testText6[]={
111 R, EN, NSM, ET
112};
113
114static const UBiDiLevel
115testLevels6[]={
116 1, 2, 2, 2
117};
118
119static const uint8_t
120testVisualMap6[]={
121 3, 0, 1, 2
122};
123
124#if 0
125static const uint8_t
126testText7[]={
127 /* empty */
128};
129
130static const UBiDiLevel
131testLevels7[]={
132};
133
134static const uint8_t
135testVisualMap7[]={
136};
137
138#endif
139
140static const uint8_t
141testText8[]={
142 RLE, WS, R, R, R, WS, PDF, WS, B
143};
144
145static const UBiDiLevel
146testLevels8[]={
147 1, 1, 1, 1, 1, 1, 1, 1, 1
148};
149
150static const uint8_t
151testVisualMap8[]={
152 8, 7, 6, 5, 4, 3, 2, 1, 0
153};
154
155static const uint8_t
156testText9[]={
157 LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE,
158 LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE,
159 AN, RLO, NSM, LRE, PDF, RLE, ES, EN, ON
160};
161
162static const UBiDiLevel
163testLevels9[]={
164 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 61, 61, 61, 61, 61, 61, 61, 61
165};
166
167static const uint8_t
168testVisualMap9[]={
169 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 7, 6, 5, 4, 3, 2, 1, 0
170};
171
172static const uint8_t
173testText10[]={
174 LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE,
175 LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE,
176 LRE, BN, CS, RLO, S, PDF, EN, LRO, AN, ES
177};
178
179static const UBiDiLevel
180testLevels10[]={
181 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0, 0, 62, 62, 62, 62, 60
182};
183
184static const uint8_t
185testVisualMap10[]={
186 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39
187};
188
189static const uint8_t
190testText11[]={
191 S, WS, NSM, RLE, WS, L, L, L, WS, LRO, WS, R, R, R, WS, RLO, WS, L, L,
192 L, WS, LRE, WS, R, R, R, WS, PDF, WS, L, L, L, WS, PDF, WS,
193 AL, AL, AL, WS, PDF, WS, L, L, L, WS, PDF, WS, L, L, L, WS, PDF,
194 ON, PDF, BN, BN, ON, PDF
195};
196
197static const UBiDiLevel
198testLevels11[]={
199 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 5, 5, 5, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
200};
201
202static const uint8_t
203testVisualMap11[]={
204 0, 1, 2, 44, 43, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 31, 30, 29, 28, 27, 26, 20, 21, 24, 23, 22, 25, 19, 18, 17, 16, 15, 14, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 3, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57
205};
206
207static const uint8_t
208testText12[]={
209 NSM, WS, L, L, L, L, L, L, L, WS, L, L, L, L, WS,
210 R, R, R, R, R, WS, L, L, L, L, L, L, L, WS, WS, AL,
211 AL, AL, AL, WS, EN, EN, ES, EN, EN, CS, S, EN, EN, CS, WS,
212 EN, EN, WS, AL, AL, AL, AL, AL, B, L, L, L, L, L, L,
213 L, L, WS, AN, AN, CS, AN, AN, WS
214};
215
216static const UBiDiLevel
217testLevels12[]={
218 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 1, 0, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0
219};
220
221static const uint8_t
222testVisualMap12[]={
223 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 18, 17, 16, 15, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 40, 39, 38, 37, 36, 34, 35, 33, 31, 32, 30, 41, 52, 53, 51, 50, 48, 49, 47, 46, 45, 44, 43, 42, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69
224};
225
226static const UBiDiLevel
227testLevels13[]={
228 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 1, 0, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0
229};
230
231static const uint8_t
232testVisualMap13[]={
233 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 18, 17, 16, 15, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 40, 39, 38, 37, 36, 34, 35, 33, 31, 32, 30, 41, 52, 53, 51, 50, 48, 49, 47, 46, 45, 44, 43, 42, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69
234};
235
236static const UBiDiLevel
237testLevels14[]={
238 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 3, 4, 4, 3, 2, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 2
239};
240
241static const uint8_t
242testVisualMap14[]={
243 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 18, 17, 16, 15, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 40, 39, 38, 37, 36, 34, 35, 33, 31, 32, 30, 41, 52, 53, 51, 50, 48, 49, 47, 46, 45, 44, 43, 42, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69
244};
245
246static const UBiDiLevel
247testLevels15[]={
248 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 6, 6, 5, 6, 6, 5, 5, 6, 6, 5, 5, 6, 6, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 6, 6, 6, 6, 5
249};
250
251static const uint8_t
252testVisualMap15[]={
253 69, 68, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 55, 54, 53, 52, 51, 50, 49, 42, 43, 44, 45, 46, 47, 48, 41, 40, 39, 38, 37, 36, 35, 33, 34, 32, 30, 31, 29, 28, 26, 27, 25, 24, 22, 23, 21, 20, 19, 18, 17, 16, 15, 7, 8, 9, 10, 11, 12, 13, 14, 6, 1, 2, 3, 4, 5, 0
254};
255
256static const UBiDiLevel
257testLevels16[]={
258 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 1, 0, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0
259};
260
261static const uint8_t
262testVisualMap16[]={
263 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 18, 17, 16, 15, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 40, 39, 38, 37, 36, 34, 35, 33, 31, 32, 30, 41, 52, 53, 51, 50, 48, 49, 47, 46, 45, 44, 43, 42, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69
264};
265
266static const uint8_t
267testText13[]={
268 ON, L, RLO, CS, R, WS, AN, AN, PDF, LRE, R, L, LRO, WS, BN, ON, S, LRE, LRO, B
269};
270
271static const UBiDiLevel
272testLevels17[]={
273 0, 0, 1, 1, 1, 1, 1, 1, 3, 3, 3, 2, 4, 4, 4, 4, 0, 0, 0, 0
274};
275
276static const uint8_t
277testVisualMap17[]={
278 0, 1, 15, 14, 13, 12, 11, 10, 4, 3, 2, 5, 6, 7, 8, 9, 16, 17, 18, 19
279};
280
281static const UBiDiLevel
282testLevels18[]={
283 0, 0, 1, 1, 1, 0
284};
285
286static const uint8_t
287testVisualMap18[]={
288 0, 1, 4, 3, 2, 5
289};
290
291static const uint8_t
292testText14[]={
293 RLO, RLO, AL, AL, WS, EN, ES, ON, WS, S, S, PDF, LRO, WS, AL, ET, RLE, ON, EN, B
294};
295
296static const UBiDiLevel
297testLevels19[]={
298 1
299};
300
301static const uint8_t
302testVisualMap19[]={
303 0
304};
305
306static const uint8_t
307testText15[]={
308 R, L, CS, L
309};
310
311static const UBiDiLevel
312testLevels20[]={
313 2
314};
315
374ca955
A
316static const uint8_t
317testText16[]={
318 L, L, L, WS, L, L, L, WS, L, L, L
319};
320
321static const UBiDiLevel
322testLevels21[]={
323 2, 2, 2, 2, 2, 2, 2, 1
324};
325
326static const uint8_t
327testVisualMap20[]={
328 1, 2, 3, 4, 5, 6, 7, 0
329};
330
331static const uint8_t
332testText17[]={
333 R, R, R, WS, R, R, R, WS, R, R, R
334};
335
336static const UBiDiLevel
337testLevels22[]={
338 1, 1, 1, 1, 1, 1, 1, 0
339};
340
341static const uint8_t
342testVisualMap21[]={
343 6, 5, 4, 3, 2, 1, 0, 7
344};
345
346static const uint8_t
347testTextXX[]={
348 L
349};
350
351static const UBiDiLevel
352testLevelsXX[]={
353 2
354};
355
356static const uint8_t
357testVisualMapXX[]={
358 0
359};
360
46f4442e 361const BiDiTestData
b75a7d8f
A
362tests[]={
363 {testText1, ARRAY_LENGTH(testText1), UBIDI_DEFAULT_LTR, -1, -1,
364 UBIDI_LTR, 0,
365 testLevels1, testVisualMap1},
366 {testText2, ARRAY_LENGTH(testText2), UBIDI_DEFAULT_LTR, -1, -1,
367 UBIDI_RTL, 1,
368 testLevels2, testVisualMap2},
369 {testText3, ARRAY_LENGTH(testText3), UBIDI_DEFAULT_LTR, -1, -1,
370 UBIDI_LTR, 0,
371 testLevels3, testVisualMap3},
372 {testText4, ARRAY_LENGTH(testText4), UBIDI_DEFAULT_LTR, -1, -1,
373 UBIDI_MIXED, 0,
374 testLevels4, testVisualMap4},
375 {testText5, ARRAY_LENGTH(testText5), UBIDI_DEFAULT_LTR, -1, -1,
376 UBIDI_MIXED, 1,
377 testLevels5, testVisualMap5},
378 {testText6, ARRAY_LENGTH(testText6), UBIDI_DEFAULT_LTR, -1, -1,
379 UBIDI_MIXED, 1,
380 testLevels6, testVisualMap6},
381 {NULL, 0, UBIDI_DEFAULT_LTR, -1, -1,
382 UBIDI_LTR, 0,
383 NULL, NULL},
384 {testText8, ARRAY_LENGTH(testText8), UBIDI_DEFAULT_LTR, -1, -1,
385 UBIDI_RTL, 1,
386 testLevels8, testVisualMap8},
387 {testText9, ARRAY_LENGTH(testText9), UBIDI_DEFAULT_LTR, -1, -1,
388 UBIDI_MIXED, 0,
389 testLevels9, testVisualMap9},
390 {testText10, ARRAY_LENGTH(testText10), UBIDI_DEFAULT_LTR, -1, -1,
391 UBIDI_MIXED, 0,
392 testLevels10, testVisualMap10},
393 {testText11, ARRAY_LENGTH(testText11), UBIDI_DEFAULT_LTR, -1, -1,
394 UBIDI_MIXED, 0,
395 testLevels11, testVisualMap11},
396 {testText12, ARRAY_LENGTH(testText12), UBIDI_DEFAULT_LTR, -1, -1,
397 UBIDI_MIXED, 0,
398 testLevels12, testVisualMap12},
399 {testText12, ARRAY_LENGTH(testText12), UBIDI_DEFAULT_RTL, -1, -1,
400 UBIDI_MIXED, 0,
401 testLevels13, testVisualMap13},
402 {testText12, ARRAY_LENGTH(testText12), 2, -1, -1,
403 UBIDI_MIXED, 2,
404 testLevels14, testVisualMap14},
405 {testText12, ARRAY_LENGTH(testText12), 5, -1, -1,
406 UBIDI_MIXED, 5,
407 testLevels15, testVisualMap15},
408 {testText12, ARRAY_LENGTH(testText12), UBIDI_DEFAULT_LTR, -1, -1,
409 UBIDI_MIXED, 0,
410 testLevels16, testVisualMap16},
411 {testText13, ARRAY_LENGTH(testText13), UBIDI_DEFAULT_LTR, -1, -1,
412 UBIDI_MIXED, 0,
413 testLevels17, testVisualMap17},
414 {testText13, ARRAY_LENGTH(testText13), UBIDI_DEFAULT_LTR, 0, 6,
415 UBIDI_MIXED, 0,
416 testLevels18, testVisualMap18},
417 {testText14, ARRAY_LENGTH(testText14), UBIDI_DEFAULT_LTR, 13, 14,
418 UBIDI_RTL, 1,
419 testLevels19, testVisualMap19},
420 {testText15, ARRAY_LENGTH(testText15), UBIDI_DEFAULT_LTR, 2, 3,
421 UBIDI_LTR, 2,
374ca955
A
422 testLevels20, testVisualMap19},
423 {testText16, ARRAY_LENGTH(testText16), UBIDI_RTL, 0, 8,
424 UBIDI_MIXED, 1,
425 testLevels21, testVisualMap20},
426 {testText17, ARRAY_LENGTH(testText17), UBIDI_LTR, 0, 8,
427 UBIDI_MIXED, 0,
428 testLevels22, testVisualMap21},
429 {testTextXX, ARRAY_LENGTH(testTextXX), UBIDI_RTL, -1, -1,
430 UBIDI_MIXED, 1, testLevelsXX, testVisualMapXX}
b75a7d8f
A
431};
432
46f4442e 433const int
b75a7d8f 434bidiTestCount=ARRAY_LENGTH(tests);