]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_2_1-src/src/com/ibm/icu/dev/test/lang/UCharacterCompare.java
icu4jsrc
[Dictionary.git] / jars / icu4j-4_2_1-src / src / com / ibm / icu / dev / test / lang / UCharacterCompare.java
1 /**\r
2 *******************************************************************************\r
3 * Copyright (C) 1996-2006, International Business Machines Corporation and    *\r
4 * others. All Rights Reserved.                                                *\r
5 *******************************************************************************\r
6 */\r
7 \r
8 package com.ibm.icu.dev.test.lang;\r
9 \r
10 import com.ibm.icu.lang.UCharacter;\r
11 import com.ibm.icu.lang.UCharacterCategory;\r
12 import java.io.FileWriter;\r
13 import java.io.PrintWriter;\r
14 import java.util.Hashtable;\r
15 import java.util.Enumeration;\r
16 \r
17 /**\r
18 * A class to compare the difference in methods between java.lang.Character and\r
19 * UCharacter\r
20 * @author Syn Wee Quek\r
21 * @since oct 06 2000\r
22 * @see com.ibm.icu.lang.UCharacter\r
23 */\r
24 \r
25 public final class UCharacterCompare\r
26\r
27   // private variables ================================================\r
28   \r
29   private static Hashtable m_hashtable_ = new Hashtable();\r
30   \r
31   // public methods ======================================================\r
32   \r
33   /**\r
34   * Main testing method\r
35   */\r
36   public static void main(String arg[])\r
37   {\r
38       System.out.println("Starting character compare");\r
39     try\r
40     {\r
41       FileWriter f;\r
42       if (arg.length == 0)\r
43         f = new FileWriter("compare.txt");\r
44       else\r
45         f = new FileWriter(arg[0]);\r
46       PrintWriter p = new PrintWriter(f);\r
47       p.print("char  character name                                                           ");\r
48       p.println("method name               ucharacter character");\r
49       for (char i = Character.MIN_VALUE; i < Character.MAX_VALUE; i ++)\r
50       {\r
51           System.out.println("character \\u" + Integer.toHexString(i));\r
52         if (UCharacter.isDefined(i) != Character.isDefined(i))\r
53           trackDifference(p, i, "isDefined()", "" + UCharacter.isDefined(i), \r
54                           "" + Character.isDefined(i));\r
55         else\r
56         {\r
57           if (UCharacter.digit(i, 10) != Character.digit(i, 10))\r
58             trackDifference(p, i, "digit()", "" + UCharacter.digit(i, 10),\r
59                             "" + Character.digit(i, 10));\r
60           if (UCharacter.getNumericValue(i) != Character.getNumericValue(i))\r
61             trackDifference(p, i, "getNumericValue()", \r
62                             "" + UCharacter.getNumericValue(i),\r
63                             "" + Character.getNumericValue(i));\r
64           if (!compareType(UCharacter.getType(i), Character.getType(i)))\r
65             trackDifference(p, i, "getType()", "" + UCharacter.getType(i),\r
66                             "" + Character.getType(i));\r
67           if (UCharacter.isDigit(i) != Character.isDigit(i))\r
68             trackDifference(p, i, "isDigit()",\r
69                             "" + UCharacter.isDigit(i), \r
70                             "" + Character.isDigit(i));\r
71           if (UCharacter.isISOControl(i) != Character.isISOControl(i))\r
72             trackDifference(p, i, "isISOControl()", \r
73                             "" + UCharacter.isISOControl(i),\r
74                             "" + Character.isISOControl(i));\r
75           if (UCharacter.isLetter(i) != Character.isLetter(i))\r
76             trackDifference(p, i, "isLetter()", "" + UCharacter.isLetter(i),\r
77                             "" + Character.isLetter(i));\r
78           if (UCharacter.isLetterOrDigit(i) != Character.isLetterOrDigit(i))\r
79             trackDifference(p, i, "isLetterOrDigit()", \r
80                             "" + UCharacter.isLetterOrDigit(i),\r
81                             "" + Character.isLetterOrDigit(i));\r
82           if (UCharacter.isLowerCase(i) != Character.isLowerCase(i))\r
83             trackDifference(p, i, "isLowerCase()", \r
84                             "" + UCharacter.isLowerCase(i),\r
85                             "" + Character.isLowerCase(i));\r
86           if (UCharacter.isWhitespace(i) != Character.isWhitespace(i))\r
87             trackDifference(p, i, "isWhitespace()", \r
88                             "" + UCharacter.isWhitespace(i),\r
89                             "" + Character.isWhitespace(i));\r
90           if (UCharacter.isSpaceChar(i) != Character.isSpaceChar(i))\r
91             trackDifference(p, i, "isSpaceChar()", \r
92                             "" + UCharacter.isSpaceChar(i),\r
93                             "" + Character.isSpaceChar(i));\r
94           if (UCharacter.isTitleCase(i) != Character.isTitleCase(i))\r
95             trackDifference(p, i, "isTitleChar()", \r
96                             "" + UCharacter.isTitleCase(i),\r
97                             "" + Character.isTitleCase(i));\r
98           if (UCharacter.isUnicodeIdentifierPart(i) != \r
99               Character.isUnicodeIdentifierPart(i))\r
100             trackDifference(p, i, "isUnicodeIdentifierPart()", \r
101                             "" + UCharacter.isUnicodeIdentifierPart(i),\r
102                             "" + Character.isUnicodeIdentifierPart(i));\r
103           if (UCharacter.isUnicodeIdentifierStart(i) != \r
104               Character.isUnicodeIdentifierStart(i))\r
105             trackDifference(p, i, "isUnicodeIdentifierStart()",\r
106                             "" + UCharacter.isUnicodeIdentifierStart(i),\r
107                             "" + Character.isUnicodeIdentifierStart(i));\r
108           if (UCharacter.isIdentifierIgnorable(i) != \r
109               Character.isIdentifierIgnorable(i))\r
110             trackDifference(p, i, "isIdentifierIgnorable()",\r
111                             "" + UCharacter.isIdentifierIgnorable(i),\r
112                             "" + Character.isIdentifierIgnorable(i));\r
113           if (UCharacter.isUpperCase(i) != Character.isUpperCase(i))\r
114             trackDifference(p, i, "isUpperCase()", \r
115                             "" + UCharacter.isUpperCase(i),\r
116                             "" + Character.isUpperCase(i));\r
117           if (UCharacter.toLowerCase(i) != Character.toLowerCase(i))\r
118             trackDifference(p, i, "toLowerCase()", \r
119                             Integer.toHexString(UCharacter.toLowerCase(i)),\r
120                             Integer.toHexString(Character.toLowerCase(i)));\r
121           if (!UCharacter.toString(i).equals(new Character(i).toString()))\r
122             trackDifference(p, i, "toString()",\r
123                             UCharacter.toString(i),\r
124                             new Character(i).toString());\r
125           if (UCharacter.toTitleCase(i) != Character.toTitleCase(i))\r
126             trackDifference(p, i, "toTitleCase()",\r
127                             Integer.toHexString(UCharacter.toTitleCase(i)),\r
128                             Integer.toHexString(Character.toTitleCase(i)));\r
129           if (UCharacter.toUpperCase(i) != Character.toUpperCase(i))\r
130             trackDifference(p, i, "toUpperCase()",\r
131                             Integer.toHexString(UCharacter.toUpperCase(i)),\r
132                             Integer.toHexString(Character.toUpperCase(i)));\r
133         }\r
134       }\r
135       summary(p);\r
136       p.close();\r
137     } \r
138     catch (Exception e)\r
139     {\r
140       e.printStackTrace();\r
141     }\r
142   }\r
143   \r
144   // private methods ===================================================\r
145   \r
146   /**\r
147   * Comparing types\r
148   * @param uchartype UCharacter type\r
149   * @param jchartype java.lang.Character type\r
150   */\r
151   private static boolean compareType(int uchartype, int jchartype)\r
152   {\r
153     if (uchartype == UCharacterCategory.UNASSIGNED && \r
154         jchartype == Character.UNASSIGNED)\r
155       return true;\r
156     if (uchartype == UCharacterCategory.UPPERCASE_LETTER && \r
157         jchartype == Character.UPPERCASE_LETTER)\r
158       return true;                                                   \r
159     if (uchartype == UCharacterCategory.LOWERCASE_LETTER && \r
160         jchartype == Character.LOWERCASE_LETTER)\r
161       return true;                                                   \r
162     if (uchartype == UCharacterCategory.TITLECASE_LETTER && \r
163         jchartype == Character.TITLECASE_LETTER)\r
164       return true;\r
165     if (uchartype == UCharacterCategory.MODIFIER_LETTER && \r
166         jchartype == Character.MODIFIER_LETTER)\r
167       return true;\r
168     if (uchartype == UCharacterCategory.OTHER_LETTER && \r
169         jchartype == Character.OTHER_LETTER)\r
170       return true;\r
171     if (uchartype == UCharacterCategory.NON_SPACING_MARK && \r
172         jchartype == Character.NON_SPACING_MARK)\r
173       return true;\r
174     if (uchartype == UCharacterCategory.ENCLOSING_MARK && \r
175         jchartype == Character.ENCLOSING_MARK)\r
176       return true;\r
177     if (uchartype == UCharacterCategory.COMBINING_SPACING_MARK && \r
178         jchartype == Character.COMBINING_SPACING_MARK)\r
179       return true;\r
180       if (uchartype == UCharacterCategory.DECIMAL_DIGIT_NUMBER && \r
181         jchartype == Character.DECIMAL_DIGIT_NUMBER)\r
182       return true;\r
183       if (uchartype == UCharacterCategory.LETTER_NUMBER && \r
184         jchartype == Character.LETTER_NUMBER)\r
185       return true;\r
186       if (uchartype == UCharacterCategory.OTHER_NUMBER && \r
187         jchartype == Character.OTHER_NUMBER)\r
188       return true;\r
189       if (uchartype == UCharacterCategory.SPACE_SEPARATOR && \r
190         jchartype == Character.SPACE_SEPARATOR)\r
191       return true;\r
192       if (uchartype == UCharacterCategory.LINE_SEPARATOR && \r
193         jchartype == Character.LINE_SEPARATOR)\r
194       return true;\r
195       if (uchartype == UCharacterCategory.PARAGRAPH_SEPARATOR && \r
196         jchartype == Character.PARAGRAPH_SEPARATOR)\r
197       return true;\r
198       if (uchartype == UCharacterCategory.CONTROL && \r
199         jchartype == Character.CONTROL)\r
200       return true;\r
201     if (uchartype == UCharacterCategory.FORMAT && \r
202         jchartype == Character.FORMAT)\r
203       return true;\r
204       if (uchartype == UCharacterCategory.PRIVATE_USE && \r
205         jchartype == Character.PRIVATE_USE)\r
206       return true;\r
207     if (uchartype == UCharacterCategory.SURROGATE && \r
208         jchartype == Character.SURROGATE)\r
209       return true;\r
210     if (uchartype == UCharacterCategory.DASH_PUNCTUATION && \r
211         jchartype == Character.DASH_PUNCTUATION)\r
212       return true;\r
213       if (uchartype == UCharacterCategory.START_PUNCTUATION && \r
214         jchartype == Character.START_PUNCTUATION)\r
215       return true;\r
216       if (uchartype == UCharacterCategory.END_PUNCTUATION && \r
217         jchartype == Character.END_PUNCTUATION)\r
218       return true;\r
219     if (uchartype == UCharacterCategory.CONNECTOR_PUNCTUATION && \r
220         jchartype == Character.CONNECTOR_PUNCTUATION)\r
221       return true;\r
222     if (uchartype == UCharacterCategory.OTHER_PUNCTUATION && \r
223         jchartype == Character.OTHER_PUNCTUATION)\r
224       return true;\r
225       if (uchartype == UCharacterCategory.MATH_SYMBOL && \r
226         jchartype == Character.MATH_SYMBOL)\r
227       return true;\r
228       if (uchartype == UCharacterCategory.CURRENCY_SYMBOL && \r
229         jchartype == Character.CURRENCY_SYMBOL)\r
230       return true;\r
231       if (uchartype == UCharacterCategory.MODIFIER_SYMBOL && \r
232         jchartype == Character.MODIFIER_SYMBOL)\r
233       return true;\r
234       if (uchartype == UCharacterCategory.OTHER_SYMBOL && \r
235         jchartype == Character.OTHER_SYMBOL)\r
236       return true;\r
237       if (uchartype == UCharacterCategory.INITIAL_PUNCTUATION && \r
238         jchartype == Character.START_PUNCTUATION)\r
239       return true;\r
240     if (uchartype == UCharacterCategory.FINAL_PUNCTUATION && \r
241         jchartype == Character.END_PUNCTUATION)\r
242       return true;\r
243       /*if (uchartype == UCharacterCategory.GENERAL_OTHER_TYPES && \r
244         jchartype == Character.GENERAL_OTHER_TYPES)\r
245       return true;*/\r
246     return false;\r
247     }\r
248     \r
249     /**\r
250     * Difference writing to file\r
251     * @param f file outputstream\r
252     * @param ch code point\r
253     * @param method for testing\r
254     * @param ucharval UCharacter value after running method\r
255     * @param charval Character value after running method\r
256     */\r
257     private static void trackDifference(PrintWriter f, int ch, String method,\r
258                                         String ucharval, String charval)\r
259       throws Exception\r
260     {\r
261       if (m_hashtable_.containsKey(method))\r
262       {\r
263         Integer value = (Integer)m_hashtable_.get(method);\r
264         m_hashtable_.put(method, new Integer(value.intValue() + 1));\r
265       }\r
266       else\r
267         m_hashtable_.put(method, new Integer(1));\r
268       \r
269       String temp = Integer.toHexString(ch);\r
270       StringBuffer s = new StringBuffer(temp);\r
271       for (int i = 0; i < 6 - temp.length(); i ++)\r
272         s.append(' ');\r
273       temp = UCharacter.getExtendedName(ch);\r
274       if (temp == null)\r
275         temp = " ";\r
276       s.append(temp);\r
277       for (int i = 0; i < 73 - temp.length(); i ++)\r
278         s.append(' ');\r
279       \r
280       s.append(method);\r
281       for (int i = 0; i < 27 - method.length(); i ++)\r
282         s.append(' ');\r
283       s.append(ucharval);\r
284       for (int i = 0; i < 11 - ucharval.length(); i ++)\r
285         s.append(' ');\r
286       s.append(charval);\r
287       f.println(s.toString());\r
288     }\r
289     \r
290     /**\r
291     * Does up a summary of the differences\r
292     * @param f file outputstream\r
293     */\r
294     private static void summary(PrintWriter f)\r
295     {\r
296       f.println("==================================================");\r
297       f.println("Summary of differences");\r
298       for (Enumeration e = m_hashtable_.keys() ; e.hasMoreElements() ;) \r
299       {\r
300         StringBuffer method = new StringBuffer((String)e.nextElement());\r
301         int count = ((Integer)m_hashtable_.get(method.toString())).intValue();\r
302         for (int i = 30 - method.length(); i > 0; i --)\r
303           method.append(' ');\r
304       f.println(method + "  " + count);\r
305     }\r
306     }\r
307 }\r
308 \r