]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-52_1/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestClassOverride.java
Clean up imports.
[Dictionary.git] / jars / icu4j-52_1 / main / tests / core / src / com / ibm / icu / dev / test / bidi / TestClassOverride.java
1 /*
2 *******************************************************************************
3 *   Copyright (C) 2007-2013, International Business Machines
4 *   Corporation and others.  All Rights Reserved.
5 *******************************************************************************
6 */
7
8 package com.ibm.icu.dev.test.bidi;
9
10 import com.ibm.icu.text.Bidi;
11 import com.ibm.icu.text.BidiClassifier;
12
13 /**
14  * Regression test for Bidi class override.
15  *
16  * @author Lina Kemmel, Matitiahu Allouche
17  */
18
19 public class TestClassOverride extends BidiTest {
20
21     private static final int DEF = TestData.DEF;
22     private static final int L   = TestData.L;
23     private static final int R   = TestData.R;
24     private static final int AL  = TestData.AL;
25     private static final int AN  = TestData.AN;
26     private static final int EN  = TestData.EN;
27     private static final int LRE = TestData.LRE;
28     private static final int RLE = TestData.RLE;
29     private static final int LRO = TestData.LRO;
30     private static final int RLO = TestData.RLO;
31     private static final int PDF = TestData.PDF;
32     private static final int NSM = TestData.NSM;
33     private static final int B   = TestData.B;
34     private static final int S   = TestData.S;
35     private static final int BN  = TestData.BN;
36
37     private static final int[] customClasses = {
38     /*  0/8    1/9    2/A    3/B    4/C    5/D    6/E    7/F  */
39         DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //00-07
40         DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //08-0F
41         DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //10-17
42         DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //18-1F
43         DEF,   DEF,   DEF,   DEF,   DEF,   DEF,     R,   DEF, //20-27
44         DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //28-2F
45          EN,    EN,    EN,    EN,    EN,    EN,    AN,    AN, //30-37
46          AN,    AN,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //38-3F
47           L,    AL,    AL,    AL,    AL,    AL,    AL,     R, //40-47
48           R,     R,     R,     R,     R,     R,     R,     R, //48-4F
49           R,     R,     R,     R,     R,     R,     R,     R, //50-57
50           R,     R,     R,   LRE,   DEF,   RLE,   PDF,     S, //58-5F
51         NSM,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //60-67
52         DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //68-6F
53         DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //70-77
54         DEF,   DEF,   DEF,   LRO,     B,   RLO,    BN,   DEF  //78-7F
55     };
56     static final int nEntries = customClasses.length;
57
58     static final String textIn  = "JIH.>12->a \u05d0\u05d1 6 ABC78";
59     static final String textOut = "12<.HIJ->a 78CBA 6 \u05d1\u05d0";
60
61     protected static class CustomClassifier extends BidiClassifier {
62
63         public CustomClassifier(Object context) {
64           super(context);
65         }
66         public int classify(int c) {
67             // some (meaningless) action - just for testing purposes
68             return (this.context != null ? ((Integer)context).intValue()
69                             : c >= nEntries ? super.classify(c)
70                             : customClasses[c]);
71         }
72     }
73
74     private void verifyClassifier(Bidi bidi) {
75         BidiClassifier actualClassifier = bidi.getCustomClassifier();
76
77         if (this.classifier == null) {
78             if (actualClassifier != null) {
79                 errln("Bidi classifier is not yet set, but reported as not null");
80             }
81         } else {
82             Class<?> expectedClass = this.classifier.getClass();
83             assertTrue("null Bidi classifier", actualClassifier != null);
84             if (actualClassifier == null) {
85                 return;
86             }
87             if (expectedClass.isInstance(actualClassifier)) {
88                 Object context = classifier.getContext();
89                 if (context == null) {
90                     if (actualClassifier.getContext() != null) {
91                         errln("Unexpected context, should be null");
92                     }
93                 } else {
94                     assertEquals("Unexpected classifier context", context,
95                                  actualClassifier.getContext());
96                     assertEquals("Unexpected context's content",
97                                  ((Integer)context).intValue(),
98                                  bidi.getCustomizedClass('a'));
99                 }
100             } else {
101                 errln("Bidi object reports classifier is an instance of " +
102                       actualClassifier.getClass().getName() +
103                       ",\nwhile the expected classifier should be an " +
104                       "instance of " + expectedClass);
105             }
106         }
107     }
108
109     CustomClassifier classifier = null;
110
111     public void testClassOverride()
112     {
113         Bidi bidi;
114
115         logln("\nEntering TestClassOverride\n");
116
117         bidi = new Bidi();
118         verifyClassifier(bidi);
119
120         classifier = new CustomClassifier(new Integer(TestData.R));
121         bidi.setCustomClassifier(classifier);
122         verifyClassifier(bidi);
123
124         classifier.setContext(null);
125         verifyClassifier(bidi);
126
127         bidi.setPara(textIn, Bidi.LTR, null);
128
129         String out = bidi.writeReordered(Bidi.DO_MIRRORING);
130         assertEquals("Actual and expected output mismatch", textOut, out);
131
132         logln("\nExiting TestClassOverride\n");
133     }
134
135
136     public static void main(String[] args) {
137         try {
138             new TestClassOverride().run(args);
139         }
140         catch (Exception e) {
141             System.out.println(e);
142         }
143     }
144 }