1/*
2 *******************************************************************************
3 * Copyright (C) 2006-2011, International Business Machines Corporation and    *
4 * others. All Rights Reserved.                                                *
5 *******************************************************************************
6 */
7
8package com.ibm.icu.tests;
9
10import java.util.Date;
11import java.util.Locale;
12
13import com.ibm.icu.util.Calendar;
14import com.ibm.icu.util.TimeZone;
15import com.ibm.icu.util.ULocale;
16
17public class TimeZoneTest extends ICUTestCase {
18
19    /*
20     * Test method for 'com.ibm.icu.util.TimeZone.hashCode()'
21     */
22    public void testHashCode() {
23        TimeZone tz1 = TimeZone.getTimeZone("PST");
24        TimeZone tz2 = TimeZone.getTimeZone("PST");
25        TimeZone tzn = TimeZone.getTimeZone("CST");
26        testEHCS(tz1, tz2, tzn);
27    }
28
29    /*
30     * Test method for 'com.ibm.icu.util.TimeZone.TimeZone(TimeZone)'
31     */
32    public void testTimeZone() {
33        // implicitly tested everywhere
34    }
35
36    /*
37     * Test method for 'com.ibm.icu.util.TimeZone.getOffset(int, int, int, int, int, int)'
38     */
39    public void testGetOffset() {
40        TimeZone tz = TimeZone.getTimeZone("PST");
41        int offset = tz.getOffset(1, 2004, 0, 01, 1, 0);
42        assertEquals(-28800000, offset);
43    }
44
45    /*
46     * Test method for 'com.ibm.icu.util.TimeZone.setRawOffset(int)'
47     */
48    public void testSetRawOffset() {
49        TimeZone tz = TimeZone.getTimeZone("PST");
50        int value = tz.getRawOffset();
51        int value1 = value + 100000;
52        tz.setRawOffset(value1);
53        int result = tz.getRawOffset();
54        assertNotEqual(value, result);
55        assertEquals(value1, result);
56    }
57
58    /*
59     * Test method for 'com.ibm.icu.util.TimeZone.getRawOffset()'
60     */
61    public void testGetRawOffset() {
62        TimeZone tz = TimeZone.getTimeZone("PST");
63        int offset = tz.getRawOffset();
64        assertEquals(-28800000, offset);
65    }
66
67    /*
68     * Test method for 'com.ibm.icu.util.TimeZone.getID()'
69     */
70    public void testGetID() {
71        TimeZone tz = TimeZone.getTimeZone("PST");
72        assertEquals("PST", tz.getID());
73    }
74
75    /*
76     * Test method for 'com.ibm.icu.util.TimeZone.setID(String)'
77     */
78    public void testSetID() {
79        TimeZone tz = TimeZone.getTimeZone("PST");
80        String value1 = tz.getID();
81        String value2 = value1 + "!";
82        tz.setID(value2);
83        String result = tz.getID();
84        assertNotEqual(value1, result);
85        assertEquals(value2, result);
86    }
87
88    /*
89     * Test method for 'com.ibm.icu.util.TimeZone.getDisplayName()'
90     */
91    public void testGetDisplayName() {
92        TimeZone tz = TimeZone.getTimeZone("PST");
93        assertEquals("Pacific Standard Time", tz.getDisplayName());
94    }
95
96    /*
97     * Test method for 'com.ibm.icu.util.TimeZone.getDisplayName(Locale)'
98     */
99    public void testGetDisplayNameLocale() {
100        TimeZone tz = TimeZone.getTimeZone("PST");
101        assertEquals("Pacific Standard Time", tz.getDisplayName(Locale.US));
102    }
103
104    /*
105     * Test method for 'com.ibm.icu.util.TimeZone.getDisplayName(ULocale)'
106     */
107    public void testGetDisplayNameULocale() {
108        TimeZone tz = TimeZone.getTimeZone("PST");
109        assertEquals("Pacific Standard Time", tz.getDisplayName(ULocale.US));
110    }
111
112    /*
113     * Test method for 'com.ibm.icu.util.TimeZone.getDisplayName(boolean, int)'
114     */
115    public void testGetDisplayNameBooleanInt() {
116        TimeZone tz = TimeZone.getTimeZone("PST");
117        assertEquals("PDT", tz.getDisplayName(true, TimeZone.SHORT));
118        assertEquals("Pacific Daylight Time", tz.getDisplayName(true, TimeZone.LONG));
119    }
120
121    /*
122     * Test method for 'com.ibm.icu.util.TimeZone.getDisplayName(boolean, int, Locale)'
123     */
124    public void testGetDisplayNameBooleanIntLocale() {
125        TimeZone tz = TimeZone.getTimeZone("PST");
126        assertEquals("PDT", tz.getDisplayName(true, TimeZone.SHORT, Locale.US));
127        assertEquals("Pacific Daylight Time", tz.getDisplayName(true, TimeZone.LONG, Locale.US));
128    }
129
130    /*
131     * Test method for 'com.ibm.icu.util.TimeZone.getDisplayName(boolean, int, ULocale)'
132     */
133    public void testGetDisplayNameBooleanIntULocale() {
134        TimeZone tz = TimeZone.getTimeZone("PST");
135        assertEquals("PDT", tz.getDisplayName(true, TimeZone.SHORT, ULocale.US));
136        assertEquals("Pacific Daylight Time", tz.getDisplayName(true, TimeZone.LONG, ULocale.US));
137    }
138
139    /*
140     * Test method for 'com.ibm.icu.util.TimeZone.getDSTSavings()'
141     */
142    public void testGetDSTSavings() {
143        TimeZone tz = TimeZone.getTimeZone("PST");
144        assertEquals(3600000, tz.getDSTSavings());
145    }
146
147    /*
148     * Test method for 'com.ibm.icu.util.TimeZone.useDaylightTime()'
149     */
150    public void testUseDaylightTime() {
151        TimeZone tz = TimeZone.getTimeZone("PST");
152        assertTrue(tz.useDaylightTime());
153    }
154
155    /*
156     * Test method for 'com.ibm.icu.util.TimeZone.inDaylightTime(Date)'
157     */
158    public void testInDaylightTime() {
159        TimeZone tz = TimeZone.getTimeZone("PST");
160        Calendar cal = Calendar.getInstance();
161        cal.set(2005, 0, 17);
162        Date date = cal.getTime();
163        assertFalse(tz.inDaylightTime(date));
164        cal.set(2005, 6, 17);
165        date = cal.getTime();
166        assertTrue(tz.inDaylightTime(date));
167    }
168
169    /*
170     * Test method for 'com.ibm.icu.util.TimeZone.getTimeZone(String)'
171     */
172    public void testGetTimeZone() {
173        // implicitly tested everywhere
174    }
175
176    /*
177     * Test method for 'com.ibm.icu.util.TimeZone.getAvailableIDs(int)'
178     */
179    public void testGetAvailableIDsInt() {
180        String[] ids = TimeZone.getAvailableIDs(-28800000);
181        assertNotNull(ids);
182    }
183
184    /*
185     * Test method for 'com.ibm.icu.util.TimeZone.getAvailableIDs()'
186     */
187    public void testGetAvailableIDs() {
188        String[] ids = TimeZone.getAvailableIDs();
189        assertNotNull(ids);
190    }
191
192    /*
193     * Test method for 'com.ibm.icu.util.TimeZone.getDefault()'
194     */
195    public void testGetDefault() {
196        TimeZone tz = TimeZone.getDefault();
197        assertNotNull(tz);
198    }
199
200    /*
201     * Test method for 'com.ibm.icu.util.TimeZone.setDefault(TimeZone)'
202     */
203    public void testSetDefault() {
204        TimeZone tz1 = TimeZone.getDefault();
205        String newCode = "PDT".equals(tz1.getID()) ? "CST" : "PDT";
206        TimeZone tz2 = TimeZone.getTimeZone(newCode);
207        TimeZone.setDefault(tz2);
208        TimeZone result = TimeZone.getDefault();
209        assertNotEqual(tz1, result);
210        assertEquals(tz2, result);
211    }
212
213    /*
214     * Test method for 'com.ibm.icu.util.TimeZone.hasSameRules(TimeZone)'
215     */
216    public void testHasSameRules() {
217        TimeZone tz1 = TimeZone.getTimeZone("PST");
218        TimeZone tz2 = TimeZone.getTimeZone("America/Los_Angeles");
219        assertTrue(tz1.hasSameRules(tz2));
220    }
221
222    /*
223     * Test method for 'com.ibm.icu.util.TimeZone.clone()'
224     */
225    public void testClone() {
226        // tested by testHashCode
227    }
228
229    /*
230     * Test method for 'com.ibm.icu.util.TimeZone.equals(Object)'
231     */
232    public void testEqualsObject() {
233        // tested by testHashCode
234    }
235}
236