001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: package org.apache.harmony.luni.tests.java.util;
019:
020: import java.util.Calendar;
021: import java.util.Formatter;
022: import java.util.GregorianCalendar;
023: import java.util.Locale;
024: import java.util.SimpleTimeZone;
025: import java.util.TimeZone;
026:
027: import tests.support.Support_TimeZone;
028:
029: public class TimeZoneTest extends junit.framework.TestCase {
030:
031: private static final int ONE_HOUR = 3600000;
032:
033: /**
034: * @tests java.util.TimeZone#getDefault()
035: */
036: public void test_getDefault() {
037: assertNotSame("returns identical", TimeZone.getDefault(),
038: TimeZone.getDefault());
039: }
040:
041: /**
042: * @tests java.util.TimeZone#getDSTSavings()
043: */
044: public void test_getDSTSavings() {
045: // Test for method int java.util.TimeZone.getDSTSavings()
046:
047: // test on subclass SimpleTimeZone
048: TimeZone st1 = TimeZone.getTimeZone("EST");
049: assertEquals("T1A. Incorrect daylight savings returned",
050: ONE_HOUR, st1.getDSTSavings());
051:
052: // a SimpleTimeZone with daylight savings different then 1 hour
053: st1 = TimeZone.getTimeZone("Australia/Lord_Howe");
054: assertEquals("T1B. Incorrect daylight savings returned",
055: 1800000, st1.getDSTSavings());
056:
057: // test on subclass Support_TimeZone, an instance with daylight savings
058: TimeZone tz1 = new Support_TimeZone(-5 * ONE_HOUR, true);
059: assertEquals("T2. Incorrect daylight savings returned",
060: ONE_HOUR, tz1.getDSTSavings());
061:
062: // an instance without daylight savings
063: tz1 = new Support_TimeZone(3 * ONE_HOUR, false);
064: assertEquals("T3. Incorrect daylight savings returned, ", 0,
065: tz1.getDSTSavings());
066: }
067:
068: /**
069: * @tests java.util.TimeZone#getOffset(long)
070: */
071: public void test_getOffset_long() {
072: // Test for method int java.util.TimeZone.getOffset(long time)
073:
074: // test on subclass SimpleTimeZone
075: TimeZone st1 = TimeZone.getTimeZone("EST");
076: long time1 = new GregorianCalendar(1998, Calendar.NOVEMBER, 11)
077: .getTimeInMillis();
078: assertEquals("T1. Incorrect offset returned", -(5 * ONE_HOUR),
079: st1.getOffset(time1));
080:
081: long time2 = new GregorianCalendar(1998, Calendar.JUNE, 11)
082: .getTimeInMillis();
083: st1 = TimeZone.getTimeZone("EST");
084: assertEquals("T2. Incorrect offset returned", -(5 * ONE_HOUR),
085: st1.getOffset(time2));
086:
087: // test on subclass Support_TimeZone, an instance with daylight savings
088: TimeZone tz1 = new Support_TimeZone(-5 * ONE_HOUR, true);
089: assertEquals("T3. Incorrect offset returned, ",
090: -(5 * ONE_HOUR), tz1.getOffset(time1));
091: assertEquals("T4. Incorrect offset returned, ",
092: -(4 * ONE_HOUR), tz1.getOffset(time2));
093:
094: // an instance without daylight savings
095: tz1 = new Support_TimeZone(3 * ONE_HOUR, false);
096: assertEquals("T5. Incorrect offset returned, ", (3 * ONE_HOUR),
097: tz1.getOffset(time1));
098: assertEquals("T6. Incorrect offset returned, ", (3 * ONE_HOUR),
099: tz1.getOffset(time2));
100: }
101:
102: /**
103: * @tests java.util.TimeZone#getTimeZone(java.lang.String)
104: */
105: public void test_getTimeZoneLjava_lang_String() {
106: assertEquals(
107: "Must return GMT when given an invalid TimeZone id SMT-8.",
108: "GMT", TimeZone.getTimeZone("SMT-8").getID());
109: assertEquals(
110: "Must return GMT when given an invalid TimeZone time GMT+28:70.",
111: "GMT", TimeZone.getTimeZone("GMT+28:70").getID());
112: assertEquals(
113: "Must return GMT when given an invalid TimeZone time GMT+28:30.",
114: "GMT", TimeZone.getTimeZone("GMT+28:30").getID());
115: assertEquals(
116: "Must return GMT when given an invalid TimeZone time GMT+8:70.",
117: "GMT", TimeZone.getTimeZone("GMT+8:70").getID());
118: assertEquals(
119: "Must return GMT when given an invalid TimeZone time GMT+3:.",
120: "GMT", TimeZone.getTimeZone("GMT+3:").getID());
121: assertEquals(
122: "Must return GMT when given an invalid TimeZone time GMT+3:0.",
123: "GMT", TimeZone.getTimeZone("GMT+3:0").getID());
124: assertEquals(
125: "Must return GMT when given an invalid TimeZone time GMT+2360.",
126: "GMT", TimeZone.getTimeZone("GMT+2360").getID());
127: assertEquals(
128: "Must return GMT when given an invalid TimeZone time GMT+892.",
129: "GMT", TimeZone.getTimeZone("GMT+892").getID());
130: assertEquals(
131: "Must return GMT when given an invalid TimeZone time GMT+082.",
132: "GMT", TimeZone.getTimeZone("GMT+082").getID());
133: assertEquals(
134: "Must return GMT when given an invalid TimeZone time GMT+28.",
135: "GMT", TimeZone.getTimeZone("GMT+28").getID());
136: assertEquals(
137: "Must return GMT when given an invalid TimeZone time GMT+30.",
138: "GMT", TimeZone.getTimeZone("GMT+30").getID());
139: assertEquals("Must return GMT when given TimeZone GMT.", "GMT",
140: TimeZone.getTimeZone("GMT").getID());
141: assertEquals("Must return GMT when given TimeZone GMT+.",
142: "GMT", TimeZone.getTimeZone("GMT+").getID());
143: assertEquals("Must return GMT when given TimeZone GMT-.",
144: "GMT", TimeZone.getTimeZone("GMT-").getID());
145: assertEquals(
146: "Must return GMT when given an invalid TimeZone time GMT-8.45.",
147: "GMT", TimeZone.getTimeZone("GMT-8.45").getID());
148: assertEquals(
149: "Must return GMT when given an invalid TimeZone time GMT-123:23.",
150: "GMT", TimeZone.getTimeZone("GMT-123:23").getID());
151: assertEquals(
152: "Must return proper GMT formatted string for GMT+8:30 (eg. GMT+08:20).",
153: "GMT+08:30", TimeZone.getTimeZone("GMT+8:30").getID());
154: assertEquals(
155: "Must return proper GMT formatted string for GMT+3 (eg. GMT+08:20).",
156: "GMT+03:00", TimeZone.getTimeZone("GMT+3").getID());
157: assertEquals(
158: "Must return proper GMT formatted string for GMT+3:02 (eg. GMT+08:20).",
159: "GMT+03:02", TimeZone.getTimeZone("GMT+3:02").getID());
160: assertEquals(
161: "Must return proper GMT formatted string for GMT+2359 (eg. GMT+08:20).",
162: "GMT+23:59", TimeZone.getTimeZone("GMT+2359").getID());
163: assertEquals(
164: "Must return proper GMT formatted string for GMT+520 (eg. GMT+08:20).",
165: "GMT+05:20", TimeZone.getTimeZone("GMT+520").getID());
166: assertEquals(
167: "Must return proper GMT formatted string for GMT+052 (eg. GMT+08:20).",
168: "GMT+00:52", TimeZone.getTimeZone("GMT+052").getID());
169: assertEquals(
170: "Must return proper GMT formatted string for GMT-0 (eg. GMT+08:20).",
171: "GMT-00:00", TimeZone.getTimeZone("GMT-0").getID());
172: }
173:
174: /**
175: * @tests java.util.TimeZone#setDefault(java.util.TimeZone)
176: */
177: public void test_setDefaultLjava_util_TimeZone() {
178: TimeZone oldDefault = TimeZone.getDefault();
179: TimeZone zone = new SimpleTimeZone(45, "TEST");
180: TimeZone.setDefault(zone);
181: assertEquals("timezone not set", zone, TimeZone.getDefault());
182: TimeZone.setDefault(null);
183: assertEquals("default not restored", oldDefault, TimeZone
184: .getDefault());
185: }
186:
187: /**
188: * @tests java.util.TimeZone#getDisplayName(java.util.Locale)
189: */
190: public void test_getDisplayNameLjava_util_Locale() {
191: TimeZone timezone = TimeZone.getTimeZone("Asia/Shanghai");
192: assertEquals("\u4e2d\u56fd\u6807\u51c6\u65f6\u95f4", timezone
193: .getDisplayName(Locale.CHINA));
194: }
195:
196: /**
197: * @tests java.util.TimeZone#getDisplayName(boolean, int, java.util.Locale)
198: */
199: public void test_getDisplayNameZILjava_util_Locale() {
200: TimeZone timezone = TimeZone.getTimeZone("Asia/Shanghai");
201: assertEquals("GMT+0800", timezone.getDisplayName(false,
202: TimeZone.SHORT, Locale.CHINA));
203: try {
204: timezone.getDisplayName(false, 100, Locale.CHINA);
205: fail("should throw IllegalArgumentException");
206: } catch (IllegalArgumentException e) {
207: // expected
208: }
209: }
210:
211: protected void setUp() {
212: }
213:
214: protected void tearDown() {
215: }
216: }
|