]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/main/tests/core/src/com/ibm/icu/dev/test/util/VersionInfoTest.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / main / tests / core / src / com / ibm / icu / dev / test / util / VersionInfoTest.java
1 /*\r
2 *******************************************************************************\r
3 * Copyright (C) 1996-2009, 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         for (int i = 0; i < COMPARE_NOT_EQUAL_STRING_.length; i += 2) {\r
195             VersionInfo v1 = VersionInfo.getInstance(COMPARE_NOT_EQUAL_STRING_[i]);\r
196             VersionInfo v2 = VersionInfo.getInstance(COMPARE_NOT_EQUAL_STRING_[i + 1]);\r
197             if (v1.compareTo(v2) == 0) {\r
198                 errln(COMPARE_NOT_EQUAL_STRING_[i] + " should not equal " +\r
199                       COMPARE_NOT_EQUAL_STRING_[i + 1]);\r
200             }\r
201         }\r
202         for (int i = 0; i < COMPARE_EQUAL_STRING_.length - 1; i ++) {\r
203             VersionInfo v1 = VersionInfo.getInstance(COMPARE_EQUAL_STRING_[i]);\r
204             VersionInfo v2 = VersionInfo.getInstance(COMPARE_EQUAL_STRING_[i + 1]);\r
205             if (v1.compareTo(v2) != 0) {\r
206                 errln(COMPARE_EQUAL_STRING_[i] + " should equal " +\r
207                       COMPARE_EQUAL_STRING_[i + 1]);\r
208             }\r
209         }\r
210     }\r
211     // private methods --------------------------------------------------\r
212     \r
213     /**\r
214      * int array versioninfo creation\r
215      */\r
216     private static VersionInfo getInstance(int data[])\r
217     {\r
218         switch (data.length) {\r
219             case 1:\r
220                 return VersionInfo.getInstance(data[0]);\r
221             case 2:\r
222                 return VersionInfo.getInstance(data[0], data[1]);\r
223             case 3:\r
224                 return VersionInfo.getInstance(data[0], data[1], data[2]);\r
225             default:\r
226                 return VersionInfo.getInstance(data[0], data[1], data[2], \r
227                                                data[3]);\r
228         }\r
229     }\r
230     \r
231     // private data members --------------------------------------------\r
232     \r
233     /**\r
234      * Test instance data\r
235      */\r
236     private static final String INSTANCE_INVALID_STRING_[] = {\r
237         "a",\r
238         "-1",\r
239         "-1.0",\r
240         "-1.0.0",\r
241         "-1.0.0.0",\r
242         "0.-1",\r
243         "0.0.-1",\r
244         "0.0.0.-1",\r
245         "256",\r
246         "256.0",\r
247         "256.0.0",\r
248         "256.0.0.0",\r
249         "0.256",\r
250         "0.0.256",\r
251         "0.0.0.256",\r
252         "1.2.3.4.5"\r
253     };\r
254     private static final String INSTANCE_VALID_STRING_[] = {\r
255         "255",\r
256         "255.255",\r
257         "255.255.255",\r
258         "255.255.255.255"\r
259     };\r
260     private static final int INSTANCE_INVALID_INT_[][] = {\r
261         {-1},\r
262         {-1, 0},\r
263         {-1, 0, 0},\r
264         {-1, 0, 0, 0},\r
265         {0, -1},\r
266         {0, 0, -1},\r
267         {0, 0, 0, -1},\r
268         {256},\r
269         {256, 0},\r
270         {256, 0, 0},\r
271         {256, 0, 0, 0},\r
272         {0, 256},\r
273         {0, 0, 256},\r
274         {0, 0, 0, 256},\r
275     };\r
276     private static final int INSTANCE_VALID_INT_[][] = {\r
277         {255},\r
278         {255, 255},\r
279         {255, 255, 255},\r
280         {255, 255, 255, 255}\r
281     };\r
282     \r
283     /**\r
284      * Test compare data\r
285      */\r
286     private static final String COMPARE_NOT_EQUAL_STRING_[] = {\r
287         "2.0.0.0", "3.0.0.0"\r
288     };\r
289     private static final int COMPARE_NOT_EQUAL_INT_[][] = {\r
290         {2, 0, 0, 0}, {3, 0, 0, 0}\r
291     };\r
292     private static final String COMPARE_EQUAL_STRING_[] = {\r
293         "2.0.0.0", "2.0.0", "2.0", "2"\r
294     };\r
295     private static final int COMPARE_EQUAL_INT_[][] = {\r
296         {2}, {2, 0}, {2, 0, 0}, {2, 0, 0, 0}    \r
297     };\r
298     private static final String COMPARE_LESS_[] = {\r
299         "0", "0.0.0.1", "0.0.1", "0.1", "1", "2", "2.1", "2.1.1", "2.1.1.1"\r
300     };\r
301     \r
302     /**\r
303      * Test Getter data\r
304      */\r
305     private static final String GET_STRING_[] = {\r
306         "0",\r
307         "1.1",\r
308         "2.1.255",\r
309         "3.1.255.100"\r
310     };\r
311     private static final int GET_INT_[][] = {\r
312         {0},\r
313         {1, 1},\r
314         {2, 1, 255},\r
315         {3, 1, 255, 100}\r
316     };\r
317     private static final int GET_RESULT_[] = {\r
318         0, 0, 0, 0,\r
319         1, 1, 0, 0,\r
320         2, 1, 255, 0,\r
321         3, 1, 255, 100\r
322     };\r
323     \r
324     /**\r
325      * Test toString data\r
326      */\r
327     private static final String TOSTRING_STRING_[] = {\r
328         "0",\r
329         "1.1",\r
330         "2.1.255",\r
331         "3.1.255.100"    \r
332     };\r
333     private static final int TOSTRING_INT_[][] = {\r
334         {0},\r
335         {1, 1},\r
336         {2, 1, 255},\r
337         {3, 1, 255, 100}\r
338     };\r
339     private static final String TOSTRING_RESULT_[] = {\r
340         "0.0.0.0",\r
341         "1.1.0.0",\r
342         "2.1.255.0",\r
343         "3.1.255.100"    \r
344     };\r
345 }