/* * 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.text.DateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.Locale; import java.util.TimeZone; public class DateTest extends junit.framework.TestCase { /** * java.util.Date#Date() */ public void test_Constructor() { // Test for method java.util.Date() GregorianCalendar gc = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9); long oldTime = gc.getTime().getTime(); long now = new Date().getTime(); assertTrue("Created incorrect date: " + oldTime + " now: " + now, oldTime < now); } /** * java.util.Date#Date(int, int, int) */ public void test_ConstructorIII() { // Test for method java.util.Date(int, int, int) Date d1 = new Date(70, 0, 1); // the epoch + local time // the epoch + local time Date d2 = new Date(0 + d1.getTimezoneOffset() * 60 * 1000); assertTrue("Created incorrect date", d1.equals(d2)); Date date = new Date(99, 5, 22); Calendar cal = new GregorianCalendar(1999, Calendar.JUNE, 22); assertTrue("Wrong time zone", date.equals(cal.getTime())); } /** * java.util.Date#Date(int, int, int, int, int) */ public void test_ConstructorIIIII() { // Test for method java.util.Date(int, int, int, int, int) // the epoch + local time + (1 hour and 1 minute) Date d1 = new Date(70, 0, 1, 1, 1); // the epoch + local time + (1 hour and 1 minute) Date d2 = new Date(0 + d1.getTimezoneOffset() * 60 * 1000 + 60 * 60 * 1000 + 60 * 1000); assertTrue("Created incorrect date", d1.equals(d2)); } /** * java.util.Date#Date(int, int, int, int, int, int) */ public void test_ConstructorIIIIII() { // Test for method java.util.Date(int, int, int, int, int, int) // the epoch + local time + (1 hour and 1 minute + 1 second) Date d1 = new Date(70, 0, 1, 1, 1, 1); // the epoch + local time + (1 hour and 1 minute + 1 second) Date d2 = new Date(0 + d1.getTimezoneOffset() * 60 * 1000 + 60 * 60 * 1000 + 60 * 1000 + 1000); assertTrue("Created incorrect date", d1.equals(d2)); } /** * java.util.Date#Date(java.lang.String) */ public void test_ConstructorLjava_lang_String() { // Test for method java.util.Date(java.lang.String) Date d1 = new Date("January 1, 1970, 00:00:00 GMT"); // the epoch Date d2 = new Date(0); // the epoch assertTrue("Created incorrect date", d1.equals(d2)); try { // Regression for HARMONY-238 new Date(null); fail("Constructor Date((String)null) should " + "throw IllegalArgumentException"); } catch (IllegalArgumentException e) { // expected } } /** * java.util.Date#after(java.util.Date) */ public void test_afterLjava_util_Date() { // Test for method boolean java.util.Date.after(java.util.Date) Date d1 = new Date(0); Date d2 = new Date(1900000); assertTrue("Older was returned as newer", d2.after(d1)); assertTrue("Newer was returned as older", !d1.after(d2)); try { d1.after(null); fail("NullPointerException expected"); } catch (NullPointerException e) { //expected } } /** * java.util.Date#before(java.util.Date) */ public void test_beforeLjava_util_Date() { // Test for method boolean java.util.Date.before(java.util.Date) Date d1 = new Date(0); Date d2 = new Date(1900000); assertTrue("Older was returned as newer", !d2.before(d1)); assertTrue("Newer was returned as older", d1.before(d2)); try { d1.before(null); fail("NullPointerException expected"); } catch (NullPointerException e) { //expected } } /** * java.util.Date#clone() */ public void test_clone() { // Test for method java.lang.Object java.util.Date.clone() Date d1 = new Date(100000); Date d2 = (Date) d1.clone(); assertTrue( "Cloning date results in same reference--new date is equivalent", d1 != d2); assertTrue("Cloning date results unequal date", d1.equals(d2)); } /** * java.util.Date#compareTo(java.util.Date) */ public void test_compareToLjava_util_Date() { // Test for method int java.util.Date.compareTo(java.util.Date) final int someNumber = 10000; Date d1 = new Date(someNumber); Date d2 = new Date(someNumber); Date d3 = new Date(someNumber + 1); Date d4 = new Date(someNumber - 1); assertEquals("Comparing a date to itself did not answer zero", 0, d1 .compareTo(d1)); assertEquals("Comparing equal dates did not answer zero", 0, d1 .compareTo(d2)); assertEquals("date1.compareTo(date2), where date1 > date2, did not result in 1", 1, d1.compareTo(d4)); assertEquals("date1.compareTo(date2), where date1 < date2, did not result in -1", -1, d1.compareTo(d3)); try { d1.compareTo(null); fail("NullPointerException expected"); } catch (NullPointerException e) { //expected } } /** * java.util.Date#equals(java.lang.Object) */ public void test_equalsLjava_lang_Object() { // Test for method boolean java.util.Date.equals(java.lang.Object) Date d1 = new Date(0); Date d2 = new Date(1900000); Date d3 = new Date(1900000); assertTrue("Equality test failed", d2.equals(d3)); assertTrue("Equality test failed", !d1.equals(d2)); } /** * java.util.Date#getDate() */ public void test_getDate() { // Test for method int java.util.Date.getDate() Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) .getTime(); assertEquals("Returned incorrect date", 13, d.getDate()); } /** * java.util.Date#getDay() */ public void test_getDay() { // Test for method int java.util.Date.getDay() Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) .getTime(); assertEquals("Returned incorrect day", 2, d.getDay()); } /** * java.util.Date#getHours() */ public void test_getHours() { // Test for method int java.util.Date.getHours() Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) .getTime(); assertEquals("Returned incorrect hours", 19, d.getHours()); } /** * java.util.Date#getMinutes() */ public void test_getMinutes() { // Test for method int java.util.Date.getMinutes() Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) .getTime(); assertEquals("Returned incorrect minutes", 9, d.getMinutes()); } /** * java.util.Date#getMonth() */ public void test_getMonth() { // Test for method int java.util.Date.getMonth() Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) .getTime(); assertEquals("Returned incorrect month", 9, d.getMonth()); } /** * java.util.Date#getSeconds() */ public void test_getSeconds() { // Test for method int java.util.Date.getSeconds() Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) .getTime(); assertEquals("Returned incorrect seconds", 0, d.getSeconds()); } /** * java.util.Date#getTime() */ public void test_getTime() { // Test for method long java.util.Date.getTime() Date d1 = new Date(0); Date d2 = new Date(1900000); assertEquals("Returned incorrect time", 1900000, d2.getTime()); assertEquals("Returned incorrect time", 0, d1.getTime()); } /** * java.util.Date#getTimezoneOffset() */ public void test_getTimezoneOffset() { // Test for method int java.util.Date.getTimezoneOffset() assertTrue("Used to test", true); } /** * java.util.Date#getYear() */ public void test_getYear() { // Test for method int java.util.Date.getYear() Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) .getTime(); assertEquals("Returned incorrect year", 98, d.getYear()); } /** * java.util.Date#hashCode() */ public void test_hashCode() { // Test for method int java.util.Date.hashCode() Date d1 = new Date(0); Date d2 = new Date(1900000); assertEquals("Returned incorrect hash", 1900000, d2.hashCode()); assertEquals("Returned incorrect hash", 0, d1.hashCode()); } /** * java.util.Date#parse(java.lang.String) */ public void test_parseLjava_lang_String() { // Test for method long java.util.Date.parse(java.lang.String) Date d = new Date(Date.parse("13 October 1998")); GregorianCalendar cal = new GregorianCalendar(); cal.setTime(d); assertEquals("Parsed incorrect month", 9, cal.get(Calendar.MONTH)); assertEquals("Parsed incorrect year", 1998, cal.get(Calendar.YEAR)); assertEquals("Parsed incorrect date", 13, cal.get(Calendar.DATE)); d = new Date(Date.parse("Jan-12 1999")); assertTrue("Wrong parsed date 1", d.equals(new GregorianCalendar(1999, 0, 12).getTime())); d = new Date(Date.parse("Jan12-1999")); assertTrue("Wrong parsed date 2", d.equals(new GregorianCalendar(1999, 0, 12).getTime())); d = new Date(Date.parse("Jan12 69-1")); cal.setTimeZone(TimeZone.getTimeZone("GMT")); cal.clear(); cal.set(1969, Calendar.JANUARY, 12, 1, 0); assertTrue("Wrong parsed date 3", d.equals(cal.getTime())); d = new Date(Date.parse("6:45:13 3/2/1200 MST")); cal.setTimeZone(TimeZone.getTimeZone("MST")); cal.clear(); cal.set(1200, 2, 2, 6, 45, 13); assertTrue("Wrong parsed date 4", d.equals(cal.getTime())); d = new Date(Date.parse("Mon, 22 Nov 1999 12:52:06 GMT")); cal.setTimeZone(TimeZone.getTimeZone("GMT")); cal.clear(); cal.set(1999, Calendar.NOVEMBER, 22, 12, 52, 06); assertTrue("Wrong parsed date 5", d.equals(cal.getTime())); try { // Regression for HARMONY-259 Date.parse(null); fail("Date.parse(null) should throw IllegalArgumentException"); } catch (IllegalArgumentException e) { // expected } // Regression for HARMONY-102 assertEquals("Assert 0: parse failure", -5400000, Date.parse("Sat, 1 Jan 1970 +0130 00:00:00")); assertEquals("Assert 1: parse failure", 858600000, Date.parse("00:00:00 GMT +0130 Sat, 11 Jan 1970")); } /** * java.util.Date#setDate(int) */ public void test_setDateI() { // Test for method void java.util.Date.setDate(int) Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) .getTime(); d.setDate(23); assertEquals("Set incorrect date", 23, d.getDate()); } /** * java.util.Date#setHours(int) */ public void test_setHoursI() { // Test for method void java.util.Date.setHours(int) Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) .getTime(); d.setHours(23); assertEquals("Set incorrect hours", 23, d.getHours()); } /** * java.util.Date#setMinutes(int) */ public void test_setMinutesI() { // Test for method void java.util.Date.setMinutes(int) Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) .getTime(); d.setMinutes(45); assertEquals("Set incorrect mins", 45, d.getMinutes()); } /** * java.util.Date#setMonth(int) */ public void test_setMonthI() { // Test for method void java.util.Date.setMonth(int) Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) .getTime(); d.setMonth(0); assertEquals("Set incorrect month", 0, d.getMonth()); } /** * java.util.Date#setSeconds(int) */ public void test_setSecondsI() { // Test for method void java.util.Date.setSeconds(int) Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) .getTime(); d.setSeconds(13); assertEquals("Set incorrect seconds", 13, d.getSeconds()); } /** * java.util.Date#setTime(long) */ public void test_setTimeJ() { // Test for method void java.util.Date.setTime(long) Date d1 = new Date(0); Date d2 = new Date(1900000); d1.setTime(900); d2.setTime(890000); assertEquals("Returned incorrect time", 890000, d2.getTime()); assertEquals("Returned incorrect time", 900, d1.getTime()); } /** * java.util.Date#setYear(int) */ public void test_setYearI() { // Test for method void java.util.Date.setYear(int) Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9) .getTime(); d.setYear(8); assertEquals("Set incorrect year", 8, d.getYear()); } /** * java.util.Date#toGMTString() */ public void test_toGMTString() { // Test for method java.lang.String java.util.Date.toGMTString() assertEquals("Did not convert epoch to GMT string correctly", "1 Jan 1970 00:00:00 GMT", new Date(0) .toGMTString()); assertEquals("Did not convert epoch + 1yr to GMT string correctly", "1 Jan 1971 00:00:00 GMT", new Date((long) 365 * 24 * 60 * 60 * 1000).toGMTString() ); } /** * java.util.Date#toString() */ public void test_toString() { // Test for method java.lang.String java.util.Date.toString() Calendar cal = Calendar.getInstance(); cal.set(Calendar.DATE, 1); cal.set(Calendar.MONTH, Calendar.JANUARY); cal.set(Calendar.YEAR, 1970); cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); Date d = cal.getTime(); String result = d.toString(); assertTrue("Incorrect result: " + d, result .startsWith("Thu Jan 01 00:00:00") && result.endsWith("1970")); TimeZone tz = TimeZone.getDefault(); TimeZone.setDefault(TimeZone.getTimeZone("GMT-5")); try { Date d1 = new Date(0); assertTrue("Returned incorrect string: " + d1, d1.toString() .equals("Wed Dec 31 19:00:00 GMT-05:00 1969")); } finally { TimeZone.setDefault(tz); } // Test for HARMONY-5468 TimeZone.setDefault(TimeZone.getTimeZone("MST")); Date d2 = new Date(108, 7, 27); assertTrue("Returned incorrect string: " + d2, d2.toString() .startsWith("Wed Aug 27 00:00:00") && d2.toString().endsWith("2008")); } /** * java.util.Date#UTC(int, int, int, int, int, int) */ public void test_UTCIIIIII() { // Test for method long java.util.Date.UTC(int, int, int, int, int, int) assertTrue("Returned incorrect UTC value for epoch", Date.UTC(70, 0, 1, 0, 0, 0) == (long) 0); assertTrue("Returned incorrect UTC value for epoch +1yr", Date.UTC(71, 0, 1, 0, 0, 0) == (long) 365 * 24 * 60 * 60 * 1000); } /** * java.util.Date#toLocaleString() Test for method java.lang.String * java.util.Date.toGMTString() */ public void test_toLocaleString() { Locale loc = Locale.getDefault(); Locale.setDefault(Locale.US); TimeZone tz = TimeZone.getDefault(); TimeZone.setDefault(TimeZone.getTimeZone("GMT")); // This test assumes a default DateFormat.is24Hour setting. DateFormat.is24Hour = null; try { assertEquals("Did not convert epoch to GMT string correctly", "Jan 1, 1970 12:00:00 AM", new Date(0).toLocaleString()); assertEquals("Did not convert epoch + 1yr to GMT string correctly", "Jan 1, 1971 12:00:00 AM", new Date((long)365 * 24 * 60 * 60 * 1000).toLocaleString()); } finally { Locale.setDefault(loc); TimeZone.setDefault(tz); } } static TimeZone defaultTimeZone = TimeZone.getDefault(); /** * 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() { TimeZone.setDefault(defaultTimeZone); } }