• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
18 package org.apache.harmony.tests.java.util;
19 
20 import android.icu.util.VersionInfo;
21 
22 import java.text.DateFormat;
23 import java.util.Calendar;
24 import java.util.Date;
25 import java.util.GregorianCalendar;
26 import java.util.Locale;
27 import java.util.TimeZone;
28 
29 public class DateTest extends junit.framework.TestCase {
30 
31     /**
32      * java.util.Date#Date()
33      */
test_Constructor()34     public void test_Constructor() {
35         // Test for method java.util.Date()
36         GregorianCalendar gc = new GregorianCalendar(1998, Calendar.OCTOBER,
37                 13, 19, 9);
38         long oldTime = gc.getTime().getTime();
39         long now = new Date().getTime();
40         assertTrue("Created incorrect date: " + oldTime + " now: " + now,
41                 oldTime < now);
42     }
43 
44     /**
45      * java.util.Date#Date(int, int, int)
46      */
test_ConstructorIII()47     public void test_ConstructorIII() {
48         // Test for method java.util.Date(int, int, int)
49         Date d1 = new Date(70, 0, 1); // the epoch + local time
50 
51         // the epoch + local time
52         Date d2 = new Date(0 + d1.getTimezoneOffset() * 60 * 1000);
53 
54         assertTrue("Created incorrect date", d1.equals(d2));
55 
56         Date date = new Date(99, 5, 22);
57         Calendar cal = new GregorianCalendar(1999, Calendar.JUNE, 22);
58         assertTrue("Wrong time zone", date.equals(cal.getTime()));
59     }
60 
61     /**
62      * java.util.Date#Date(int, int, int, int, int)
63      */
test_ConstructorIIIII()64     public void test_ConstructorIIIII() {
65         // Test for method java.util.Date(int, int, int, int, int)
66 
67         // the epoch + local time + (1 hour and 1 minute)
68         Date d1 = new Date(70, 0, 1, 1, 1);
69 
70         // the epoch + local time + (1 hour and 1 minute)
71         Date d2 = new Date(0 + d1.getTimezoneOffset() * 60 * 1000 + 60 * 60
72                 * 1000 + 60 * 1000);
73 
74         assertTrue("Created incorrect date", d1.equals(d2));
75     }
76 
77     /**
78      * java.util.Date#Date(int, int, int, int, int, int)
79      */
test_ConstructorIIIIII()80     public void test_ConstructorIIIIII() {
81         // Test for method java.util.Date(int, int, int, int, int, int)
82 
83         // the epoch + local time + (1 hour and 1 minute + 1 second)
84         Date d1 = new Date(70, 0, 1, 1, 1, 1);
85 
86         // the epoch + local time + (1 hour and 1 minute + 1 second)
87         Date d2 = new Date(0 + d1.getTimezoneOffset() * 60 * 1000 + 60 * 60
88                 * 1000 + 60 * 1000 + 1000);
89 
90         assertTrue("Created incorrect date", d1.equals(d2));
91     }
92 
93     /**
94      * java.util.Date#Date(java.lang.String)
95      */
test_ConstructorLjava_lang_String()96     public void test_ConstructorLjava_lang_String() {
97         // Test for method java.util.Date(java.lang.String)
98         Date d1 = new Date("January 1, 1970, 00:00:00 GMT"); // the epoch
99         Date d2 = new Date(0); // the epoch
100         assertTrue("Created incorrect date", d1.equals(d2));
101 
102         try {
103             // Regression for HARMONY-238
104             new Date(null);
105             fail("Constructor Date((String)null) should "
106                     + "throw IllegalArgumentException");
107         } catch (IllegalArgumentException e) {
108             // expected
109         }
110     }
111 
112     /**
113      * java.util.Date#after(java.util.Date)
114      */
test_afterLjava_util_Date()115     public void test_afterLjava_util_Date() {
116         // Test for method boolean java.util.Date.after(java.util.Date)
117         Date d1 = new Date(0);
118         Date d2 = new Date(1900000);
119         assertTrue("Older was returned as newer", d2.after(d1));
120         assertTrue("Newer was returned as older", !d1.after(d2));
121 
122         try {
123             d1.after(null);
124             fail("NullPointerException expected");
125         } catch (NullPointerException e) {
126             //expected
127         }
128     }
129 
130     /**
131      * java.util.Date#before(java.util.Date)
132      */
test_beforeLjava_util_Date()133     public void test_beforeLjava_util_Date() {
134         // Test for method boolean java.util.Date.before(java.util.Date)
135         Date d1 = new Date(0);
136         Date d2 = new Date(1900000);
137         assertTrue("Older was returned as newer", !d2.before(d1));
138         assertTrue("Newer was returned as older", d1.before(d2));
139 
140         try {
141             d1.before(null);
142             fail("NullPointerException expected");
143         } catch (NullPointerException e) {
144             //expected
145         }
146     }
147 
148     /**
149      * java.util.Date#clone()
150      */
test_clone()151     public void test_clone() {
152         // Test for method java.lang.Object java.util.Date.clone()
153         Date d1 = new Date(100000);
154         Date d2 = (Date) d1.clone();
155         assertTrue(
156                 "Cloning date results in same reference--new date is equivalent",
157                 d1 != d2);
158         assertTrue("Cloning date results unequal date", d1.equals(d2));
159     }
160 
161     /**
162      * java.util.Date#compareTo(java.util.Date)
163      */
test_compareToLjava_util_Date()164     public void test_compareToLjava_util_Date() {
165         // Test for method int java.util.Date.compareTo(java.util.Date)
166         final int someNumber = 10000;
167         Date d1 = new Date(someNumber);
168         Date d2 = new Date(someNumber);
169         Date d3 = new Date(someNumber + 1);
170         Date d4 = new Date(someNumber - 1);
171         assertEquals("Comparing a date to itself did not answer zero", 0, d1
172                 .compareTo(d1));
173         assertEquals("Comparing equal dates did not answer zero", 0, d1
174                 .compareTo(d2));
175         assertEquals("date1.compareTo(date2), where date1 > date2, did not result in 1",
176                 1, d1.compareTo(d4));
177         assertEquals("date1.compareTo(date2), where date1 < date2, did not result in -1",
178                 -1, d1.compareTo(d3));
179 
180         try {
181             d1.compareTo(null);
182             fail("NullPointerException expected");
183         } catch (NullPointerException e) {
184             //expected
185         }
186     }
187 
188     /**
189      * java.util.Date#equals(java.lang.Object)
190      */
test_equalsLjava_lang_Object()191     public void test_equalsLjava_lang_Object() {
192         // Test for method boolean java.util.Date.equals(java.lang.Object)
193         Date d1 = new Date(0);
194         Date d2 = new Date(1900000);
195         Date d3 = new Date(1900000);
196         assertTrue("Equality test failed", d2.equals(d3));
197         assertTrue("Equality test failed", !d1.equals(d2));
198     }
199 
200     /**
201      * java.util.Date#getDate()
202      */
test_getDate()203     public void test_getDate() {
204         // Test for method int java.util.Date.getDate()
205         Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9)
206                 .getTime();
207         assertEquals("Returned incorrect date", 13, d.getDate());
208     }
209 
210     /**
211      * java.util.Date#getDay()
212      */
test_getDay()213     public void test_getDay() {
214         // Test for method int java.util.Date.getDay()
215         Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9)
216                 .getTime();
217         assertEquals("Returned incorrect day", 2, d.getDay());
218     }
219 
220     /**
221      * java.util.Date#getHours()
222      */
test_getHours()223     public void test_getHours() {
224         // Test for method int java.util.Date.getHours()
225         Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9)
226                 .getTime();
227         assertEquals("Returned incorrect hours", 19, d.getHours());
228     }
229 
230     /**
231      * java.util.Date#getMinutes()
232      */
test_getMinutes()233     public void test_getMinutes() {
234         // Test for method int java.util.Date.getMinutes()
235         Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9)
236                 .getTime();
237         assertEquals("Returned incorrect minutes", 9, d.getMinutes());
238     }
239 
240     /**
241      * java.util.Date#getMonth()
242      */
test_getMonth()243     public void test_getMonth() {
244         // Test for method int java.util.Date.getMonth()
245         Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9)
246                 .getTime();
247         assertEquals("Returned incorrect month", 9, d.getMonth());
248     }
249 
250     /**
251      * java.util.Date#getSeconds()
252      */
test_getSeconds()253     public void test_getSeconds() {
254         // Test for method int java.util.Date.getSeconds()
255         Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9)
256                 .getTime();
257         assertEquals("Returned incorrect seconds", 0, d.getSeconds());
258     }
259 
260     /**
261      * java.util.Date#getTime()
262      */
test_getTime()263     public void test_getTime() {
264         // Test for method long java.util.Date.getTime()
265         Date d1 = new Date(0);
266         Date d2 = new Date(1900000);
267         assertEquals("Returned incorrect time", 1900000, d2.getTime());
268         assertEquals("Returned incorrect time", 0, d1.getTime());
269     }
270 
271     /**
272      * java.util.Date#getTimezoneOffset()
273      */
test_getTimezoneOffset()274     public void test_getTimezoneOffset() {
275         // Test for method int java.util.Date.getTimezoneOffset()
276         assertTrue("Used to test", true);
277     }
278 
279     /**
280      * java.util.Date#getYear()
281      */
test_getYear()282     public void test_getYear() {
283         // Test for method int java.util.Date.getYear()
284         Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9)
285                 .getTime();
286         assertEquals("Returned incorrect year", 98, d.getYear());
287     }
288 
289     /**
290      * java.util.Date#hashCode()
291      */
test_hashCode()292     public void test_hashCode() {
293         // Test for method int java.util.Date.hashCode()
294         Date d1 = new Date(0);
295         Date d2 = new Date(1900000);
296         assertEquals("Returned incorrect hash", 1900000, d2.hashCode());
297         assertEquals("Returned incorrect hash", 0, d1.hashCode());
298     }
299 
300     /**
301      * java.util.Date#parse(java.lang.String)
302      */
test_parseLjava_lang_String()303     public void test_parseLjava_lang_String() {
304         // Test for method long java.util.Date.parse(java.lang.String)
305         Date d = new Date(Date.parse("13 October 1998"));
306         GregorianCalendar cal = new GregorianCalendar();
307         cal.setTime(d);
308         assertEquals("Parsed incorrect month", 9, cal.get(Calendar.MONTH));
309         assertEquals("Parsed incorrect year", 1998, cal.get(Calendar.YEAR));
310         assertEquals("Parsed incorrect date", 13, cal.get(Calendar.DATE));
311 
312         d = new Date(Date.parse("Jan-12 1999"));
313         assertTrue("Wrong parsed date 1", d.equals(new GregorianCalendar(1999,
314                 0, 12).getTime()));
315         d = new Date(Date.parse("Jan12-1999"));
316         assertTrue("Wrong parsed date 2", d.equals(new GregorianCalendar(1999,
317                 0, 12).getTime()));
318         d = new Date(Date.parse("Jan12 69-1"));
319         cal.setTimeZone(TimeZone.getTimeZone("GMT"));
320         cal.clear();
321         cal.set(1969, Calendar.JANUARY, 12, 1, 0);
322         assertTrue("Wrong parsed date 3", d.equals(cal.getTime()));
323         d = new Date(Date.parse("6:45:13 3/2/1200 MST"));
324         cal.setTimeZone(TimeZone.getTimeZone("MST"));
325         cal.clear();
326         cal.set(1200, 2, 2, 6, 45, 13);
327         assertTrue("Wrong parsed date 4", d.equals(cal.getTime()));
328         d = new Date(Date.parse("Mon, 22 Nov 1999 12:52:06 GMT"));
329         cal.setTimeZone(TimeZone.getTimeZone("GMT"));
330         cal.clear();
331         cal.set(1999, Calendar.NOVEMBER, 22, 12, 52, 06);
332         assertTrue("Wrong parsed date 5", d.equals(cal.getTime()));
333 
334         try {
335             // Regression for HARMONY-259
336             Date.parse(null);
337             fail("Date.parse(null) should throw IllegalArgumentException");
338         } catch (IllegalArgumentException e) {
339             // expected
340         }
341 
342         // Regression for HARMONY-102
343         assertEquals("Assert 0: parse failure",
344                 -5400000, Date.parse("Sat, 1 Jan 1970 +0130 00:00:00"));
345         assertEquals("Assert 1: parse failure",
346                 858600000, Date.parse("00:00:00 GMT +0130 Sat, 11 Jan 1970"));
347     }
348 
349     /**
350      * java.util.Date#setDate(int)
351      */
test_setDateI()352     public void test_setDateI() {
353         // Test for method void java.util.Date.setDate(int)
354         Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9)
355                 .getTime();
356         d.setDate(23);
357         assertEquals("Set incorrect date", 23, d.getDate());
358     }
359 
360     /**
361      * java.util.Date#setHours(int)
362      */
test_setHoursI()363     public void test_setHoursI() {
364         // Test for method void java.util.Date.setHours(int)
365         Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9)
366                 .getTime();
367         d.setHours(23);
368         assertEquals("Set incorrect hours", 23, d.getHours());
369     }
370 
371     /**
372      * java.util.Date#setMinutes(int)
373      */
test_setMinutesI()374     public void test_setMinutesI() {
375         // Test for method void java.util.Date.setMinutes(int)
376         Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9)
377                 .getTime();
378         d.setMinutes(45);
379         assertEquals("Set incorrect mins", 45, d.getMinutes());
380     }
381 
382     /**
383      * java.util.Date#setMonth(int)
384      */
test_setMonthI()385     public void test_setMonthI() {
386         // Test for method void java.util.Date.setMonth(int)
387         Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9)
388                 .getTime();
389         d.setMonth(0);
390         assertEquals("Set incorrect month", 0, d.getMonth());
391     }
392 
393     /**
394      * java.util.Date#setSeconds(int)
395      */
test_setSecondsI()396     public void test_setSecondsI() {
397         // Test for method void java.util.Date.setSeconds(int)
398         Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9)
399                 .getTime();
400         d.setSeconds(13);
401         assertEquals("Set incorrect seconds", 13, d.getSeconds());
402     }
403 
404     /**
405      * java.util.Date#setTime(long)
406      */
test_setTimeJ()407     public void test_setTimeJ() {
408         // Test for method void java.util.Date.setTime(long)
409         Date d1 = new Date(0);
410         Date d2 = new Date(1900000);
411         d1.setTime(900);
412         d2.setTime(890000);
413         assertEquals("Returned incorrect time", 890000, d2.getTime());
414         assertEquals("Returned incorrect time", 900, d1.getTime());
415     }
416 
417     /**
418      * java.util.Date#setYear(int)
419      */
test_setYearI()420     public void test_setYearI() {
421         // Test for method void java.util.Date.setYear(int)
422         Date d = new GregorianCalendar(1998, Calendar.OCTOBER, 13, 19, 9)
423                 .getTime();
424         d.setYear(8);
425         assertEquals("Set incorrect year", 8, d.getYear());
426     }
427 
428     /**
429      * java.util.Date#toGMTString()
430      */
test_toGMTString()431     public void test_toGMTString() {
432         // Test for method java.lang.String java.util.Date.toGMTString()
433         assertEquals("Did not convert epoch to GMT string correctly", "1 Jan 1970 00:00:00 GMT", new Date(0)
434                 .toGMTString());
435         assertEquals("Did not convert epoch + 1yr to GMT string correctly",
436                 "1 Jan 1971 00:00:00 GMT", new Date((long) 365 * 24 * 60 * 60 * 1000).toGMTString()
437         );
438     }
439 
440     /**
441      * java.util.Date#toString()
442      */
test_toString()443     public void test_toString() {
444         // Test for method java.lang.String java.util.Date.toString()
445         Calendar cal = Calendar.getInstance();
446         cal.set(Calendar.DATE, 1);
447         cal.set(Calendar.MONTH, Calendar.JANUARY);
448         cal.set(Calendar.YEAR, 1970);
449         cal.set(Calendar.HOUR_OF_DAY, 0);
450         cal.set(Calendar.MINUTE, 0);
451         cal.set(Calendar.SECOND, 0);
452         Date d = cal.getTime();
453         String result = d.toString();
454         assertTrue("Incorrect result: " + d, result
455                 .startsWith("Thu Jan 01 00:00:00")
456                 && result.endsWith("1970"));
457 
458         TimeZone tz = TimeZone.getDefault();
459         TimeZone.setDefault(TimeZone.getTimeZone("GMT-5"));
460         try {
461             Date d1 = new Date(0);
462             assertTrue("Returned incorrect string: " + d1, d1.toString()
463                     .equals("Wed Dec 31 19:00:00 GMT-05:00 1969"));
464         } finally {
465             TimeZone.setDefault(tz);
466         }
467 
468         // Test for HARMONY-5468
469         TimeZone.setDefault(TimeZone.getTimeZone("MST"));
470         Date d2 = new Date(108, 7, 27);
471         assertTrue("Returned incorrect string: " + d2, d2.toString()
472                 .startsWith("Wed Aug 27 00:00:00")
473                 && d2.toString().endsWith("2008"));
474     }
475 
476     /**
477      * java.util.Date#UTC(int, int, int, int, int, int)
478      */
test_UTCIIIIII()479     public void test_UTCIIIIII() {
480         // Test for method long java.util.Date.UTC(int, int, int, int, int, int)
481         assertTrue("Returned incorrect UTC value for epoch", Date.UTC(70, 0, 1,
482                 0, 0, 0) == (long) 0);
483         assertTrue("Returned incorrect UTC value for epoch +1yr", Date.UTC(71,
484                 0, 1, 0, 0, 0) == (long) 365 * 24 * 60 * 60 * 1000);
485     }
486 
487     private static final char AM_PM_SPACE_CHAR = ' ';
488 
489     /**
490      * java.util.Date#toLocaleString() Test for method java.lang.String
491      *        java.util.Date.toGMTString()
492      */
test_toLocaleString()493     public void test_toLocaleString() {
494         Locale loc = Locale.getDefault();
495         Locale.setDefault(Locale.US);
496         TimeZone tz = TimeZone.getDefault();
497         TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
498         // This test assumes a default DateFormat.is24Hour setting.
499         DateFormat.is24Hour = null;
500         try {
501             assertEquals("Did not convert epoch to GMT string correctly", "Jan 1, 1970 12:00:00"
502                             + AM_PM_SPACE_CHAR + "AM", new Date(0).toLocaleString());
503             assertEquals("Did not convert epoch + 1yr to GMT string correctly",
504                     "Jan 1, 1971 12:00:00" + AM_PM_SPACE_CHAR + "AM",
505                     new Date((long)365 * 24 * 60 * 60 * 1000).toLocaleString());
506         } finally {
507             Locale.setDefault(loc);
508             TimeZone.setDefault(tz);
509         }
510     }
511 
512     static TimeZone defaultTimeZone = TimeZone.getDefault();
513 
514     /**
515      * Sets up the fixture, for example, open a network connection. This method
516      * is called before a test is executed.
517      */
setUp()518     protected void setUp() {
519     }
520 
521     /**
522      * Tears down the fixture, for example, close a network connection. This
523      * method is called after a test is executed.
524      */
tearDown()525     protected void tearDown() {
526         TimeZone.setDefault(defaultTimeZone);
527     }
528 }
529