]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_2_1-src/src/com/ibm/icu/dev/test/util/VersionInfoTest.java
icu4jsrc
[Dictionary.git] / jars / icu4j-4_2_1-src / src / com / ibm / icu / dev / test / util / VersionInfoTest.java
1 /*\r
2 *******************************************************************************\r
3 * Copyright (C) 1996-2008, International Business Machines Corporation and    *\r
4 * others. All Rights Reserved.                                                *\r
5 *******************************************************************************\r
6 */\r
7 \r
8 \r
9 package com.ibm.icu.dev.test.util;\r
10 \r
11 \r
12 import com.ibm.icu.dev.test.TestFmwk;\r
13 import com.ibm.icu.util.VersionInfo;\r
14 \r
15 \r
16 /**\r
17 * Testing class for VersionInfo\r
18 * @author Syn Wee Quek\r
19 * @since release 2.1 March 01 2002\r
20 */\r
21 public final class VersionInfoTest extends TestFmwk \r
22\r
23     // constructor ---------------------------------------------------\r
24   \r
25     /**\r
26     * Constructor\r
27     */\r
28     public VersionInfoTest()\r
29     {\r
30     }\r
31 \r
32     // public methods -----------------------------------------------\r
33     \r
34     public static void main(String arg[]) \r
35     {\r
36         VersionInfoTest test = new VersionInfoTest();\r
37         try {\r
38             test.run(arg);\r
39         } catch (Exception e) {\r
40             test.errln("Error testing VersionInfo");\r
41         }\r
42     }\r
43     \r
44     /**\r
45      * Test that the instantiation works\r
46      */\r
47     public void TestInstance()\r
48     {\r
49         for (int i = 0; i < INSTANCE_INVALID_STRING_.length; i ++) {\r
50             try {\r
51                 VersionInfo.getInstance(INSTANCE_INVALID_STRING_[i]);\r
52                 errln("\"" + INSTANCE_INVALID_STRING_[i] + \r
53                       "\" should produce an exception");\r
54             } catch (RuntimeException e) {\r
55                 logln("PASS: \"" + INSTANCE_INVALID_STRING_[i] + \r
56                       "\" failed as expected");\r
57             }\r
58         }\r
59         for (int i = 0; i < INSTANCE_VALID_STRING_.length; i ++) {\r
60             try {\r
61                 VersionInfo.getInstance(INSTANCE_VALID_STRING_[i]);\r
62             } catch (RuntimeException e) {\r
63                 errln("\"" + INSTANCE_VALID_STRING_[i] + \r
64                       "\" should produce an valid version");\r
65             }\r
66         }\r
67         for (int i = 0; i < INSTANCE_INVALID_INT_.length; i ++) {\r
68             try {\r
69                 getInstance(INSTANCE_INVALID_INT_[i]);\r
70                 errln("invalid ints should produce an exception");\r
71             } catch (RuntimeException e) {\r
72                 logln("PASS: \"" + INSTANCE_INVALID_INT_[i] + \r
73                       "\" failed as expected");\r
74             }\r
75         }\r
76         for (int i = 0; i < INSTANCE_VALID_INT_.length; i ++) {\r
77             try {\r
78                 getInstance(INSTANCE_VALID_INT_[i]);\r
79             } catch (RuntimeException e) {\r
80                 errln("valid ints should not produce an exception");\r
81             }\r
82         }\r
83     }\r
84     \r
85     /**\r
86      * Test that the comparison works\r
87      */\r
88     public void TestCompare()\r
89     {\r
90         for (int i = 0; i < COMPARE_NOT_EQUAL_STRING_.length; i += 2) {\r
91             VersionInfo v1 = \r
92                         VersionInfo.getInstance(COMPARE_NOT_EQUAL_STRING_[i]);\r
93             VersionInfo v2 = \r
94                     VersionInfo.getInstance(COMPARE_NOT_EQUAL_STRING_[i + 1]);\r
95             if (v1.compareTo(v2) == 0) {\r
96                 errln(COMPARE_NOT_EQUAL_STRING_[i] + " should not equal " +\r
97                       COMPARE_NOT_EQUAL_STRING_[i + 1]);\r
98             }\r
99         }\r
100         for (int i = 0; i < COMPARE_NOT_EQUAL_INT_.length; i += 2) {\r
101             VersionInfo v1 = getInstance(COMPARE_NOT_EQUAL_INT_[i]);\r
102             VersionInfo v2 = getInstance(COMPARE_NOT_EQUAL_INT_[i + 1]);\r
103             if (v1.compareTo(v2) == 0) {\r
104                 errln(COMPARE_NOT_EQUAL_INT_[i] + " should not equal " +\r
105                       COMPARE_NOT_EQUAL_INT_[i + 1]);\r
106             }\r
107         }\r
108         for (int i = 0; i < COMPARE_EQUAL_STRING_.length - 1; i ++) {\r
109             VersionInfo v1 = \r
110                         VersionInfo.getInstance(COMPARE_EQUAL_STRING_[i]);\r
111             VersionInfo v2 = \r
112                     VersionInfo.getInstance(COMPARE_EQUAL_STRING_[i + 1]);\r
113             if (v1.compareTo(v2) != 0) {\r
114                 errln(COMPARE_EQUAL_STRING_[i] + " should equal " +\r
115                       COMPARE_EQUAL_STRING_[i + 1]);\r
116             }\r
117         }\r
118         for (int i = 0; i < COMPARE_EQUAL_INT_.length - 1; i ++) {\r
119             VersionInfo v1 = getInstance(COMPARE_EQUAL_INT_[i]);\r
120             VersionInfo v2 = getInstance(COMPARE_EQUAL_INT_[i + 1]);\r
121             if (v1.compareTo(v2) != 0) {\r
122                 errln(COMPARE_EQUAL_INT_[i] + " should equal " +\r
123                       COMPARE_EQUAL_INT_[i + 1]);\r
124             }\r
125         }\r
126         for (int i = 0; i < COMPARE_LESS_.length - 1; i ++) {\r
127             VersionInfo v1 = VersionInfo.getInstance(COMPARE_LESS_[i]);\r
128             VersionInfo v2 = VersionInfo.getInstance(COMPARE_LESS_[i + 1]);\r
129             if (v1.compareTo(v2) >= 0) {\r
130                 errln(COMPARE_LESS_[i] + " should be less than " + \r
131                       COMPARE_LESS_[i + 1]);\r
132             }\r
133             if (v2.compareTo(v1) <= 0) {\r
134                 errln(COMPARE_LESS_[i + 1] + " should be greater than " + \r
135                       COMPARE_LESS_[i]);\r
136             }\r
137         }\r
138     }\r
139     \r
140     /**\r
141      * Test that the getter function works\r
142      */\r
143     public void TestGetter()\r
144     {\r
145         for (int i = 0; i < GET_STRING_.length; i ++) {\r
146             VersionInfo v = VersionInfo.getInstance(GET_STRING_[i]);\r
147             if (v.getMajor() != GET_RESULT_[i << 2] ||\r
148                 v.getMinor() != GET_RESULT_[(i << 2) + 1] ||\r
149                 v.getMilli() != GET_RESULT_[(i << 2) + 2] ||\r
150                 v.getMicro() != GET_RESULT_[(i << 2) + 3]) {\r
151                 errln(GET_STRING_[i] + " should return major=" + \r
152                       GET_RESULT_[i << 2] + " minor=" + \r
153                       GET_RESULT_[(i << 2) + 1] + " milli=" + \r
154                       GET_RESULT_[(i << 2) + 2] + " micro=" +\r
155                       GET_RESULT_[(i << 2) + 3]);  \r
156             }\r
157             v = getInstance(GET_INT_[i]);\r
158             if (v.getMajor() != GET_RESULT_[i << 2] ||\r
159                 v.getMinor() != GET_RESULT_[(i << 2) + 1] ||\r
160                 v.getMilli() != GET_RESULT_[(i << 2) + 2] ||\r
161                 v.getMicro() != GET_RESULT_[(i << 2) + 3]) {\r
162                 errln(GET_STRING_[i] + " should return major=" + \r
163                       GET_RESULT_[i << 2] + " minor=" + \r
164                       GET_RESULT_[(i << 2) + 1] + " milli=" + \r
165                       GET_RESULT_[(i << 2) + 2] + " micro=" +\r
166                       GET_RESULT_[(i << 2) + 3]);  \r
167             }\r
168         }\r
169     }\r
170     \r
171     /**\r
172      * Test toString()\r
173      */\r
174     public void TesttoString() \r
175     {\r
176         for (int i = 0; i < TOSTRING_STRING_.length; i ++) {\r
177             VersionInfo v = VersionInfo.getInstance(TOSTRING_STRING_[i]);\r
178             if (!v.toString().equals(TOSTRING_RESULT_[i])) {\r
179                 errln("toString() for " + TOSTRING_STRING_[i] + \r
180                       " should produce " + TOSTRING_RESULT_[i]);\r
181             }\r
182             v = getInstance(TOSTRING_INT_[i]);\r
183             if (!v.toString().equals(TOSTRING_RESULT_[i])) {\r
184                 errln("toString() for " + TOSTRING_INT_[i] + \r
185                       " should produce " + TOSTRING_RESULT_[i]);\r
186             }\r
187         }\r
188     }\r
189     \r
190     /**\r
191      * Test Comparable interface\r
192      */\r
193     public void TestComparable() {\r
194         try {\r
195             VersionInfo v = VersionInfo.ICU_VERSION;\r
196             String s  = "Some String";\r
197             if(v.compareTo(s) >0) {\r
198                 errln("VersionInfo.compareTo(String) returned >0, should have thrown exception");\r
199             } else {\r
200                 errln("VersionInfo.compareTo(String) returned <=0, should have thrown exception");\r
201             }\r
202         } catch(ClassCastException cce) {\r
203             logln("Pass: compareTo(String) returned " + cce.toString());\r
204         }\r
205         for (int i = 0; i < COMPARE_NOT_EQUAL_STRING_.length; i += 2) {\r
206             VersionInfo v1 = \r
207                         VersionInfo.getInstance(COMPARE_NOT_EQUAL_STRING_[i]);\r
208             Object v2 = \r
209                     VersionInfo.getInstance(COMPARE_NOT_EQUAL_STRING_[i + 1]);\r
210             if (v1.compareTo(v2) == 0) {\r
211                 errln(COMPARE_NOT_EQUAL_STRING_[i] + " should not equal " +\r
212                       COMPARE_NOT_EQUAL_STRING_[i + 1]);\r
213             }\r
214         }\r
215         for (int i = 0; i < COMPARE_EQUAL_STRING_.length - 1; i ++) {\r
216             VersionInfo v1 = \r
217                         VersionInfo.getInstance(COMPARE_EQUAL_STRING_[i]);\r
218             Object v2 = \r
219                     VersionInfo.getInstance(COMPARE_EQUAL_STRING_[i + 1]);\r
220             if (v1.compareTo(v2) != 0) {\r
221                 errln(COMPARE_EQUAL_STRING_[i] + " should equal " +\r
222                       COMPARE_EQUAL_STRING_[i + 1]);\r
223             }\r
224         }\r
225     }\r
226     // private methods --------------------------------------------------\r
227     \r
228     /**\r
229      * int array versioninfo creation\r
230      */\r
231     private static VersionInfo getInstance(int data[])\r
232     {\r
233         switch (data.length) {\r
234             case 1:\r
235                 return VersionInfo.getInstance(data[0]);\r
236             case 2:\r
237                 return VersionInfo.getInstance(data[0], data[1]);\r
238             case 3:\r
239                 return VersionInfo.getInstance(data[0], data[1], data[2]);\r
240             default:\r
241                 return VersionInfo.getInstance(data[0], data[1], data[2], \r
242                                                data[3]);\r
243         }\r
244     }\r
245     \r
246     // private data members --------------------------------------------\r
247     \r
248     /**\r
249      * Test instance data\r
250      */\r
251     private static final String INSTANCE_INVALID_STRING_[] = {\r
252         "a",\r
253         "-1",\r
254         "-1.0",\r
255         "-1.0.0",\r
256         "-1.0.0.0",\r
257         "0.-1",\r
258         "0.0.-1",\r
259         "0.0.0.-1",\r
260         "256",\r
261         "256.0",\r
262         "256.0.0",\r
263         "256.0.0.0",\r
264         "0.256",\r
265         "0.0.256",\r
266         "0.0.0.256",\r
267         "1.2.3.4.5"\r
268     };\r
269     private static final String INSTANCE_VALID_STRING_[] = {\r
270         "255",\r
271         "255.255",\r
272         "255.255.255",\r
273         "255.255.255.255"\r
274     };\r
275     private static final int INSTANCE_INVALID_INT_[][] = {\r
276         {-1},\r
277         {-1, 0},\r
278         {-1, 0, 0},\r
279         {-1, 0, 0, 0},\r
280         {0, -1},\r
281         {0, 0, -1},\r
282         {0, 0, 0, -1},\r
283         {256},\r
284         {256, 0},\r
285         {256, 0, 0},\r
286         {256, 0, 0, 0},\r
287         {0, 256},\r
288         {0, 0, 256},\r
289         {0, 0, 0, 256},\r
290     };\r
291     private static final int INSTANCE_VALID_INT_[][] = {\r
292         {255},\r
293         {255, 255},\r
294         {255, 255, 255},\r
295         {255, 255, 255, 255}\r
296     };\r
297     \r
298     /**\r
299      * Test compare data\r
300      */\r
301     private static final String COMPARE_NOT_EQUAL_STRING_[] = {\r
302         "2.0.0.0", "3.0.0.0"\r
303     };\r
304     private static final int COMPARE_NOT_EQUAL_INT_[][] = {\r
305         {2, 0, 0, 0}, {3, 0, 0, 0}\r
306     };\r
307     private static final String COMPARE_EQUAL_STRING_[] = {\r
308         "2.0.0.0", "2.0.0", "2.0", "2"\r
309     };\r
310     private static final int COMPARE_EQUAL_INT_[][] = {\r
311         {2}, {2, 0}, {2, 0, 0}, {2, 0, 0, 0}    \r
312     };\r
313     private static final String COMPARE_LESS_[] = {\r
314         "0", "0.0.0.1", "0.0.1", "0.1", "1", "2", "2.1", "2.1.1", "2.1.1.1"\r
315     };\r
316     \r
317     /**\r
318      * Test Getter data\r
319      */\r
320     private static final String GET_STRING_[] = {\r
321         "0",\r
322         "1.1",\r
323         "2.1.255",\r
324         "3.1.255.100"\r
325     };\r
326     private static final int GET_INT_[][] = {\r
327         {0},\r
328         {1, 1},\r
329         {2, 1, 255},\r
330         {3, 1, 255, 100}\r
331     };\r
332     private static final int GET_RESULT_[] = {\r
333         0, 0, 0, 0,\r
334         1, 1, 0, 0,\r
335         2, 1, 255, 0,\r
336         3, 1, 255, 100\r
337     };\r
338     \r
339     /**\r
340      * Test toString data\r
341      */\r
342     private static final String TOSTRING_STRING_[] = {\r
343         "0",\r
344         "1.1",\r
345         "2.1.255",\r
346         "3.1.255.100"    \r
347     };\r
348     private static final int TOSTRING_INT_[][] = {\r
349         {0},\r
350         {1, 1},\r
351         {2, 1, 255},\r
352         {3, 1, 255, 100}\r
353     };\r
354     private static final String TOSTRING_RESULT_[] = {\r
355         "0.0.0.0",\r
356         "1.1.0.0",\r
357         "2.1.255.0",\r
358         "3.1.255.100"    \r
359     };\r
360 }