]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestData.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / main / tests / core / src / com / ibm / icu / dev / test / bidi / TestData.java
1 /*\r
2 *******************************************************************************\r
3 *   Copyright (C) 2001-2007, International Business Machines\r
4 *   Corporation and others.  All Rights Reserved.\r
5 *******************************************************************************\r
6 */\r
7 \r
8 package com.ibm.icu.dev.test.bidi;\r
9 \r
10 import com.ibm.icu.lang.UCharacterDirection;\r
11 import com.ibm.icu.text.Bidi;\r
12 \r
13 \r
14 /**\r
15  * Data and helper methods for Bidi regression tests\r
16  *\r
17  * Ported from C by Lina Kemmel, Matitiahu Allouche\r
18  *\r
19  */\r
20 public class TestData {\r
21     protected static final int L   = UCharacterDirection.LEFT_TO_RIGHT;\r
22     protected static final int R   = UCharacterDirection.RIGHT_TO_LEFT;\r
23     protected static final int EN  = UCharacterDirection.EUROPEAN_NUMBER;\r
24     protected static final int ES  = UCharacterDirection.EUROPEAN_NUMBER_SEPARATOR;\r
25     protected static final int ET  = UCharacterDirection.EUROPEAN_NUMBER_TERMINATOR;\r
26     protected static final int AN  = UCharacterDirection.ARABIC_NUMBER;\r
27     protected static final int CS  = UCharacterDirection.COMMON_NUMBER_SEPARATOR;\r
28     protected static final int B   = UCharacterDirection.BLOCK_SEPARATOR;\r
29     protected static final int S   = UCharacterDirection.SEGMENT_SEPARATOR;\r
30     protected static final int WS  = UCharacterDirection.WHITE_SPACE_NEUTRAL;\r
31     protected static final int ON  = UCharacterDirection.OTHER_NEUTRAL;\r
32     protected static final int LRE = UCharacterDirection.LEFT_TO_RIGHT_EMBEDDING;\r
33     protected static final int LRO = UCharacterDirection.LEFT_TO_RIGHT_OVERRIDE;\r
34     protected static final int AL  = UCharacterDirection.RIGHT_TO_LEFT_ARABIC;\r
35     protected static final int RLE = UCharacterDirection.RIGHT_TO_LEFT_EMBEDDING;\r
36     protected static final int RLO = UCharacterDirection.RIGHT_TO_LEFT_OVERRIDE;\r
37     protected static final int PDF = UCharacterDirection.POP_DIRECTIONAL_FORMAT;\r
38     protected static final int NSM = UCharacterDirection.DIR_NON_SPACING_MARK;\r
39     protected static final int BN  = UCharacterDirection.BOUNDARY_NEUTRAL;\r
40     protected static final int DEF = Bidi.CLASS_DEFAULT;\r
41 \r
42     protected static final String[] dirPropNames = {\r
43         "L", "R", "EN", "ES", "ET", "AN", "CS", "B", "S", "WS", "ON",\r
44         "LRE", "LRO", "AL", "RLE", "RLO", "PDF", "NSM", "BN"\r
45     };\r
46     protected static final short[][] testDirProps = {\r
47         { L, L, WS, L, WS, EN, L, B },                                          // 0\r
48         { R, AL, WS, R, AL, WS, R },                                            // 1\r
49         { L, L, WS, EN, CS, WS, EN, CS, EN, WS, L, L },                         // 2\r
50         { L, AL, AL, AL, L, AL, AL, L, WS, EN, CS, WS, EN, CS, EN, WS, L, L },  // 3\r
51         { AL, R, AL, WS, EN, CS, WS, EN, CS, EN, WS, R, R, WS, L, L },          // 4\r
52         { R, EN, NSM, ET },                                                     // 5\r
53         { RLE, WS, R, R, R, WS, PDF, WS, B },                                   // 6\r
54         { LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE,\r
55             LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE,\r
56             LRE, LRE, LRE, AN, RLO, NSM, LRE, PDF, RLE, ES, EN, ON },           // 7\r
57         { LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE,\r
58             LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE,\r
59             LRE, LRE, LRE, LRE, BN, CS, RLO, S, PDF, EN, LRO, AN, ES },         // 8\r
60         { S, WS, NSM, RLE, WS, L, L, L, WS, LRO, WS, R, R, R, WS, RLO, WS, L, L,\r
61             L, WS, LRE, WS, R, R, R, WS, PDF, WS, L, L, L, WS, PDF, WS, AL, AL,\r
62             AL, WS, PDF, WS, L, L, L, WS, PDF, WS, L, L, L, WS, PDF, ON, PDF,\r
63             BN, BN, ON, PDF },                                                  // 9\r
64         { NSM, WS, L, L, L, L, L, L, L, WS, L, L, L, L, WS, R, R, R, R, R, WS,\r
65             L, L, L, L, L, L, L, WS, WS, AL, AL, AL, AL, WS, EN, EN, ES, EN,\r
66             EN, CS, S, EN, EN, CS, WS, EN, EN, WS, AL, AL, AL, AL, AL, B, L, L,\r
67             L, L, L, L, L, L, WS, AN, AN, CS, AN, AN, WS },                     // 10\r
68         { NSM, WS, L, L, L, L, L, L, L, WS, L, L, L, L, WS, R, R, R, R, R, WS,\r
69             L, L, L, L, L, L, L, WS, WS, AL, AL, AL, AL, WS, EN, EN, ES, EN,\r
70             EN, CS, S, EN, EN, CS, WS, EN, EN, WS, AL, AL, AL, AL, AL, B, L, L,\r
71             L, L, L, L, L, L, WS, AN, AN, CS, AN, AN, WS },                     // 11\r
72         { NSM, WS, L, L, L, L, L, L, L, WS, L, L, L, L, WS, R, R, R, R, R, WS,\r
73             L, L, L, L, L, L, L, WS, WS, AL, AL, AL, AL, WS, EN, EN, ES, EN,\r
74             EN, CS, S, EN, EN, CS, WS, EN, EN, WS, AL, AL, AL, AL, AL, B, L, L,\r
75             L, L, L, L, L, L, WS, AN, AN, CS, AN, AN, WS },                     // 12\r
76         { NSM, WS, L, L, L, L, L, L, L, WS, L, L, L, L, WS, R, R, R, R, R, WS,\r
77             L, L, L, L, L, L, L, WS, WS, AL, AL, AL, AL, WS, EN, EN, ES, EN,\r
78             EN, CS, S, EN, EN, CS, WS, EN, EN, WS, AL, AL, AL, AL, AL, B, L, L,\r
79             L, L, L, L, L, L, WS, AN, AN, CS, AN, AN, WS },                     // 13\r
80         { NSM, WS, L, L, L, L, L, L, L, WS, L, L, L, L, WS, R, R, R, R, R, WS,\r
81             L, L, L, L, L, L, L, WS, WS, AL, AL, AL, AL, WS, EN, EN, ES, EN,\r
82             EN, CS, S, EN, EN, CS, WS, EN, EN, WS, AL, AL, AL, AL, AL, B, L, L,\r
83             L, L, L, L, L, L, WS, AN, AN, CS, AN, AN, WS },                     // 14\r
84         { ON, L, RLO, CS, R, WS, AN, AN, PDF, LRE, R, L, LRO, WS, BN, ON, S,\r
85             LRE, LRO, B },                                                      // 15\r
86         { ON, L, RLO, CS, R, WS, AN, AN, PDF, LRE, R, L, LRO, WS, BN, ON, S,\r
87             LRE, LRO, B },                                                      // 16\r
88         { RLO, RLO, AL, AL, WS, EN, ES, ON, WS, S, S, PDF, LRO, WS, AL, ET, RLE,\r
89             ON, EN, B },                                                        // 17\r
90         { R, L, CS, L },                                                        // 18\r
91         { L, L, L, WS, L, L, L, WS, L, L, L },                                  // 19\r
92         { R, R, R, WS, R, R, R, WS, R, R, R },                                  // 20\r
93         { L },                                                                  // 21\r
94         null                                                                    // 22\r
95     };\r
96 \r
97     protected static final byte[][] testLevels = {\r
98         { 0, 0, 0, 0, 0, 0, 0, 0 },                                             // 0\r
99         { 1, 1, 1, 1, 1, 1, 1 },                                                // 1\r
100         { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },                                 // 2\r
101         { 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },               // 3\r
102         { 1, 1, 1, 1, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 2, 2 },                     // 4\r
103         { 1, 2, 2, 2 },                                                         // 5\r
104         { 1, 1, 1, 1, 1, 1, 1, 1, 1 },                                          // 6\r
105         { 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,\r
106             62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 61, 61,\r
107             61, 61, 61, 61, 61, 61 },                                           // 7\r
108         { 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,\r
109             60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0,\r
110             0, 62, 62, 62, 62, 60 },                                            // 8\r
111         { 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4,\r
112             5, 5, 5, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 0,\r
113             0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },                               // 9\r
114         { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,\r
115             0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 1, 0, 2, 2, 1, 1,\r
116             2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2,\r
117             0 },                                                                // 10\r
118         { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,\r
119             0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 1, 0, 2, 2, 1, 1,\r
120             2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2,\r
121             0 },                                                                // 11\r
122         { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2,\r
123             2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 3, 4, 4, 3, 2, 4, 4, 3, 3,\r
124             4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4,\r
125             2 },                                                                // 12\r
126         { 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 6, 6,\r
127             6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 6, 6, 5, 6, 6, 5, 5, 6, 6, 5, 5,\r
128             6, 6, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 6, 6, 6, 6,\r
129             5 },                                                                // 13\r
130         { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,\r
131             0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 1, 0, 2, 2, 1, 1,\r
132             2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2,\r
133             0 },                                                                // 14\r
134         { 0, 0, 1, 1, 1, 1, 1, 1, 3, 3, 3, 2, 4, 4, 4, 4, 0, 0, 0, 0 },         // 15\r
135         { 0, 0, 1, 1, 1, 0 },                                                   // 16\r
136         { 1 },                                                                  // 17\r
137         { 2 },                                                                  // 18\r
138         { 2, 2, 2, 2, 2, 2, 2, 1 },                                             // 19\r
139         { 1, 1, 1, 1, 1, 1, 1, 0 },                                             // 20\r
140         { 2 },                                                                  // 21\r
141         null                                                                    // 22\r
142     };\r
143 \r
144     protected static final int[][] testVisualMaps = {\r
145         { 0, 1, 2, 3, 4, 5, 6, 7 },                                             // 0\r
146         { 6, 5, 4, 3, 2, 1, 0 },                                                // 1\r
147         { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },                               // 2\r
148         { 0, 3, 2, 1, 4, 6, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 },       // 3\r
149         { 15, 14, 13, 12, 11, 10, 9, 6, 7, 8, 5, 4, 3, 2, 0, 1 },               // 4\r
150         { 3, 0, 1, 2 },                                                         // 5\r
151         { 8, 7, 6, 5, 4, 3, 2, 1, 0 },                                          // 6\r
152         { 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,\r
153             26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 7, 6, 5, 4, 3,\r
154             2, 1, 0 },                                                          // 7\r
155         { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\r
156             20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,\r
157             37, 38, 39 },                                                       // 8\r
158         { 0, 1, 2, 44, 43, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 31, 30, 29, 28, 27,\r
159             26, 20, 21, 24, 23, 22, 25, 19, 18, 17, 16, 15, 14, 32, 33, 34, 35,\r
160             36, 37, 38, 39, 40, 41, 42, 3, 45, 46, 47, 48, 49, 50, 51, 52, 53,\r
161             54, 55, 56, 57 },                                                   // 9\r
162         { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 18, 17, 16, 15,\r
163             20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 40, 39, 38, 37, 36, 34, 35,\r
164             33, 31, 32, 30, 41, 52, 53, 51, 50, 48, 49, 47, 46, 45, 44, 43, 42,\r
165             54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 },   // 10\r
166         { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 18, 17, 16, 15,\r
167             20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 40, 39, 38, 37, 36, 34, 35,\r
168             33, 31, 32, 30, 41, 52, 53, 51, 50, 48, 49, 47, 46, 45, 44, 43, 42,\r
169             54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 },   // 11\r
170         { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 18, 17, 16, 15,\r
171             20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 40, 39, 38, 37, 36, 34, 35,\r
172             33, 31, 32, 30, 41, 52, 53, 51, 50, 48, 49, 47, 46, 45, 44, 43, 42,\r
173             54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 },   // 12\r
174         { 69, 68, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 55, 54, 53,\r
175             52, 51, 50, 49, 42, 43, 44, 45, 46, 47, 48, 41, 40, 39, 38, 37, 36,\r
176             35, 33, 34, 32, 30, 31, 29, 28, 26, 27, 25, 24, 22, 23, 21, 20, 19,\r
177             18, 17, 16, 15, 7, 8, 9, 10, 11, 12, 13, 14, 6, 1, 2, 3, 4, 5, 0 }, // 13\r
178         { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 18, 17, 16, 15,\r
179             20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 40, 39, 38, 37, 36, 34, 35,\r
180             33, 31, 32, 30, 41, 52, 53, 51, 50, 48, 49, 47, 46, 45, 44, 43, 42,\r
181             54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 },   // 14\r
182         { 0, 1, 15, 14, 13, 12, 11, 10, 4, 3, 2, 5, 6, 7, 8, 9, 16, 17, 18, 19 }, // 15\r
183         { 0, 1, 4, 3, 2, 5 },                                                   // 16\r
184         { 0 },                                                                  // 17\r
185         { 0 },                                                                  // 18\r
186         { 1, 2, 3, 4, 5, 6, 7, 0 },                                             // 19\r
187         { 6, 5, 4, 3, 2, 1, 0, 7 },                                             // 20\r
188         { 0 },                                                                  // 21\r
189         null                                                                    // 22\r
190     };\r
191 \r
192     protected static final byte[] testParaLevels = {\r
193         Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR,\r
194         Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR,\r
195         Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR,\r
196         Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_RTL,\r
197         2, 5, Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR,\r
198         Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR, Bidi.RTL, Bidi.LTR, Bidi.RTL,\r
199         Bidi.LEVEL_DEFAULT_LTR\r
200     };\r
201 \r
202     protected static final byte[] testDirections = {\r
203         Bidi.LTR, Bidi.RTL, Bidi.LTR, Bidi.MIXED, Bidi.MIXED, Bidi.MIXED,\r
204         Bidi.RTL, Bidi.MIXED, Bidi.MIXED, Bidi.MIXED, Bidi.MIXED, Bidi.MIXED,\r
205         Bidi.MIXED, Bidi.MIXED, Bidi.MIXED, Bidi.MIXED, Bidi.MIXED, Bidi.RTL,\r
206         Bidi.LTR, Bidi.MIXED, Bidi.MIXED, Bidi.MIXED, Bidi.LTR\r
207     };\r
208 \r
209     protected static final byte[] testResultLevels = new byte[] {\r
210         Bidi.LTR, Bidi.RTL, Bidi.LTR, Bidi.LTR, Bidi.RTL, Bidi.RTL, Bidi.RTL,\r
211         Bidi.LTR, Bidi.LTR, Bidi.LTR, Bidi.LTR, Bidi.LTR, 2, 5, Bidi.LTR,\r
212         Bidi.LTR, Bidi.LTR, Bidi.RTL, 2, Bidi.RTL, Bidi.LTR, Bidi.RTL, Bidi.LTR\r
213     };\r
214 \r
215     protected static final byte[] testLineStarts = {\r
216         -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 13,\r
217         2, 0, 0, -1, -1\r
218     };\r
219 \r
220     protected static final byte[] testLineLimits = {\r
221         -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, 14,\r
222         3, 8, 8, -1, -1\r
223     };\r
224 \r
225     protected short[] dirProps;\r
226     protected int lineStart;\r
227     protected int lineLimit;\r
228     protected byte direction;\r
229     protected byte paraLevel;\r
230     protected byte resultLevel;\r
231     protected byte[] levels;\r
232     protected int[] visualMap;\r
233 \r
234     private TestData(short[] dirProps, int lineStart, int lineLimit,\r
235             byte direction, byte paraLevel, byte resultLevel, byte[] levels,\r
236             int[] visualMap) {\r
237         this.dirProps = dirProps;\r
238         this.lineStart = lineStart;\r
239         this.lineLimit = lineLimit;\r
240         this.direction = direction;\r
241         this.paraLevel = paraLevel;\r
242         this.resultLevel = resultLevel;\r
243         this.levels = levels;\r
244         this.visualMap = visualMap;\r
245     }\r
246 \r
247     protected static TestData getTestData(int testNumber) {\r
248         return new TestData(testDirProps[testNumber],\r
249                 testLineStarts[testNumber], testLineLimits[testNumber],\r
250                 testDirections[testNumber], testParaLevels[testNumber],\r
251                 testResultLevels[testNumber], testLevels[testNumber],\r
252                 testVisualMaps[testNumber]);\r
253     }\r
254 \r
255     protected static int testCount() {\r
256         return testDirProps.length;\r
257     }\r
258 }\r