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