/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.harmony.tests.java.util; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.SimpleTimeZone; import java.util.TimeZone; public class SimpleTimeZoneTest extends junit.framework.TestCase { SimpleTimeZone st1; SimpleTimeZone st2; /** * java.util.SimpleTimeZone#SimpleTimeZone(int, java.lang.String) */ public void test_ConstructorILjava_lang_String() { // Test for method java.util.SimpleTimeZone(int, java.lang.String) SimpleTimeZone st = new SimpleTimeZone(1000, "TEST"); assertEquals("Incorrect TZ constructed", "TEST", st.getID()); assertTrue("Incorrect TZ constructed: " + "returned wrong offset", st .getRawOffset() == 1000); assertTrue("Incorrect TZ constructed" + "using daylight savings", !st .useDaylightTime()); } /** * java.util.SimpleTimeZone#SimpleTimeZone(int, java.lang.String, * int, int, int, int, int, int, int, int) */ public void test_ConstructorILjava_lang_StringIIIIIIII() { // Test for method java.util.SimpleTimeZone(int, java.lang.String, int, // int, int, int, int, int, int, int) SimpleTimeZone st = new SimpleTimeZone(1000, "TEST", Calendar.NOVEMBER, 1, Calendar.SUNDAY, 0, Calendar.NOVEMBER, -1, Calendar.SUNDAY, 0); assertTrue("Incorrect TZ constructed", st .inDaylightTime(new GregorianCalendar(1998, Calendar.NOVEMBER, 13).getTime())); assertTrue("Incorrect TZ constructed", !(st .inDaylightTime(new GregorianCalendar(1998, Calendar.OCTOBER, 13).getTime()))); assertEquals("Incorrect TZ constructed", "TEST", st.getID()); assertEquals("Incorrect TZ constructed", 1000, st.getRawOffset()); assertTrue("Incorrect TZ constructed", st.useDaylightTime()); try { new SimpleTimeZone(1000, "TEST", 12, 1, Calendar.SUNDAY, 0, Calendar.NOVEMBER, -1, Calendar.SUNDAY, 0); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { //expected } try { new SimpleTimeZone(1000, "TEST", Calendar.NOVEMBER, 10, Calendar.SUNDAY, 0, Calendar.NOVEMBER, -1, Calendar.SUNDAY, 0); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { //expected } try { new SimpleTimeZone(1000, "TEST", Calendar.NOVEMBER, 1, 10, 0, Calendar.NOVEMBER, -1, Calendar.SUNDAY, 0); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { //expected } try { new SimpleTimeZone(1000, "TEST", Calendar.DECEMBER, 1, Calendar.SUNDAY, 0, Calendar.NOVEMBER, -10, Calendar.SUNDAY, 0); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { //expected } } /** * java.util.SimpleTimeZone#SimpleTimeZone(int, java.lang.String, * int, int, int, int, int, int, int, int, int) */ public void test_ConstructorILjava_lang_StringIIIIIIIII() { // Test for method java.util.SimpleTimeZone(int, java.lang.String, int, // int, int, int, int, int, int, int, int) SimpleTimeZone st = new SimpleTimeZone(1000, "TEST", Calendar.NOVEMBER, 1, Calendar.SUNDAY, 0, Calendar.NOVEMBER, -1, Calendar.SUNDAY, 0, 1000 * 60 * 60); assertTrue("Incorrect TZ constructed", st .inDaylightTime(new GregorianCalendar(1998, Calendar.NOVEMBER, 13).getTime())); assertTrue("Incorrect TZ constructed", !(st .inDaylightTime(new GregorianCalendar(1998, Calendar.OCTOBER, 13).getTime()))); assertEquals("Incorrect TZ constructed", "TEST", st.getID()); assertEquals("Incorrect TZ constructed", 1000, st.getRawOffset()); assertTrue("Incorrect TZ constructed", st.useDaylightTime()); assertTrue("Incorrect TZ constructed", st.getDSTSavings() == 1000 * 60 * 60); try { new SimpleTimeZone(1000, "TEST", 12, 1, Calendar.SUNDAY, 0, Calendar.NOVEMBER, -1, Calendar.SUNDAY, 0, 1000 * 60 * 60); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { //expected } try { new SimpleTimeZone(1000, "TEST", Calendar.NOVEMBER, 10, Calendar.SUNDAY, 0, Calendar.NOVEMBER, -1, Calendar.SUNDAY, 0, 1000 * 60 * 60); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { //expected } try { new SimpleTimeZone(1000, "TEST", Calendar.NOVEMBER, 1, 10, 0, Calendar.NOVEMBER, -1, Calendar.SUNDAY, 0, 1000 * 60 * 60); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { //expected } try { new SimpleTimeZone(1000, "TEST", Calendar.DECEMBER, 1, Calendar.SUNDAY, 0, Calendar.NOVEMBER, -10, Calendar.SUNDAY, 0, 1000 * 60 * 60); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { //expected } } /** * java.util.SimpleTimeZone#SimpleTimeZone(int, java.lang.String, * int, int, int, int, int, int, int, int, int, int, int) */ public void test_ConstructorILjava_lang_StringIIIIIIIIIII() { // Test for method java.util.SimpleTimeZone(int, java.lang.String, int, // int, int, int, int, int, int, int, int, int, int) // TODO : Implement test //Regression for HARMONY-1241 assertNotNull(new SimpleTimeZone( TimeZone.LONG, "Europe/Paris", SimpleTimeZone.STANDARD_TIME, SimpleTimeZone.STANDARD_TIME, SimpleTimeZone.UTC_TIME, SimpleTimeZone.WALL_TIME, SimpleTimeZone.WALL_TIME, TimeZone.SHORT, SimpleTimeZone.STANDARD_TIME, TimeZone.LONG, SimpleTimeZone.UTC_TIME, SimpleTimeZone.STANDARD_TIME, TimeZone.LONG)); //seems RI doesn't check the startTimeMode and endTimeMode at all //this behavior is contradicts with spec assertNotNull(new SimpleTimeZone( TimeZone.LONG, "Europe/Paris", SimpleTimeZone.STANDARD_TIME, SimpleTimeZone.STANDARD_TIME, SimpleTimeZone.UTC_TIME, SimpleTimeZone.WALL_TIME, Integer.MAX_VALUE, TimeZone.SHORT, SimpleTimeZone.STANDARD_TIME, TimeZone.LONG, SimpleTimeZone.UTC_TIME, Integer.MIN_VALUE, TimeZone.LONG)); try { new SimpleTimeZone(1000, "TEST", 12, 1, Calendar.SUNDAY, 0, Integer.MAX_VALUE, Calendar.NOVEMBER, -1, Calendar.SUNDAY, 0, Integer.MAX_VALUE, 1000 * 60 * 60); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { //expected } try { new SimpleTimeZone(1000, "TEST", Calendar.NOVEMBER, 10, Calendar.SUNDAY, 0, Integer.MAX_VALUE, Calendar.NOVEMBER, -1, Calendar.SUNDAY, 0, Integer.MAX_VALUE, 1000 * 60 * 60); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { //expected } try { new SimpleTimeZone(1000, "TEST", Calendar.NOVEMBER, 1, 10, 0, Calendar.NOVEMBER, Integer.MAX_VALUE, -1, Calendar.SUNDAY, 0, Integer.MAX_VALUE, 1000 * 60 * 60); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { //expected } try { new SimpleTimeZone(1000, "TEST", Calendar.DECEMBER, 1, Calendar.SUNDAY, 0, Calendar.NOVEMBER, Integer.MAX_VALUE, -10, Calendar.SUNDAY, 0, Integer.MAX_VALUE, 1000 * 60 * 60); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { //expected } } /** * java.util.SimpleTimeZone#clone() */ public void test_clone() { // Test for method java.lang.Object java.util.SimpleTimeZone.clone() SimpleTimeZone st1 = new SimpleTimeZone(1000, "TEST", Calendar.NOVEMBER, 1, Calendar.SUNDAY, 0, Calendar.NOVEMBER, -1, Calendar.SUNDAY, 0); SimpleTimeZone stA = new SimpleTimeZone(1, "Gah"); assertTrue("Clone resulted in same reference", st1.clone() != st1); assertTrue("Clone resulted in unequal object", ((SimpleTimeZone) st1 .clone()).equals(st1)); assertTrue("Clone resulted in same reference", stA.clone() != stA); assertTrue("Clone resulted in unequal object", ((SimpleTimeZone) stA .clone()).equals(stA)); } /** * java.util.SimpleTimeZone#equals(java.lang.Object) */ public void test_equalsLjava_lang_Object() { // Test for method boolean // java.util.SimpleTimeZone.equals(java.lang.Object) TimeZone tz = TimeZone.getTimeZone("EST"); st1 = new SimpleTimeZone(tz.getRawOffset(), "EST"); st2 = new SimpleTimeZone(0, "EST"); assertFalse(st1.equals(st2)); st1.setRawOffset(st2.getRawOffset()); assertTrue(st1.equals(st2)); } /** * java.util.SimpleTimeZone#getDSTSavings() */ public void test_getDSTSavings() { // Test for method int java.util.SimpleTimeZone.getDSTSavings() st1 = new SimpleTimeZone(0, "TEST"); assertEquals("Non-zero default daylight savings", 0, st1.getDSTSavings()); st1.setStartRule(0, 1, 1, 1); st1.setEndRule(11, 1, 1, 1); assertEquals("Incorrect default daylight savings", 3600000, st1.getDSTSavings()); st1 = new SimpleTimeZone(-5 * 3600000, "EST", Calendar.APRIL, 1, -Calendar.SUNDAY, 2 * 3600000, Calendar.OCTOBER, -1, Calendar.SUNDAY, 2 * 3600000, 7200000); assertEquals("Incorrect daylight savings from constructor", 7200000, st1 .getDSTSavings()); } /** * java.util.SimpleTimeZone#getOffset(int, int, int, int, int, int) */ public void test_getOffsetIIIIII() { // Test for method int java.util.SimpleTimeZone.getOffset(int, int, int, // int, int, int) // TimeZone st1 = TimeZone.getTimeZone("EST"); st1 = new SimpleTimeZone(TimeZone.getTimeZone("EST").getRawOffset(), "EST"); assertTrue("Incorrect offset returned", st1.getOffset( GregorianCalendar.AD, 1998, Calendar.NOVEMBER, 11, Calendar.WEDNESDAY, 0) == -(5 * 60 * 60 * 1000)); st1 = new SimpleTimeZone(TimeZone.getTimeZone("EST").getRawOffset(), "EST"); assertEquals("Incorrect offset returned", -(5 * 60 * 60 * 1000), st1 .getOffset(GregorianCalendar.AD, 1998, Calendar.JUNE, 11, Calendar.THURSDAY, 0)); // Regression for HARMONY-5459 st1 = new SimpleTimeZone(TimeZone.getDefault().getRawOffset(), TimeZone.getDefault().getID()); int fourHours = 4*60*60*1000; st1.setRawOffset(fourHours); assertEquals(fourHours, st1.getOffset(1, 2099, 01, 1, 5, 0)); try { st1.getOffset(-1, 2099, 01, 1, 5, 0); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { //expected } try { st1.getOffset(1, 2099, 15, 1, 5, 0); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { //expected } try { st1.getOffset(1, 2099, 01, 100, 5, 0); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { //expected } try { st1.getOffset(1, 2099, 01, 1, 50, 0); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { //expected } try { st1.getOffset(1, 2099, 01, 1, 5, -10); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { //expected } } /** * java.util.SimpleTimeZone#getRawOffset() */ public void test_getRawOffset() { // Test for method int java.util.SimpleTimeZone.getRawOffset() st1 = new SimpleTimeZone(TimeZone.getTimeZone("EST").getRawOffset(), "EST"); assertTrue("Incorrect offset returned", st1.getRawOffset() == -(5 * 60 * 60 * 1000)); } /** * java.util.SimpleTimeZone#hashCode() */ public void test_hashCode() { // Test for method int java.util.SimpleTimeZone.hashCode() // For lack of a better test. st1 = new SimpleTimeZone(-5 * 3600000, "EST", Calendar.APRIL, 1, -Calendar.SUNDAY, 2 * 3600000, Calendar.OCTOBER, -1, Calendar.SUNDAY, 2 * 3600000); assertTrue(TimeZone.getTimeZone("EST").hashCode() != 0); assertTrue(st1.hashCode() != 0); } /** * java.util.SimpleTimeZone#hasSameRules(java.util.TimeZone) */ public void test_hasSameRulesLjava_util_TimeZone() { // Test for method boolean // java.util.SimpleTimeZone.hasSameRules(java.util.TimeZone) SimpleTimeZone st = new SimpleTimeZone(1000, "TEST", Calendar.NOVEMBER, 1, Calendar.SUNDAY, 0, Calendar.NOVEMBER, -1, Calendar.SUNDAY, 0); SimpleTimeZone sameAsSt = new SimpleTimeZone(1000, "REST", Calendar.NOVEMBER, 1, Calendar.SUNDAY, 0, Calendar.NOVEMBER, -1, Calendar.SUNDAY, 0); SimpleTimeZone notSameAsSt = new SimpleTimeZone(1000, "PEST", Calendar.NOVEMBER, 2, Calendar.SUNDAY, 0, Calendar.NOVEMBER, -1, Calendar.SUNDAY, 0); assertTrue("Time zones have same rules but return false", st .hasSameRules(sameAsSt)); assertTrue("Time zones have different rules but return true", !st .hasSameRules(notSameAsSt)); } /** * java.util.SimpleTimeZone#inDaylightTime(java.util.Date) */ public void test_inDaylightTimeLjava_util_Date() { // Test for method boolean // java.util.SimpleTimeZone.inDaylightTime(java.util.Date) TimeZone tz = TimeZone.getTimeZone("EST"); SimpleTimeZone zone = new SimpleTimeZone(tz.getRawOffset(), "EST", Calendar.APRIL, 1, -Calendar.SUNDAY, 7200000, Calendar.OCTOBER, -1, Calendar.SUNDAY, 7200000, 3600000); GregorianCalendar gc = new GregorianCalendar(1998, Calendar.JUNE, 11); assertTrue("Returned incorrect daylight value1", zone.inDaylightTime(gc .getTime())); gc = new GregorianCalendar(1998, Calendar.NOVEMBER, 11); assertTrue("Returned incorrect daylight value2", !(zone .inDaylightTime(gc.getTime()))); gc = new GregorianCalendar(zone); gc.set(1999, Calendar.APRIL, 4, 1, 59, 59); assertTrue("Returned incorrect daylight value3", !(zone .inDaylightTime(gc.getTime()))); Date date = new Date(gc.getTime().getTime() + 1000); assertTrue("Returned incorrect daylight value4", zone .inDaylightTime(date)); gc.set(1999, Calendar.OCTOBER, 31, 1, 0, 0); assertTrue("Returned incorrect daylight value5", !(zone .inDaylightTime(gc.getTime()))); date = new Date(gc.getTime().getTime() - 1000); assertTrue("Returned incorrect daylight value6", zone .inDaylightTime(date)); assertTrue("Returned incorrect daylight value7", !zone .inDaylightTime(new Date(891752400000L + 7200000 - 1))); assertTrue("Returned incorrect daylight value8", zone .inDaylightTime(new Date(891752400000L + 7200000))); assertTrue("Returned incorrect daylight value9", zone .inDaylightTime(new Date(909288000000L + 7200000 - 1))); assertTrue("Returned incorrect daylight value10", !zone .inDaylightTime(new Date(909288000000L + 7200000))); } /** * java.util.SimpleTimeZone#setDSTSavings(int) */ public void test_setDSTSavingsI() { // Test for method void java.util.SimpleTimeZone.setDSTSavings(int) SimpleTimeZone st = new SimpleTimeZone(1000, "Test_TZ"); st.setStartRule(0, 1, 1, 1); st.setEndRule(11, 1, 1, 1); st.setDSTSavings(1); assertEquals(1, st.getDSTSavings()); try { st.setDSTSavings(0); fail(); } catch (IllegalArgumentException expected) { } try { st.setDSTSavings(-1); fail(); } catch (IllegalArgumentException expected) { } } /** * java.util.SimpleTimeZone#setEndRule(int, int, int) */ public void test_setEndRuleIII() { SimpleTimeZone st = new SimpleTimeZone(1000, "Test_TZ"); st.setStartRule(Calendar.NOVEMBER, 1, 0); st.setEndRule(Calendar.NOVEMBER, 20, 0); assertTrue("StartRule improperly set1", st.useDaylightTime()); assertTrue("StartRule improperly set2", st.inDaylightTime( new GregorianCalendar(1998, Calendar.NOVEMBER, 13).getTime())); assertTrue("StartRule improperly set3", !(st .inDaylightTime(new GregorianCalendar(1998, Calendar.OCTOBER, 13).getTime()))); try { st.setEndRule(13, 20, 0); fail("IllegalArgumentException is not thrown."); } catch(IllegalArgumentException iae) { //expected } try { st.setEndRule(1, 32, 0); fail("IllegalArgumentException is not thrown."); } catch(IllegalArgumentException iae) { //expected } try { st.setEndRule(1, 30, 10); fail("IllegalArgumentException is not thrown."); } catch(IllegalArgumentException iae) { //expected } } /** * java.util.SimpleTimeZone#setEndRule(int, int, int, int) */ public void test_setEndRuleIIII() { // Test for method void java.util.SimpleTimeZone.setEndRule(int, int, // int, int) SimpleTimeZone st = new SimpleTimeZone(1000, "Test_TZ"); // Spec indicates that both end and start must be set or result is // undefined st.setStartRule(Calendar.NOVEMBER, 1, Calendar.SUNDAY, 0); st.setEndRule(Calendar.NOVEMBER, -1, Calendar.SUNDAY, 0); assertTrue("StartRule improperly set1", st.useDaylightTime()); assertTrue("StartRule improperly set2", st .inDaylightTime(new GregorianCalendar(1998, Calendar.NOVEMBER, 13).getTime())); assertTrue("StartRule improperly set3", !(st .inDaylightTime(new GregorianCalendar(1998, Calendar.OCTOBER, 13).getTime()))); try { st.setEndRule(12, -1, Calendar.SUNDAY, 0); fail("IllegalArgumentException is not thrown."); } catch(IllegalArgumentException iae) { //expected } try { st.setEndRule(Calendar.NOVEMBER, 10, Calendar.SUNDAY, 0); fail("IllegalArgumentException is not thrown."); } catch(IllegalArgumentException iae) { //expected } try { st.setEndRule(Calendar.NOVEMBER, -1, 8, 0); fail("IllegalArgumentException is not thrown."); } catch(IllegalArgumentException iae) { //expected } try { st.setEndRule(Calendar.NOVEMBER, -1, Calendar.SUNDAY, -10); fail("IllegalArgumentException is not thrown."); } catch(IllegalArgumentException iae) { //expected } } /** * java.util.SimpleTimeZone#setEndRule(int, int, int, int, boolean) */ public void test_setEndRuleIIIIZ() { // Test for method void java.util.SimpleTimeZone.setEndRule(int, int, // int, int, boolean) SimpleTimeZone st = new SimpleTimeZone(1000, "Test_TZ"); // Spec indicates that both end and start must be set or result is // undefined st.setStartRule(Calendar.NOVEMBER, 8, Calendar.SUNDAY, 1, false); st.setEndRule(Calendar.NOVEMBER, 15, Calendar.SUNDAY, 1, true); assertTrue("StartRule improperly set1", st.useDaylightTime()); assertTrue("StartRule improperly set2", st .inDaylightTime((new GregorianCalendar(1999, Calendar.NOVEMBER, 7, 12, 0).getTime()))); assertTrue("StartRule improperly set3", st .inDaylightTime((new GregorianCalendar(1999, Calendar.NOVEMBER, 20, 12, 0).getTime()))); assertTrue("StartRule improperly set4", !(st .inDaylightTime(new GregorianCalendar(1999, Calendar.NOVEMBER, 6, 12, 0).getTime()))); assertTrue("StartRule improperly set5", !(st .inDaylightTime(new GregorianCalendar(1999, Calendar.NOVEMBER, 21, 12, 0).getTime()))); try { st.setEndRule(20, 15, Calendar.SUNDAY, 1, true); fail("IllegalArgumentException is not thrown."); } catch(IllegalArgumentException iae) { //expected } try { st.setEndRule(Calendar.NOVEMBER, 35, Calendar.SUNDAY, 1, true); fail("IllegalArgumentException is not thrown."); } catch(IllegalArgumentException iae) { //expected } try { st.setEndRule(Calendar.NOVEMBER, 15, 12, 1, true); fail("IllegalArgumentException is not thrown."); } catch(IllegalArgumentException iae) { //expected } try { st.setEndRule(Calendar.NOVEMBER, 15, Calendar.SUNDAY, -1, true); fail("IllegalArgumentException is not thrown."); } catch(IllegalArgumentException iae) { //expected } } /** * java.util.SimpleTimeZone#setRawOffset(int) */ public void test_setRawOffsetI() { // Test for method void java.util.SimpleTimeZone.setRawOffset(int) st1 = new SimpleTimeZone(TimeZone.getTimeZone("EST").getRawOffset(), "EST"); int off = st1.getRawOffset(); st1.setRawOffset(1000); boolean val = st1.getRawOffset() == 1000; st1.setRawOffset(off); assertTrue("Incorrect offset set", val); } /** * java.util.SimpleTimeZone#setStartRule(int, int, int) */ public void test_setStartRuleIII() { // Test for method void java.util.SimpleTimeZone.setStartRule(int, int, // int) SimpleTimeZone st = new SimpleTimeZone(1000, "Test_TZ"); // Spec indicates that both end and start must be set or result is // undefined st.setStartRule(Calendar.NOVEMBER, 1, 1); st.setEndRule(Calendar.DECEMBER, 1, 1); assertTrue("StartRule improperly set", st.useDaylightTime()); assertTrue("StartRule improperly set", st .inDaylightTime((new GregorianCalendar(1998, Calendar.NOVEMBER, 13).getTime()))); assertTrue("StartRule improperly set", !(st .inDaylightTime(new GregorianCalendar(1998, Calendar.OCTOBER, 13).getTime()))); try { st.setStartRule(13, 20, 0); fail("IllegalArgumentException is not thrown."); } catch(IllegalArgumentException iae) { //expected } try { st.setStartRule(1, 32, 0); fail("IllegalArgumentException is not thrown."); } catch(IllegalArgumentException iae) { //expected } try { st.setStartRule(1, 30, 10); fail("IllegalArgumentException is not thrown."); } catch(IllegalArgumentException iae) { //expected } } /** * java.util.SimpleTimeZone#setStartRule(int, int, int, int) */ public void test_setStartRuleIIII() { // Test for method void java.util.SimpleTimeZone.setStartRule(int, int, // int, int) SimpleTimeZone st = new SimpleTimeZone(1000, "Test_TZ"); // Spec indicates that both end and start must be set or result is // undefined st.setStartRule(Calendar.NOVEMBER, 1, Calendar.SUNDAY, 0); st.setEndRule(Calendar.NOVEMBER, -1, Calendar.SUNDAY, 0); assertTrue("StartRule improperly set1", st.useDaylightTime()); assertTrue("StartRule improperly set2", st .inDaylightTime((new GregorianCalendar(1998, Calendar.NOVEMBER, 13).getTime()))); assertTrue("StartRule improperly set3", !(st .inDaylightTime(new GregorianCalendar(1998, Calendar.OCTOBER, 13).getTime()))); try { st.setStartRule(12, -1, Calendar.SUNDAY, 0); fail("IllegalArgumentException is not thrown."); } catch(IllegalArgumentException iae) { //expected } try { st.setStartRule(Calendar.NOVEMBER, 10, Calendar.SUNDAY, 0); fail("IllegalArgumentException is not thrown."); } catch(IllegalArgumentException iae) { //expected } try { st.setStartRule(Calendar.NOVEMBER, -1, 8, 0); fail("IllegalArgumentException is not thrown."); } catch(IllegalArgumentException iae) { //expected } try { st.setStartRule(Calendar.NOVEMBER, -1, Calendar.SUNDAY, -10); fail("IllegalArgumentException is not thrown."); } catch(IllegalArgumentException iae) { //expected } } /** * java.util.SimpleTimeZone#setStartRule(int, int, int, int, boolean) */ public void test_setStartRuleIIIIZ() { TimeZone.setDefault(TimeZone.getTimeZone("GMT")); // Test for method void java.util.SimpleTimeZone.setStartRule(int, int, // int, int, boolean) SimpleTimeZone st = new SimpleTimeZone(TimeZone.getTimeZone("EST").getRawOffset(), "EST"); // Spec indicates that both end and start must be set or result is // undefined st.setStartRule(Calendar.NOVEMBER, 1, Calendar.SUNDAY, 1, true); st.setEndRule(Calendar.NOVEMBER, 15, Calendar.SUNDAY, 1, false); assertTrue("StartRule improperly set1", st.useDaylightTime()); assertTrue("StartRule improperly set2", st .inDaylightTime((new GregorianCalendar(1999, Calendar.NOVEMBER, 7, 12, 0).getTime()))); assertTrue("StartRule improperly set3", st .inDaylightTime((new GregorianCalendar(1999, Calendar.NOVEMBER, 13, 12, 0).getTime()))); assertTrue("StartRule improperly set4", !(st .inDaylightTime(new GregorianCalendar(1999, Calendar.NOVEMBER, 6, 12, 0).getTime()))); assertTrue("StartRule improperly set5", !(st .inDaylightTime(new GregorianCalendar(1999, Calendar.NOVEMBER, 14, 12, 0).getTime()))); try { st.setStartRule(20, 15, Calendar.SUNDAY, 1, true); fail("IllegalArgumentException is not thrown."); } catch(IllegalArgumentException iae) { //expected } try { st.setStartRule(Calendar.NOVEMBER, 35, Calendar.SUNDAY, 1, true); fail("IllegalArgumentException is not thrown."); } catch(IllegalArgumentException iae) { //expected } try { st.setStartRule(Calendar.NOVEMBER, 15, 12, 1, true); fail("IllegalArgumentException is not thrown."); } catch(IllegalArgumentException iae) { //expected } try { st.setStartRule(Calendar.NOVEMBER, 15, Calendar.SUNDAY, -1, true); fail("IllegalArgumentException is not thrown."); } catch(IllegalArgumentException iae) { //expected } } /** * java.util.SimpleTimeZone#setStartYear(int) */ public void test_setStartYearI() { // Test for method void java.util.SimpleTimeZone.setStartYear(int) SimpleTimeZone st = new SimpleTimeZone(1000, "Test_TZ"); st.setStartRule(Calendar.NOVEMBER, 1, Calendar.SUNDAY, 0); st.setEndRule(Calendar.NOVEMBER, -1, Calendar.SUNDAY, 0); st.setStartYear(1999); assertTrue("set year improperly set1", !(st .inDaylightTime(new GregorianCalendar(1999, Calendar.JULY, 12) .getTime()))); assertTrue("set year improperly set2", !(st .inDaylightTime(new GregorianCalendar(1998, Calendar.OCTOBER, 13).getTime()))); assertTrue("set year improperly set3", (st .inDaylightTime(new GregorianCalendar(1999, Calendar.NOVEMBER, 13).getTime()))); } /** * java.util.SimpleTimeZone#toString() */ public void test_toString() { // Test for method java.lang.String java.util.SimpleTimeZone.toString() String string = TimeZone.getTimeZone("EST").toString(); assertNotNull("toString() returned null", string); assertTrue("toString() is empty", string.length() != 0); } /** * java.util.SimpleTimeZone#useDaylightTime() */ public void test_useDaylightTime() { // Test for method boolean java.util.SimpleTimeZone.useDaylightTime() SimpleTimeZone st = new SimpleTimeZone(1000, "Test_TZ"); assertTrue("useDaylightTime returned incorrect value", !st .useDaylightTime()); // Spec indicates that both end and start must be set or result is // undefined st.setStartRule(Calendar.NOVEMBER, 1, Calendar.SUNDAY, 0); st.setEndRule(Calendar.NOVEMBER, -1, Calendar.SUNDAY, 0); assertTrue("useDaylightTime returned incorrect value", st .useDaylightTime()); } public void test_getOffsetJ() { Calendar cal = Calendar.getInstance(); cal.set(1998, Calendar.NOVEMBER, 11, 0, 0); st1 = new SimpleTimeZone(TimeZone.getTimeZone("EST").getRawOffset(), "EST"); assertTrue("Incorrect offset returned", st1.getOffset(cal.getTimeInMillis()) == -(5 * 60 * 60 * 1000)); st1 = new SimpleTimeZone(TimeZone.getTimeZone("EST").getRawOffset(), "EST"); cal.set(1998, Calendar.JUNE, 11, 0, 0); assertEquals("Incorrect offset returned", -(5 * 60 * 60 * 1000), st1 .getOffset(cal.getTimeInMillis())); // Regression for HARMONY-5459 st1 = new SimpleTimeZone(TimeZone.getDefault().getRawOffset(), TimeZone.getDefault().getID()); int fourHours = 4*60*60*1000; st1.setRawOffset(fourHours); cal.set(2099, 01, 1, 0, 0); assertEquals(fourHours, st1.getOffset(cal.getTimeInMillis())); } /** * Sets up the fixture, for example, open a network connection. This method * is called before a test is executed. */ protected void setUp() { } /** * Tears down the fixture, for example, close a network connection. This * method is called after a test is executed. */ protected void tearDown() { } }