import gnu.classpath.SystemProperties; import java.util.Calendar; import java.util.Date; import java.util.SimpleTimeZone; import java.util.TimeZone; final class SimpleTimeZoneTest { public static void main (String[] args) { long errorcount = 0; TimeZone utc = (TimeZone) new SimpleTimeZone(0, "GMT"); TimeZone.setDefault(utc); Calendar cal = Calendar.getInstance(utc); TimeZone tz1 = new SimpleTimeZone(-12600000, "Canada/Newfoundland", Calendar.MARCH, 8, -Calendar.SUNDAY, 60000, Calendar.NOVEMBER, 1, -Calendar.SUNDAY, 60000); System.out.println(tz1); cal.set(2037, Calendar.NOVEMBER, 1, 2, 30, 0); if (!tz1.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 1 before failed"); errorcount++; } cal.set(2037, Calendar.NOVEMBER, 1, 2, 31, 0); if (tz1.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 1 after failed"); errorcount++; } cal.set(2038, Calendar.JANUARY, 1, 2, 29, 0); if (tz1.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 1 New Year failed"); errorcount++; } TimeZone tz2 = new SimpleTimeZone(-12600000, "Test1", Calendar.MARCH, 8, -Calendar.SUNDAY, 60000, SimpleTimeZone.WALL_TIME, Calendar.NOVEMBER, 1, -Calendar.SUNDAY, 60000, SimpleTimeZone.STANDARD_TIME, 3600000); System.out.println(tz2); cal.set(2037, Calendar.NOVEMBER, 1, 3, 30, 0); if (!tz2.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 2 before failed"); errorcount++; } cal.set(2037, Calendar.NOVEMBER, 1, 3, 31, 0); if (tz2.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 2 after failed"); errorcount++; } if (tz2.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 2 New Year failed"); errorcount++; } TimeZone tz3 = new SimpleTimeZone(-12600000, "Test2", Calendar.MARCH, 8, -Calendar.SUNDAY, 60000, Calendar.NOVEMBER, 1, -Calendar.SUNDAY, 3660000, 3600000); System.out.println(tz3); cal.set(2037, Calendar.NOVEMBER, 1, 3, 30, 0); if (!tz3.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 3 before failed"); errorcount++; } cal.set(2037, Calendar.NOVEMBER, 1, 3, 31, 0); if (tz3.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 3 after failed"); errorcount++; } if (tz3.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 3 New Year failed"); errorcount++; } if (tz2.equals(tz3) || tz2.hasSameRules(tz3)) { System.out.println("tz2.equals(tz3) || tz2.hasSameRules(tz3)"); errorcount++; } ((SimpleTimeZone) tz2).setEndRule(Calendar.NOVEMBER, 1, -Calendar.SUNDAY, 3660000); cal.set(2037, Calendar.NOVEMBER, 1, 3, 30, 0); if (!tz2.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 4 before failed"); errorcount++; } cal.set(2037, Calendar.NOVEMBER, 1, 3, 31, 0); if (tz2.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 4 after failed"); errorcount++; } if (tz2.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 4 New Year failed"); errorcount++; } if (tz2.equals(tz3) || !tz2.hasSameRules(tz3) || tz2.hashCode() != tz3.hashCode()) { System.out.println("tz2.equals(tz3) || !tz2.hasSameRules(tz3) || tz2.hashCode() != tz3.hashCode()"); errorcount++; } tz3.setID("Test1"); if (!tz2.equals(tz3)) { System.out.println("!tz2.equals(tz3)"); errorcount++; } TimeZone tz4 = new SimpleTimeZone(-12600000, "Test1", Calendar.MARCH, 8, -Calendar.SUNDAY, 60000, SimpleTimeZone.STANDARD_TIME, Calendar.NOVEMBER, 1, -Calendar.SUNDAY, 60000, SimpleTimeZone.STANDARD_TIME, 3600000); System.out.println(tz4); cal.set(2037, Calendar.NOVEMBER, 1, 3, 30, 0); if (!tz4.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 5 before failed"); errorcount++; } cal.set(2037, Calendar.NOVEMBER, 1, 3, 31, 0); if (tz4.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 5 after failed"); errorcount++; } if (tz4.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 5 New Year failed"); errorcount++; } // A very much made up zone TimeZone tz5 = new SimpleTimeZone(-12600000, "Test3", Calendar.MARCH, 8, -Calendar.SUNDAY, 60000, Calendar.JANUARY, 1, 0, 60000, 3600000); System.out.println(tz5); cal.set(2007, Calendar.DECEMBER, 31, 23, 59, 0); if (!tz5.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 6 before 1 failed"); errorcount++; } cal.set(2007, Calendar.JANUARY, 1, 2, 29, 0); if (!tz5.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 6 before 2 failed"); errorcount++; } cal.set(2007, Calendar.JANUARY, 1, 2, 30, 0); if (!tz5.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 6 before 3 failed"); errorcount++; } cal.set(2007, Calendar.JANUARY, 1, 2, 31, 0); if (tz5.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 6 after 1 failed"); errorcount++; } cal.set(2007, Calendar.JANUARY, 3, 2, 31, 0); if (tz5.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 6 after 2 failed"); errorcount++; } cal.set(2007, Calendar.JANUARY, 3, 2, 31, 0); if (tz5.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 6 after 2 failed"); errorcount++; } cal.set(2007, Calendar.MARCH, 11, 3, 30, 0); if (tz5.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 6 after 3 failed"); errorcount++; } cal.set(2007, Calendar.MARCH, 11, 3, 31, 0); if (!tz5.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 6 after 4 failed"); errorcount++; } TimeZone tz6 = new SimpleTimeZone(12600000, "Test4", Calendar.MARCH, 6, 0, 18000000 - 12600000, SimpleTimeZone.UTC_TIME, Calendar.NOVEMBER, -16, -Calendar.THURSDAY, 18000000 - 3600000 - 12600000, SimpleTimeZone.UTC_TIME, 3600000); System.out.println(tz6); cal.set(2007, Calendar.MARCH, 6, 1, 29, 0); if (tz6.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 7 before failed"); errorcount++; } cal.set(2007, Calendar.MARCH, 6, 1, 30, 0); if (!tz6.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 7 after 1 failed"); errorcount++; } cal.set(2007, Calendar.NOVEMBER, 15, 0, 29, 0); if (!tz6.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 7 after 2 failed"); errorcount++; } cal.set(2007, Calendar.NOVEMBER, 15, 0, 30, 0); if (tz6.inDaylightTime(new Date(cal.getTimeInMillis()))) { System.out.println("inDaylightTime test 7 after 3 failed"); errorcount++; } if (errorcount > 0) { System.out.println(errorcount + " errors"); System.exit(1); } System.out.println("All OK"); System.exit(0); } }