]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestReorder.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / main / tests / core / src / com / ibm / icu / dev / test / bidi / TestReorder.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.text.Bidi;\r
11 \r
12 \r
13 /**\r
14  * Regression test for the UBA implementation.\r
15  *\r
16  * ported from C by Lina Kemmel, Matitiahu Allouche\r
17  */\r
18 \r
19 public class TestReorder extends BidiTest {\r
20 \r
21     private static final String[] logicalOrder = {\r
22         "del(KC)add(K.C.&)",\r
23         "del(QDVT) add(BVDL)",\r
24         "del(PQ)add(R.S.)T)U.&",\r
25         "del(LV)add(L.V.) L.V.&",\r
26         "day  0  R  DPDHRVR dayabbr",\r
27         "day  1  H  DPHPDHDA dayabbr",\r
28         "day  2   L  DPBLENDA dayabbr",\r
29         "day  3  J  DPJQVM  dayabbr",\r
30         "day  4   I  DPIQNF    dayabbr",\r
31         "day  5  M  DPMEG  dayabbr",\r
32         "helloDPMEG",\r
33         "hello WXYZ"\r
34     };\r
35 \r
36     private static final String[] visualOrder = {\r
37         "del(CK)add(&.C.K)",\r
38         "del(TVDQ) add(LDVB)",\r
39         "del(QP)add(&.U(T(.S.R",\r
40         "del(VL)add(&.V.L (.V.L",\r
41         "day  0  RVRHDPD  R dayabbr",\r
42         "day  1  ADHDPHPD  H dayabbr",\r
43         "day  2   ADNELBPD  L dayabbr",\r
44         "day  3  MVQJPD  J  dayabbr",\r
45         "day  4   FNQIPD  I    dayabbr",\r
46         "day  5  GEMPD  M  dayabbr",\r
47         "helloGEMPD",\r
48         "hello ZYXW"\r
49     };\r
50 \r
51     private static final String[] visualOrder1 = {\r
52         ")K.C.&(dda)KC(led",\r
53         ")BVDL(dda )QDVT(led",\r
54         "R.S.(T(U.&(dda)PQ(led",\r
55         "L.V.( L.V.&(dda)LV(led",\r
56         "rbbayad R  DPDHRVR  0  yad",\r
57         "rbbayad H  DPHPDHDA  1  yad",\r
58         "rbbayad L  DPBLENDA   2  yad",\r
59         "rbbayad  J  DPJQVM  3  yad",\r
60         "rbbayad    I  DPIQNF   4  yad",\r
61         "rbbayad  M  DPMEG  5  yad",\r
62         "DPMEGolleh",\r
63         "WXYZ olleh"\r
64     };\r
65 \r
66     private static final String[] visualOrder2 = {\r
67         "@)@K.C.&@(dda)@KC@(led",\r
68         "@)@BVDL@(dda )@QDVT@(led",\r
69         "R.S.)T)U.&@(dda)@PQ@(led",\r
70         "L.V.) L.V.&@(dda)@LV@(led",\r
71         "rbbayad @R  DPDHRVR@  0  yad",\r
72         "rbbayad @H  DPHPDHDA@  1  yad",\r
73         "rbbayad @L  DPBLENDA@   2  yad",\r
74         "rbbayad  @J  DPJQVM@  3  yad",\r
75         "rbbayad    @I  DPIQNF@   4  yad",\r
76         "rbbayad  @M  DPMEG@  5  yad",\r
77         "DPMEGolleh",\r
78         "WXYZ@ olleh"\r
79     };\r
80 \r
81     private static final String[] visualOrder3 = {\r
82         ")K.C.&(KC)dda(led",\r
83         ")BVDL(ddaQDVT) (led",\r
84         "R.S.)T)U.&(PQ)dda(led",\r
85         "L.V.) L.V.&(LV)dda(led",\r
86         "rbbayad DPDHRVR   R  0 yad",\r
87         "rbbayad DPHPDHDA   H  1 yad",\r
88         "rbbayad DPBLENDA     L 2 yad",\r
89         "rbbayad  DPJQVM   J  3 yad",\r
90         "rbbayad    DPIQNF     I 4 yad",\r
91         "rbbayad  DPMEG   M  5 yad",\r
92         "DPMEGolleh",\r
93         "WXYZ olleh"\r
94     };\r
95 \r
96     private static final String[] visualOrder4 = {\r
97         "del(add(CK(.C.K)",\r
98         "del( (TVDQadd(LDVB)",\r
99         "del(add(QP(.U(T(.S.R",\r
100         "del(add(VL(.V.L (.V.L",\r
101         "day 0  R   RVRHDPD dayabbr",\r
102         "day 1  H   ADHDPHPD dayabbr",\r
103         "day 2 L     ADNELBPD dayabbr",\r
104         "day 3  J   MVQJPD  dayabbr",\r
105         "day 4 I     FNQIPD    dayabbr",\r
106         "day 5  M   GEMPD  dayabbr",\r
107         "helloGEMPD",\r
108         "hello ZYXW"\r
109     };\r
110 \r
111     public void testReorder() {\r
112         Bidi bidi = new Bidi();\r
113         int testNumber;\r
114         int nTests = logicalOrder.length;\r
115         String src, srcU16, dest = "";\r
116 \r
117         logln("\nEntering TestReorder\n");\r
118 \r
119         for (testNumber = 0; testNumber < nTests; testNumber++) {\r
120             logln("Testing L2V #1 for case " + testNumber);\r
121             src = logicalOrder[testNumber];\r
122             srcU16 = pseudoToU16(src);\r
123             try {\r
124                 bidi.setPara(srcU16, Bidi.LEVEL_DEFAULT_LTR, null);\r
125             } catch (Exception e) {\r
126                 errln("Bidi.setPara(tests[" + testNumber + "], paraLevel " +\r
127                       Bidi.LEVEL_DEFAULT_LTR + " failed.");\r
128             }\r
129             try {\r
130                 dest = u16ToPseudo(bidi.writeReordered(Bidi.DO_MIRRORING));\r
131             } catch (Exception e) {\r
132                 errln("Bidi.writeReordered(tests[" + testNumber + "], paraLevel " +\r
133                       Bidi.LEVEL_DEFAULT_LTR + " failed.");\r
134             }\r
135             if (!visualOrder[testNumber].equals(dest)) {\r
136                 assertEquals("Failure #1 in Bidi.writeReordered(), test number " +\r
137                              testNumber, visualOrder[testNumber], dest, src, null,\r
138                              "Bidi.DO_MIRRORING", "Bidi.LEVEL_DEFAULT_LTR");\r
139             }\r
140             checkWhatYouCan(bidi, src, dest);\r
141         }\r
142 \r
143         for (testNumber = 0; testNumber < nTests; testNumber++) {\r
144             logln("Testing L2V #2 for case " + testNumber);\r
145             src = logicalOrder[testNumber];\r
146             srcU16 = pseudoToU16(src);\r
147             try {\r
148                 bidi.setPara(srcU16, Bidi.LEVEL_DEFAULT_LTR, null);\r
149             } catch (Exception e) {\r
150                 errln("Bidi.setPara(tests[" + testNumber + "], paraLevel " +\r
151                       Bidi.LEVEL_DEFAULT_LTR + " failed.");\r
152             }\r
153             try {\r
154                 dest = u16ToPseudo(bidi.writeReordered(Bidi.DO_MIRRORING +\r
155                                                        Bidi.OUTPUT_REVERSE));\r
156             } catch (Exception e) {\r
157                 errln("Bidi.writeReordered(test[" + testNumber + "], paraLevel "\r
158                         + Bidi.LEVEL_DEFAULT_LTR + " failed.");\r
159             }\r
160             assertEquals("Failure #2 in Bidi.writeReordered() at index " +\r
161                          testNumber, visualOrder1[testNumber], dest,\r
162                          logicalOrder[testNumber], null,\r
163                          "DO_MIRRORING + OUTPUT_REVERSE",\r
164                          "Bidi.LEVEL_DEFAULT_LTR");\r
165         }\r
166 \r
167         for (testNumber = 0; testNumber < nTests; testNumber++) {\r
168             logln("Testing V2L #3 for case " + testNumber);\r
169             src = logicalOrder[testNumber];\r
170             srcU16 = pseudoToU16(src);\r
171             bidi.setInverse(true);\r
172             try {\r
173                 bidi.setPara(srcU16, Bidi.LEVEL_DEFAULT_LTR, null);\r
174             } catch (Exception e) {\r
175                 errln("Bidi.setPara(tests[" + testNumber + "], paraLevel " +\r
176                       Bidi.LEVEL_DEFAULT_LTR + " failed.");\r
177             }\r
178             try {\r
179                 dest = u16ToPseudo(bidi.writeReordered(Bidi.OUTPUT_REVERSE |\r
180                                                        Bidi.INSERT_LRM_FOR_NUMERIC));\r
181             } catch (Exception e) {\r
182                 errln("Bidi.writeReordered(test[" + testNumber + "], paraLevel " +\r
183                       Bidi.LEVEL_DEFAULT_LTR + " failed.");\r
184             }\r
185             assertEquals("Failure #3 in Bidi.writeReordered(test[" + testNumber +\r
186                          "])", visualOrder2[testNumber], dest,\r
187                          logicalOrder[testNumber], null,\r
188                          "INSERT_LRM_FOR_NUMERIC + OUTPUT_REVERSE",\r
189                          "Bidi.LEVEL_DEFAULT_LTR");\r
190         }\r
191 \r
192         /* Max Explicit level */\r
193         for (testNumber = 0; testNumber < nTests; testNumber++) {\r
194             logln("Testing V2L #4 for case " + testNumber);\r
195             src = logicalOrder[testNumber];\r
196             srcU16 = pseudoToU16(src);\r
197             byte[] levels = new byte[Bidi.MAX_EXPLICIT_LEVEL];\r
198             for (int i = 0; i < 10; i++) {\r
199                 levels[i] = (byte)(i + 1);\r
200             }\r
201             try {\r
202                 bidi.setPara(srcU16, Bidi.LEVEL_DEFAULT_LTR, levels);\r
203             } catch (Exception e) {\r
204                 errln("Bidi.setPara(tests[" + testNumber +\r
205                       "], paraLevel = MAX_EXPLICIT_LEVEL = " +\r
206                       Bidi.MAX_EXPLICIT_LEVEL + " failed.");\r
207             }\r
208             try {\r
209                 dest = u16ToPseudo(bidi.writeReordered(Bidi.OUTPUT_REVERSE));\r
210             } catch (Exception e) {\r
211                 errln("Bidi.writeReordered(test[" + testNumber + "], paraLevel " +\r
212                       Bidi.LEVEL_DEFAULT_LTR + " failed.");\r
213             }\r
214             assertEquals("Failure #4 in Bidi.writeReordered(test[" + testNumber +\r
215                          "])", visualOrder3[testNumber], dest,\r
216                          logicalOrder[testNumber], null,\r
217                          "OUTPUT_REVERSE", "Bidi.LEVEL_DEFAULT_LTR");\r
218         }\r
219 \r
220         for (testNumber = 0; testNumber < nTests; testNumber++) {\r
221             logln("Testing V2L #5 for case " + testNumber);\r
222             src = logicalOrder[testNumber];\r
223             srcU16 = pseudoToU16(src);\r
224             byte[] levels = new byte[Bidi.MAX_EXPLICIT_LEVEL];\r
225             for (int i = 0; i < 10; i++) {\r
226                 levels[i] = (byte)(i + 1);\r
227             }\r
228             try {\r
229                 bidi.setPara(srcU16, Bidi.LEVEL_DEFAULT_LTR, levels);\r
230             } catch (Exception e) {\r
231                 errln("Bidi.setPara(tests[" + testNumber + "], paraLevel " +\r
232                       Bidi.MAX_EXPLICIT_LEVEL + " failed.");\r
233             }\r
234             try {\r
235                 dest = u16ToPseudo(bidi.writeReordered(Bidi.DO_MIRRORING |\r
236                                                        Bidi.REMOVE_BIDI_CONTROLS));\r
237             } catch (Exception e) {\r
238                 errln("Bidi.writeReordered(test[" + testNumber + "], paraLevel "\r
239                         + Bidi.LEVEL_DEFAULT_LTR + " failed.");\r
240             }\r
241             assertEquals("Failure #5 in Bidi.writeReordered(test[" + testNumber +\r
242                          "])", visualOrder4[testNumber], dest,\r
243                          logicalOrder[testNumber], null,\r
244                          "DO_MIRRORING + REMOVE_BIDI_CONTROLS",\r
245                          "Bidi.LEVEL_DEFAULT_LTR");\r
246         }\r
247 \r
248         logln("\nExiting TestReorder\n");\r
249     }\r
250 \r
251 \r
252     public static void main(String[] args) {\r
253         try {\r
254             new TestReorder().run(args);\r
255         }\r
256         catch (Exception e) {\r
257             System.out.println(e);\r
258         }\r
259     }\r
260 \r
261 }\r