TimeZoneTest.java revision 89c1feb0a69a7707b271086e749975b3f7acacf7
1/*
2 *  Licensed to the Apache Software Foundation (ASF) under one or more
3 *  contributor license agreements.  See the NOTICE file distributed with
4 *  this work for additional information regarding copyright ownership.
5 *  The ASF licenses this file to You under the Apache License, Version 2.0
6 *  (the "License"); you may not use this file except in compliance with
7 *  the License.  You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 *  Unless required by applicable law or agreed to in writing, software
12 *  distributed under the License is distributed on an "AS IS" BASIS,
13 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 *  See the License for the specific language governing permissions and
15 *  limitations under the License.
16 */
17
18package tests.api.java.util;
19
20import dalvik.annotation.TestTarget;
21import dalvik.annotation.TestInfo;
22import dalvik.annotation.TestLevel;
23import dalvik.annotation.TestTargetClass;
24
25import java.util.Calendar;
26import java.util.GregorianCalendar;
27import java.util.SimpleTimeZone;
28import java.util.TimeZone;
29
30import tests.support.Support_TimeZone;
31
32@TestTargetClass(TimeZone.class)
33public class TimeZoneTest extends junit.framework.TestCase {
34
35    private static final int ONE_HOUR = 3600000;
36
37    /**
38     * @tests java.util.TimeZone#getDefault()
39     */
40    @TestInfo(
41      level = TestLevel.COMPLETE,
42      purpose = "",
43      targets = {
44        @TestTarget(
45          methodName = "getDefault",
46          methodArgs = {}
47        )
48    })
49    public void test_getDefault() {
50        assertNotSame("returns identical",
51                              TimeZone.getDefault(), TimeZone.getDefault());
52    }
53
54    /**
55     * @tests java.util.TimeZone#getDSTSavings()
56     */
57    @TestInfo(
58      level = TestLevel.COMPLETE,
59      purpose = "",
60      targets = {
61        @TestTarget(
62          methodName = "getDSTSavings",
63          methodArgs = {}
64        )
65    })
66    public void _test_getDSTSavings() {
67        // Test for method int java.util.TimeZone.getDSTSavings()
68
69        // test on subclass SimpleTimeZone
70        TimeZone st1 = TimeZone.getTimeZone("EST");
71        assertEquals("T1A. Incorrect daylight savings returned",
72                             ONE_HOUR, st1.getDSTSavings());
73
74        // a SimpleTimeZone with daylight savings different then 1 hour
75        st1 = TimeZone.getTimeZone("Australia/Lord_Howe");
76        assertEquals("T1B. Incorrect daylight savings returned",
77                             1800000, st1.getDSTSavings());
78
79        // test on subclass Support_TimeZone, an instance with daylight savings
80        TimeZone tz1 = new Support_TimeZone(-5 * ONE_HOUR, true);
81        assertEquals("T2. Incorrect daylight savings returned",
82                             ONE_HOUR, tz1.getDSTSavings());
83
84        // an instance without daylight savings
85        tz1 = new Support_TimeZone(3 * ONE_HOUR, false);
86        assertEquals("T3. Incorrect daylight savings returned, ",
87                             0, tz1.getDSTSavings());
88    }
89
90    /**
91     * @tests java.util.TimeZone#getOffset(long)
92     */
93    @TestInfo(
94      level = TestLevel.COMPLETE,
95      purpose = "",
96      targets = {
97        @TestTarget(
98          methodName = "getOffset",
99          methodArgs = {long.class}
100        )
101    })
102    public void _test_getOffset_long() {
103        // Test for method int java.util.TimeZone.getOffset(long time)
104
105        // test on subclass SimpleTimeZone
106        TimeZone st1 = TimeZone.getTimeZone("EST");
107        long time1 = new GregorianCalendar(1998, Calendar.NOVEMBER, 11)
108                .getTimeInMillis();
109        assertEquals("T1. Incorrect offset returned",
110                             -(5 * ONE_HOUR), st1.getOffset(time1));
111
112        long time2 = new GregorianCalendar(1998, Calendar.JUNE, 11)
113                .getTimeInMillis();
114        st1 = TimeZone.getTimeZone("EST");
115        assertEquals("T2. Incorrect offset returned",
116                             -(4 * ONE_HOUR), st1.getOffset(time2));
117
118        // test on subclass Support_TimeZone, an instance with daylight savings
119        TimeZone tz1 = new Support_TimeZone(-5 * ONE_HOUR, true);
120        assertEquals("T3. Incorrect offset returned, ",
121                             -(5 * ONE_HOUR), tz1.getOffset(time1));
122        assertEquals("T4. Incorrect offset returned, ",
123                             -(4 * ONE_HOUR), tz1.getOffset(time2));
124
125        // an instance without daylight savings
126        tz1 = new Support_TimeZone(3 * ONE_HOUR, false);
127        assertEquals("T5. Incorrect offset returned, ",
128                             (3 * ONE_HOUR), tz1.getOffset(time1));
129        assertEquals("T6. Incorrect offset returned, ",
130                             (3 * ONE_HOUR), tz1.getOffset(time2));
131    }
132
133    /**
134     * @tests java.util.TimeZone#getTimeZone(java.lang.String)
135     */
136    @TestInfo(
137      level = TestLevel.COMPLETE,
138      purpose = "",
139      targets = {
140        @TestTarget(
141          methodName = "getTimeZone",
142          methodArgs = {java.lang.String.class}
143        )
144    })
145    public void test_getTimeZoneLjava_lang_String() {
146        assertEquals("Must return GMT when given an invalid TimeZone id SMT-8.",
147                             "GMT", TimeZone.getTimeZone("SMT-8").getID());
148        assertEquals("Must return GMT when given an invalid TimeZone time GMT+28:70.",
149                             "GMT", TimeZone.getTimeZone("GMT+28:70").getID());
150        assertEquals("Must return GMT when given an invalid TimeZone time GMT+28:30.",
151                             "GMT", TimeZone.getTimeZone("GMT+28:30").getID());
152        assertEquals("Must return GMT when given an invalid TimeZone time GMT+8:70.",
153                             "GMT", TimeZone.getTimeZone("GMT+8:70").getID());
154        assertEquals("Must return GMT when given an invalid TimeZone time GMT+3:.",
155                             "GMT", TimeZone.getTimeZone("GMT+3:").getID());
156        assertEquals("Must return GMT when given an invalid TimeZone time GMT+3:0.",
157                             "GMT", TimeZone.getTimeZone("GMT+3:0").getID());
158        assertEquals("Must return GMT when given an invalid TimeZone time GMT+2360.",
159                             "GMT", TimeZone.getTimeZone("GMT+2360").getID());
160        assertEquals("Must return GMT when given an invalid TimeZone time GMT+892.",
161                             "GMT", TimeZone.getTimeZone("GMT+892").getID());
162        assertEquals("Must return GMT when given an invalid TimeZone time GMT+082.",
163                             "GMT", TimeZone.getTimeZone("GMT+082").getID());
164        assertEquals("Must return GMT when given an invalid TimeZone time GMT+28.",
165                             "GMT", TimeZone.getTimeZone("GMT+28").getID());
166        assertEquals("Must return GMT when given an invalid TimeZone time GMT+30.",
167                             "GMT", TimeZone.getTimeZone("GMT+30").getID());
168        assertEquals("Must return GMT when given TimeZone GMT.",
169                             "GMT", TimeZone.getTimeZone("GMT").getID());
170        assertEquals("Must return GMT when given TimeZone GMT+.",
171                             "GMT", TimeZone.getTimeZone("GMT+").getID());
172        assertEquals("Must return GMT when given TimeZone GMT-.",
173                             "GMT", TimeZone.getTimeZone("GMT-").getID());
174        assertEquals("Must return GMT when given an invalid TimeZone time GMT-8.45.",
175                             "GMT", TimeZone.getTimeZone("GMT-8.45").getID());
176        assertEquals("Must return GMT when given an invalid TimeZone time GMT-123:23.",
177                             "GMT", TimeZone.getTimeZone("GMT-123:23").getID());
178        assertEquals("Must return proper GMT formatted string for GMT+8:30 (eg. GMT+08:20).",
179                             "GMT+08:30", TimeZone.getTimeZone("GMT+8:30").getID());
180        assertEquals("Must return proper GMT formatted string for GMT+3 (eg. GMT+08:20).",
181                             "GMT+03:00", TimeZone.getTimeZone("GMT+3").getID());
182        assertEquals("Must return proper GMT formatted string for GMT+3:02 (eg. GMT+08:20).",
183                             "GMT+03:02", TimeZone.getTimeZone("GMT+3:02").getID());
184        assertEquals("Must return proper GMT formatted string for GMT+2359 (eg. GMT+08:20).",
185                             "GMT+23:59", TimeZone.getTimeZone("GMT+2359").getID());
186        assertEquals("Must return proper GMT formatted string for GMT+520 (eg. GMT+08:20).",
187                             "GMT+05:20", TimeZone.getTimeZone("GMT+520").getID());
188        assertEquals("Must return proper GMT formatted string for GMT+052 (eg. GMT+08:20).",
189                             "GMT+00:52", TimeZone.getTimeZone("GMT+052").getID());
190        assertEquals("Must return proper GMT formatted string for GMT-0 (eg. GMT+08:20).",
191                             "GMT-00:00", TimeZone.getTimeZone("GMT-0").getID());
192    }
193
194    /**
195     * @tests java.util.TimeZone#setDefault(java.util.TimeZone)
196     */
197    @TestInfo(
198      level = TestLevel.COMPLETE,
199      purpose = "",
200      targets = {
201        @TestTarget(
202          methodName = "setDefault",
203          methodArgs = {java.util.TimeZone.class}
204        )
205    })
206    public void test_setDefaultLjava_util_TimeZone() {
207        TimeZone oldDefault = TimeZone.getDefault();
208        TimeZone zone = new SimpleTimeZone(45, "TEST");
209        TimeZone.setDefault(zone);
210        assertEquals("timezone not set", zone, TimeZone.getDefault());
211        TimeZone.setDefault(null);
212        assertEquals("default not restored",
213                             oldDefault, TimeZone.getDefault());
214    }
215
216    protected void setUp() {
217    }
218
219    protected void tearDown() {
220    }
221}
222