2 *******************************************************************************
\r
3 * Copyright (C) 1996-2009, International Business Machines Corporation and *
\r
4 * others. All Rights Reserved. *
\r
5 *******************************************************************************
\r
9 package com.ibm.icu.dev.test.util;
\r
12 import com.ibm.icu.dev.test.TestFmwk;
\r
13 import com.ibm.icu.util.VersionInfo;
\r
17 * Testing class for VersionInfo
\r
18 * @author Syn Wee Quek
\r
19 * @since release 2.1 March 01 2002
\r
21 public final class VersionInfoTest extends TestFmwk
\r
23 // constructor ---------------------------------------------------
\r
28 public VersionInfoTest()
\r
32 // public methods -----------------------------------------------
\r
34 public static void main(String arg[])
\r
36 VersionInfoTest test = new VersionInfoTest();
\r
39 } catch (Exception e) {
\r
40 test.errln("Error testing VersionInfo");
\r
45 * Test that the instantiation works
\r
47 public void TestInstance()
\r
49 for (int i = 0; i < INSTANCE_INVALID_STRING_.length; i ++) {
\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
59 for (int i = 0; i < INSTANCE_VALID_STRING_.length; i ++) {
\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
67 for (int i = 0; i < INSTANCE_INVALID_INT_.length; i ++) {
\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
76 for (int i = 0; i < INSTANCE_VALID_INT_.length; i ++) {
\r
78 getInstance(INSTANCE_VALID_INT_[i]);
\r
79 } catch (RuntimeException e) {
\r
80 errln("valid ints should not produce an exception");
\r
86 * Test that the comparison works
\r
88 public void TestCompare()
\r
90 for (int i = 0; i < COMPARE_NOT_EQUAL_STRING_.length; i += 2) {
\r
92 VersionInfo.getInstance(COMPARE_NOT_EQUAL_STRING_[i]);
\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
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
108 for (int i = 0; i < COMPARE_EQUAL_STRING_.length - 1; i ++) {
\r
110 VersionInfo.getInstance(COMPARE_EQUAL_STRING_[i]);
\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
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
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
133 if (v2.compareTo(v1) <= 0) {
\r
134 errln(COMPARE_LESS_[i + 1] + " should be greater than " +
\r
141 * Test that the getter function works
\r
143 public void TestGetter()
\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
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
174 public void TesttoString()
\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
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
191 * Test Comparable interface
\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
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
211 // private methods --------------------------------------------------
\r
214 * int array versioninfo creation
\r
216 private static VersionInfo getInstance(int data[])
\r
218 switch (data.length) {
\r
220 return VersionInfo.getInstance(data[0]);
\r
222 return VersionInfo.getInstance(data[0], data[1]);
\r
224 return VersionInfo.getInstance(data[0], data[1], data[2]);
\r
226 return VersionInfo.getInstance(data[0], data[1], data[2],
\r
231 // private data members --------------------------------------------
\r
234 * Test instance data
\r
236 private static final String INSTANCE_INVALID_STRING_[] = {
\r
254 private static final String INSTANCE_VALID_STRING_[] = {
\r
260 private static final int INSTANCE_INVALID_INT_[][] = {
\r
276 private static final int INSTANCE_VALID_INT_[][] = {
\r
280 {255, 255, 255, 255}
\r
284 * Test compare data
\r
286 private static final String COMPARE_NOT_EQUAL_STRING_[] = {
\r
287 "2.0.0.0", "3.0.0.0"
\r
289 private static final int COMPARE_NOT_EQUAL_INT_[][] = {
\r
290 {2, 0, 0, 0}, {3, 0, 0, 0}
\r
292 private static final String COMPARE_EQUAL_STRING_[] = {
\r
293 "2.0.0.0", "2.0.0", "2.0", "2"
\r
295 private static final int COMPARE_EQUAL_INT_[][] = {
\r
296 {2}, {2, 0}, {2, 0, 0}, {2, 0, 0, 0}
\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
305 private static final String GET_STRING_[] = {
\r
311 private static final int GET_INT_[][] = {
\r
317 private static final int GET_RESULT_[] = {
\r
325 * Test toString data
\r
327 private static final String TOSTRING_STRING_[] = {
\r
333 private static final int TOSTRING_INT_[][] = {
\r
339 private static final String TOSTRING_RESULT_[] = {
\r