]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_2_1-src/src/com/ibm/icu/dev/test/collator/LotusCollationKoreanTest.java
icu4jsrc
[Dictionary.git] / jars / icu4j-4_2_1-src / src / com / ibm / icu / dev / test / collator / LotusCollationKoreanTest.java
1 /*\r
2  *******************************************************************************\r
3  * Copyright (C) 2002-2005, International Business Machines Corporation and    *\r
4  * others. All Rights Reserved.                                                *\r
5  *******************************************************************************\r
6  */\r
7 \r
8 /** \r
9  * Port From:   ICU4C v2.1 : Collate/LotusCollationKoreanTest\r
10  * Source File: $ICU4CRoot/source/test/intltest/lcukocol.cpp\r
11  **/\r
12  \r
13 package com.ibm.icu.dev.test.collator;\r
14  \r
15 import com.ibm.icu.dev.test.*;\r
16 import com.ibm.icu.text.*;\r
17 \r
18 import java.util.Locale;\r
19  \r
20 public class LotusCollationKoreanTest extends TestFmwk{\r
21     public static void main(String[] args) throws Exception{\r
22         new LotusCollationKoreanTest().run(args);\r
23     }\r
24     \r
25     private static char[][] testSourceCases = {\r
26         {0xac00}\r
27     };\r
28     \r
29     private static char[][] testTargetCases = {\r
30         {0xac01}\r
31     };\r
32     \r
33     private static int[] results = {\r
34         -1\r
35     };\r
36     \r
37     private Collator myCollation;\r
38     \r
39     public LotusCollationKoreanTest() {\r
40     }\r
41     protected void init()throws Exception{\r
42         myCollation = Collator.getInstance(Locale.KOREAN);\r
43         myCollation.setDecomposition(Collator.CANONICAL_DECOMPOSITION);\r
44     }\r
45     // performs test with strength TERIARY\r
46     public void TestTertiary() {\r
47         int i = 0;\r
48         myCollation.setStrength(Collator.TERTIARY);\r
49         for (i = 0; i < 1; i++) {\r
50             doTest(testSourceCases[i], testTargetCases[i], results[i]);\r
51             }\r
52         }\r
53     \r
54     // main test routine, tests rules specific to "Korean" locale\r
55     private void doTest( char[] source, char[] target, int result) {\r
56         String s = new String(source);\r
57         String t = new String(target);\r
58         int compareResult = myCollation.compare(s, t);\r
59         CollationKey sortKey1, sortKey2;\r
60         sortKey1 = myCollation.getCollationKey(s);\r
61         sortKey2 = myCollation.getCollationKey(t);\r
62         int keyResult = sortKey1.compareTo(sortKey2);\r
63         reportCResult( s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result ); \r
64     }\r
65 \r
66     private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,\r
67                                 int compareResult, int keyResult, int incResult, int expectedResult ){\r
68         if (expectedResult < -1 || expectedResult > 1) {\r
69             errln("***** invalid call to reportCResult ****");\r
70             return;\r
71         }\r
72 \r
73         boolean ok1 = (compareResult == expectedResult);\r
74         boolean ok2 = (keyResult == expectedResult);\r
75         boolean ok3 = (incResult == expectedResult);\r
76 \r
77         if (ok1 && ok2 && ok3 && !isVerbose()) {\r
78             return;    \r
79         } else {\r
80             String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";\r
81             String msg2 = "\", \"";\r
82             String msg3 = "\") returned ";\r
83             String msg4 = "; expected ";\r
84             \r
85             String sExpect = new String("");\r
86             String sResult = new String("");\r
87             sResult = appendCompareResult(compareResult, sResult);\r
88             sExpect = appendCompareResult(expectedResult, sExpect);\r
89             if (ok1) {\r
90                 logln(msg1 + source + msg2 + target + msg3 + sResult);\r
91             } else {\r
92                 errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);\r
93             }\r
94             \r
95             msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";\r
96             msg2 = "\").compareTo(key(\"";\r
97             msg3 = "\")) returned ";\r
98             sResult = appendCompareResult(keyResult, sResult);\r
99             if (ok2) {\r
100                 logln(msg1 + source + msg2 + target + msg3 + sResult);\r
101             } else {\r
102                 errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);\r
103                 msg1 = "  ";\r
104                 msg2 = " vs. ";\r
105                 errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));\r
106             }\r
107             \r
108             msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";\r
109             msg2 = "\", \"";\r
110             msg3 = "\") returned ";\r
111 \r
112             sResult = appendCompareResult(incResult, sResult);\r
113 \r
114             if (ok3) {\r
115                 logln(msg1 + source + msg2 + target + msg3 + sResult);\r
116             } else {\r
117                 errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);\r
118             }                \r
119         }\r
120     }\r
121     \r
122     private String appendCompareResult(int result, String target){\r
123         if (result == -1) {\r
124             target += "LESS";\r
125         } else if (result == 0) {\r
126             target += "EQUAL";\r
127         } else if (result == 1) {\r
128             target += "GREATER";\r
129         } else {\r
130             String huh = "?";\r
131             target += huh + result;\r
132         }\r
133         return target;\r
134     }\r
135     \r
136     String prettify(CollationKey sourceKey) {\r
137         int i;\r
138         byte[] bytes= sourceKey.toByteArray();\r
139         String target = "[";\r
140     \r
141         for (i = 0; i < bytes.length; i++) {\r
142             target += Integer.toHexString(bytes[i]);\r
143             target += " ";\r
144         }\r
145         target += "]";\r
146         return target;\r
147     }\r
148 }