1   /*
2    * Created by IntelliJ IDEA.
3    * User: Administrator
4    * Date: 4/03/2002
5    * Time: 15:15:27
6    * To change template for new class use
7    * Code Style | Class Templates options (Tools | IDE Options).
8    */
9   package com.atlassian.core.util;
10  
11  import com.atlassian.core.util.DateUtils;
12  import com.atlassian.core.util.InvalidDurationException;
13  import junit.framework.Test;
14  import junit.framework.TestCase;
15  import junit.framework.TestSuite;
16  
17  import java.sql.Timestamp;
18  import java.util.Calendar;
19  import java.util.Locale;
20  import java.util.ResourceBundle;
21  
22  public class TestDateUtils extends TestCase
23  {
24      private static long MINUTE = 60;
25      private static long HOUR = (60 * MINUTE);
26  
27      private static long SECOND_MS = 1000;
28      private static long MINUTE_MS = SECOND_MS * 60;
29      private static long HOUR_MS = MINUTE_MS * 60;
30      private static long DAY_MS = HOUR_MS * 24;
31  
32  
33      private ResourceBundle resourceBundle;
34  
35      protected void setUp() throws Exception
36      {
37          super.setUp();
38  
39          resourceBundle = ResourceBundle.getBundle("DateUtils", Locale.getDefault(), Thread.currentThread().getContextClassLoader());
40      }
41  
42      public void testEqualTimeStamps1()
43      {
44          Timestamp testa = new Timestamp(100000000);
45          testa.setTime(100000009);
46          Timestamp testb = new Timestamp(100000000);
47          testb.setTime(100000000);
48  
49          assertTrue((DateUtils.equalTimestamps(testa, testb)));
50      }
51  
52  
53      public void testEqualTimeStamps2()
54      {
55          Timestamp testa = new Timestamp(100000000);
56          testa.setTime(100000000);
57          Timestamp testb = new Timestamp(100000000);
58          testb.setTime(100000009);
59  
60          assertTrue(DateUtils.equalTimestamps(testa, testb));
61      }
62  
63      public void testEqualTimeStamps3()
64      {
65          Timestamp testa = new Timestamp(100000000);
66          testa.setTime(100000010);
67          Timestamp testb = new Timestamp(100000000);
68          testb.setTime(100000000);
69          assertTrue(!(DateUtils.equalTimestamps(testa, testb)));
70      }
71  
72      public void testEqualTimeStamps4()
73      {
74          Timestamp testa = new Timestamp(100000000);
75          testa.setTime(100000000);
76          Timestamp testb = new Timestamp(100000000);
77          testb.setTime(100000010);
78          assertTrue(!(DateUtils.equalTimestamps(testa, testb)));
79      }
80  
81      public void testDateDifference1()
82      {
83          _testDateDifference(cal(2000, 1, 1), cal(2000, 2, 1), 0, "0 months");
84          _testDateDifference(cal(2000, 1, 1), cal(2000, 2, 1), 2, "29 days");
85          _testDateDifference(cal(2000, 1, 1), cal(2000, 2, 15), 1, "1 month, 12 days");
86          _testDateDifference(cal(2000, 1, 1), cal(2000, 2, 15), 2, "1 month, 12 days");
87          _testDateDifference(cal(2000, 1, 1), cal(2000, 1, 1), 1, "0 days");
88          _testDateDifference(cal(2000, 1, 1), cal(2000, 1, 1), 2, "0 hours");
89          _testDateDifference(cal(2000, 1, 1), cal(2000, 12, 1), 1, "10 months, 25 days");
90          _testDateDifference(cal(2000, 1, 1), cal(2000, 1, 2), 2, "1 day");
91          _testDateDifference(cal(2000, 12, 1), cal(2001, 1, 1), 2, "1 month");
92  //        _testDateDifference(cal(2000, 12, 1), cal(2002, 1, 1), 2, "1 year, 1 month");
93  //        _testDateDifference(cal(1999, 12, 1), cal(2002, 1, 1), 2, "2 years, 1 month");
94  //        _testDateDifference(cal(2004, 8, 29), cal(2007, 4, 26), 3, "2 years, 7 months"); //previously said "138 weeks, 3 days ago"
95  
96          _testDateDifference(3 * DAY_MS + 5 * HOUR_MS + 4 * MINUTE_MS + 30 * SECOND_MS, 4, "3 days, 5 hours, 4 minutes, 30 seconds");
97          _testDateDifference(3 * DAY_MS + 5 * HOUR_MS + 4 * MINUTE_MS + 30 * SECOND_MS, 3, "3 days, 5 hours, 4 minutes");
98          _testDateDifference(3 * DAY_MS + 5 * HOUR_MS + 4 * MINUTE_MS + 30 * SECOND_MS, 2, "3 days, 5 hours");
99          _testDateDifference(3 * DAY_MS + 5 * HOUR_MS + 4 * MINUTE_MS + 30 * SECOND_MS, 1, "3 days");
100         _testDateDifference(3 * DAY_MS + 5 * HOUR_MS + 4 * MINUTE_MS + 30 * SECOND_MS, 0, "0 months");
101     }
102 
103     private static Calendar cal(int year1, int month1, int day1)
104     {
105         Calendar cal = Calendar.getInstance();
106         cal.set(year1, month1, day1, 0, 0, 0);
107         cal.set(Calendar.MILLISECOND, 0);
108         return cal;
109     }
110 
111     private void _testDateDifference(long diff, int resolution, String expected)
112     {
113         long now = System.currentTimeMillis();
114         assertEquals(expected, DateUtils.dateDifference(now - diff, now, resolution, resourceBundle));
115     }
116 
117     private void _testDateDifference(Calendar cal1, Calendar cal2, int resolution, String expected)
118     {
119         assertEquals(expected, DateUtils.dateDifference(cal1.getTime().getTime(), cal2.getTime().getTime(), resolution, resourceBundle));
120     }
121 
122     public void testGetDuration() throws Exception
123     {
124         assertEquals(0 * MINUTE, DateUtils.getDuration(""));
125         assertEquals(0 * MINUTE, DateUtils.getDuration(" "));
126         assertEquals(0 * MINUTE, DateUtils.getDuration(null));
127         assertEquals(60 * MINUTE, DateUtils.getDuration("60"));
128         assertEquals(60 * MINUTE, DateUtils.getDuration("60m"));
129         assertEquals(60 * MINUTE, DateUtils.getDuration("1h"));
130         assertEquals(120 * MINUTE, DateUtils.getDuration("2h"));
131         assertEquals(60 * 24 * 3 * MINUTE, DateUtils.getDuration("3d"));
132         assertEquals(60 * 24 * 7 * 4 * MINUTE, DateUtils.getDuration("4w"));
133         assertEquals(60 * 24 * 7 * 4 * MINUTE, DateUtils.getDuration("4weeks"));
134         assertEquals(90 * MINUTE, DateUtils.getDuration("1h 30"));
135         assertEquals((3 * 24 * 60 + 4 * 60 + 30) * MINUTE, DateUtils.getDuration("3d 4h 30m"));
136         assertEquals((3 * 24 * 60 + 4 * 60 + 30) * MINUTE, DateUtils.getDuration("3d, 4h, 30m"));
137         assertEquals((3 * 24 * 60 + 4 * 60 + 30) * MINUTE, DateUtils.getDuration("3days, 4hours, 30minutes"));
138         assertEquals((4 * 7 * 24 * 60 + 3 * 24 * 60 + 4 * 60 + 30) * MINUTE, DateUtils.getDuration("4w 3d 4h 30m"));
139 
140         try
141         {
142             DateUtils.getDuration("foo");
143             assertTrue("Should throw exception", false);
144         }
145         catch (InvalidDurationException e)
146         {
147         }
148 
149         try
150         {
151             DateUtils.getDuration("60s");
152             assertTrue("Should throw exception", false);
153         }
154         catch (InvalidDurationException e)
155         {
156         }
157     }
158 
159     public void testGetDuration2() throws InvalidDurationException
160     {
161         int hoursInDay = 8;
162         int daysInWeek = 5;
163         assertEquals(90 * MINUTE, DateUtils.getDuration("1h 30", hoursInDay, daysInWeek));
164         assertEquals((3 * hoursInDay * 60 + 4 * 60 + 30) * MINUTE, DateUtils.getDuration("3d 4h 30m", hoursInDay, daysInWeek));
165         assertEquals((4 * daysInWeek * hoursInDay * 60 + 3 * hoursInDay * 60 + 4 * 60 + 30) * MINUTE, DateUtils.getDuration("4w 3d 4h 30m", hoursInDay, daysInWeek));
166     }
167 
168     public void testGetDurationWithNegative() throws InvalidDurationException
169     {
170         assertEquals(90 * MINUTE, DateUtils.getDurationWithNegative("1h 30"));
171         assertEquals(-90 * MINUTE, DateUtils.getDurationWithNegative("-1h 30"));
172         assertEquals(-7 * HOUR, DateUtils.getDurationWithNegative("- 7h"));
173         try
174         {
175             DateUtils.getDurationWithNegative("-7h -6m");
176             fail("Should have thrown exception");
177         }
178         catch (InvalidDurationException e)
179         {
180         }
181     }
182 
183     public void testDurationString() throws Exception
184     {
185         assertEquals("0m", DateUtils.getDurationString(0 * MINUTE));
186         assertEquals("30m", DateUtils.getDurationString(30 * MINUTE));
187         assertEquals("1h", DateUtils.getDurationString(60 * MINUTE));
188         assertEquals("2h", DateUtils.getDurationString(120 * MINUTE));
189         assertEquals("3d", DateUtils.getDurationString(60 * 24 * 3 * MINUTE));
190         assertEquals("4w", DateUtils.getDurationString(4 * 7 * 24 * 60 * MINUTE));
191         assertEquals("1h 30m", DateUtils.getDurationString(90 * MINUTE));
192         assertEquals("3d 4h 30m", DateUtils.getDurationString((3 * 24 * 60 + 4 * 60 + 30) * MINUTE));
193         assertEquals("4w 1d 4h 30m", DateUtils.getDurationString((4 * 7 * 24 * 60 + 24 * 60 + 4 * 60 + 30) * MINUTE));
194     }
195 
196     public void testDurationStringWithNegative() throws Exception
197     {
198         assertEquals("-30m", DateUtils.getDurationStringWithNegative(-30 * MINUTE));
199         assertEquals("30m", DateUtils.getDurationStringWithNegative(30 * MINUTE));
200         assertEquals("-1h 30m", DateUtils.getDurationStringWithNegative(-90 * MINUTE));
201     }
202 
203     public void testDurationPretty() throws Exception
204     {
205         assertEquals("0 minutes", DateUtils.getDurationPretty(0 * MINUTE, resourceBundle));
206         assertEquals("1 second", DateUtils.getDurationPretty(1, resourceBundle)); // 12 seconds
207         assertEquals("12 seconds", DateUtils.getDurationPretty(12, resourceBundle)); // 12 seconds
208         assertEquals("1 minute", DateUtils.getDurationPretty(1 * MINUTE, resourceBundle));
209         assertEquals("30 minutes", DateUtils.getDurationPretty(30 * MINUTE, resourceBundle));
210         assertEquals("1 hour", DateUtils.getDurationPretty(60 * MINUTE, resourceBundle));
211         assertEquals("2 hours", DateUtils.getDurationPretty(120 * MINUTE, resourceBundle));
212         assertEquals("3 days", DateUtils.getDurationPretty(60 * 24 * 3 * MINUTE, resourceBundle));
213         assertEquals("4 weeks", DateUtils.getDurationPretty(60 * 24 * 7 * 4 * MINUTE, resourceBundle));
214         assertEquals("1 hour, 30 minutes", DateUtils.getDurationPretty(90 * MINUTE, resourceBundle));
215         assertEquals("3 days, 4 hours, 30 minutes", DateUtils.getDurationPretty((3 * 24 * 60 + 4 * 60 + 30) * MINUTE, resourceBundle));
216         assertEquals("4 weeks, 1 day, 4 hours, 30 minutes", DateUtils.getDurationPretty((4 * 7 * 24 * 60 + 24 * 60 + 4 * 60 + 30) * MINUTE, resourceBundle));
217         //previously said "138 weeks, 3 days ago"
218         assertEquals("1 year, 34 weeks, 1 day", DateUtils.getDurationPretty((cal(2007, 4, 26).getTimeInMillis() - cal(2005, 8, 29).getTimeInMillis()) / 1000, resourceBundle));
219         assertEquals("2 years, 34 weeks, 1 day", DateUtils.getDurationPretty((cal(2007, 4, 26).getTimeInMillis() - cal(2004, 8, 29).getTimeInMillis()) / 1000, resourceBundle));
220     }
221 
222     public void testDurationPrettySecondsResolution() throws Exception
223     {
224         // work just like DateUtils.getDurationPretty if there are seconds remainder in the duration
225         assertEquals("0 seconds", DateUtils.getDurationPrettySecondsResolution(0 * MINUTE, resourceBundle));
226         assertEquals("1 second", DateUtils.getDurationPrettySecondsResolution(1, resourceBundle)); // 12 seconds
227         assertEquals("12 seconds", DateUtils.getDurationPrettySecondsResolution(12, resourceBundle)); // 12 seconds
228         assertEquals("1 minute", DateUtils.getDurationPrettySecondsResolution(1 * MINUTE, resourceBundle));
229         assertEquals("30 minutes", DateUtils.getDurationPrettySecondsResolution(30 * MINUTE, resourceBundle));
230         assertEquals("1 hour", DateUtils.getDurationPrettySecondsResolution(60 * MINUTE, resourceBundle));
231         assertEquals("2 hours", DateUtils.getDurationPrettySecondsResolution(120 * MINUTE, resourceBundle));
232         assertEquals("3 days", DateUtils.getDurationPrettySecondsResolution(60 * 24 * 3 * MINUTE, resourceBundle));
233         assertEquals("4 weeks", DateUtils.getDurationPrettySecondsResolution(60 * 24 * 7 * 4 * MINUTE, resourceBundle));
234         assertEquals("1 hour, 30 minutes", DateUtils.getDurationPrettySecondsResolution(90 * MINUTE, resourceBundle));
235         assertEquals("3 days, 4 hours, 30 minutes", DateUtils.getDurationPrettySecondsResolution((3 * 24 * 60 + 4 * 60 + 30) * MINUTE, resourceBundle));
236         assertEquals("4 weeks, 1 day, 4 hours, 30 minutes", DateUtils.getDurationPrettySecondsResolution((4 * 7 * 24 * 60 + 24 * 60 + 4 * 60 + 30) * MINUTE, resourceBundle));
237         //previously said "138 weeks, 3 days ago"
238         assertEquals("1 year, 34 weeks, 1 day", DateUtils.getDurationPrettySecondsResolution((cal(2007, 4, 26).getTimeInMillis() - cal(2005, 8, 29).getTimeInMillis()) / 1000, resourceBundle));
239         assertEquals("2 years, 34 weeks, 1 day", DateUtils.getDurationPrettySecondsResolution((cal(2007, 4, 26).getTimeInMillis() - cal(2004, 8, 29).getTimeInMillis()) / 1000, resourceBundle));
240 
241         // now we have seconds in the remainder
242         assertEquals("1 minute, 23 seconds", DateUtils.getDurationPrettySecondsResolution(1 * MINUTE + 23, resourceBundle));
243         assertEquals("30 minutes, 1 second", DateUtils.getDurationPrettySecondsResolution(30 * MINUTE + 1, resourceBundle));
244         assertEquals("1 hour, 23 seconds", DateUtils.getDurationPrettySecondsResolution(60 * MINUTE + 23, resourceBundle));
245         assertEquals("2 hours, 8 seconds", DateUtils.getDurationPrettySecondsResolution(120 * MINUTE + 8, resourceBundle));
246         assertEquals("3 days, 12 seconds", DateUtils.getDurationPrettySecondsResolution(60 * 24 * 3 * MINUTE + 12, resourceBundle));
247         assertEquals("4 weeks, 17 seconds", DateUtils.getDurationPrettySecondsResolution(60 * 24 * 7 * 4 * MINUTE + 17, resourceBundle));
248         assertEquals("1 hour, 30 minutes, 4 seconds", DateUtils.getDurationPrettySecondsResolution(90 * MINUTE + 4, resourceBundle));
249         assertEquals("3 days, 4 hours, 30 minutes, 39 seconds", DateUtils.getDurationPrettySecondsResolution((3 * 24 * 60 + 4 * 60 + 30) * MINUTE + 39, resourceBundle));
250         assertEquals("4 weeks, 1 day, 4 hours, 30 minutes, 1 second", DateUtils.getDurationPrettySecondsResolution((4 * 7 * 24 * 60 + 24 * 60 + 4 * 60 + 30) * MINUTE + 1, resourceBundle));
251 
252     }
253 
254     public void testToEndOfPeriod()
255     {
256         final int year = 2005;
257         final int month = Calendar.OCTOBER;
258         final int date = 15;
259         final int hour = 13;
260         final int minute = 22;
261         final int second = 22;
262 
263         // Set the date we're playing with to 2005/10/15 13:22:22
264         Calendar calendar = Calendar.getInstance();
265         calendar.set(Calendar.YEAR, year);
266         calendar.set(Calendar.MONTH, month);
267         calendar.set(Calendar.DATE, date);
268         calendar.set(Calendar.HOUR_OF_DAY, hour);
269         calendar.set(Calendar.MINUTE, minute);
270         calendar.set(Calendar.SECOND, second);
271 
272         // Try getting the maximum of the year. We should end up with 2005/12/31 23:59:59
273         Calendar yearPeriod = DateUtils.toEndOfPeriod((Calendar) calendar.clone(), Calendar.YEAR);
274         assertEquals(year, yearPeriod.get(Calendar.YEAR));
275         assertEquals(Calendar.DECEMBER, yearPeriod.get(Calendar.MONTH));
276         assertEquals(31, yearPeriod.get(Calendar.DATE));
277         assertEquals(23, yearPeriod.get(Calendar.HOUR_OF_DAY));
278         assertEquals(59, yearPeriod.get(Calendar.MINUTE));
279         assertEquals(59, yearPeriod.get(Calendar.SECOND));
280 
281         // Try getting the maximum of the month. We should end up with 2005/10/31 23:59:59
282         Calendar monthPeriod = DateUtils.toEndOfPeriod((Calendar) calendar.clone(), Calendar.MONTH);
283         assertEquals(year, monthPeriod.get(Calendar.YEAR));
284         assertEquals(month, monthPeriod.get(Calendar.MONTH));
285         assertEquals(31, monthPeriod.get(Calendar.DATE));
286         assertEquals(23, monthPeriod.get(Calendar.HOUR_OF_DAY));
287         assertEquals(59, monthPeriod.get(Calendar.MINUTE));
288         assertEquals(59, monthPeriod.get(Calendar.SECOND));
289 
290         // Try getting the maximum of the date. We should end up with 2005/10/15 23:59:59
291         Calendar datePeriod = DateUtils.toEndOfPeriod((Calendar) calendar.clone(), Calendar.DATE);
292         assertEquals(year, datePeriod.get(Calendar.YEAR));
293         assertEquals(month, datePeriod.get(Calendar.MONTH));
294         assertEquals(date, datePeriod.get(Calendar.DATE));
295         assertEquals(23, datePeriod.get(Calendar.HOUR_OF_DAY));
296         assertEquals(59, datePeriod.get(Calendar.MINUTE));
297         assertEquals(59, datePeriod.get(Calendar.SECOND));
298 
299         // Try getting the maximum of the hour. We should end up with 2005/10/15 13:59:59
300         Calendar hourPeriod = DateUtils.toEndOfPeriod((Calendar) calendar.clone(), Calendar.HOUR_OF_DAY);
301         assertEquals(year, hourPeriod.get(Calendar.YEAR));
302         assertEquals(month, hourPeriod.get(Calendar.MONTH));
303         assertEquals(date, hourPeriod.get(Calendar.DATE));
304         assertEquals(hour, hourPeriod.get(Calendar.HOUR_OF_DAY));
305         assertEquals(59, hourPeriod.get(Calendar.MINUTE));
306         assertEquals(59, hourPeriod.get(Calendar.SECOND));
307 
308         // Try getting the maximum of the minute. We should end up with 2005/10/15 13:22:59
309         Calendar minutePeriod = DateUtils.toEndOfPeriod((Calendar) calendar.clone(), Calendar.MINUTE);
310         assertEquals(year, minutePeriod.get(Calendar.YEAR));
311         assertEquals(month, minutePeriod.get(Calendar.MONTH));
312         assertEquals(date, minutePeriod.get(Calendar.DATE));
313         assertEquals(hour, minutePeriod.get(Calendar.HOUR_OF_DAY));
314         assertEquals(minute, minutePeriod.get(Calendar.MINUTE));
315         assertEquals(59, minutePeriod.get(Calendar.SECOND));
316     }
317 
318     public void testToStartOfPeriod()
319     {
320         final int year = 2005;
321         final int month = Calendar.OCTOBER;
322         final int date = 15;
323         final int hour = 13;
324         final int minute = 22;
325         final int second = 22;
326 
327         // Set the date we're playing with to 2005/10/15 13:22:22
328         Calendar calendar = Calendar.getInstance();
329         calendar.set(Calendar.YEAR, year);
330         calendar.set(Calendar.MONTH, month);
331         calendar.set(Calendar.DATE, date);
332         calendar.set(Calendar.HOUR_OF_DAY, hour);
333         calendar.set(Calendar.MINUTE, minute);
334         calendar.set(Calendar.SECOND, second);
335 
336         // Try getting the minimum of the year. We should end up with 2005/01/01 00:00:00
337         Calendar yearPeriod = DateUtils.toStartOfPeriod((Calendar) calendar.clone(), Calendar.YEAR);
338         assertEquals(year, yearPeriod.get(Calendar.YEAR));
339         assertEquals(Calendar.JANUARY, yearPeriod.get(Calendar.MONTH));
340         assertEquals(1, yearPeriod.get(Calendar.DATE));
341         assertEquals(0, yearPeriod.get(Calendar.HOUR_OF_DAY));
342         assertEquals(0, yearPeriod.get(Calendar.MINUTE));
343         assertEquals(0, yearPeriod.get(Calendar.SECOND));
344 
345         // Try getting the minimum of the month. We should end up with 2005/10/01 00:00:00
346         Calendar monthPeriod = DateUtils.toStartOfPeriod((Calendar) calendar.clone(), Calendar.MONTH);
347         assertEquals(year, monthPeriod.get(Calendar.YEAR));
348         assertEquals(month, monthPeriod.get(Calendar.MONTH));
349         assertEquals(1, monthPeriod.get(Calendar.DATE));
350         assertEquals(0, monthPeriod.get(Calendar.HOUR_OF_DAY));
351         assertEquals(0, monthPeriod.get(Calendar.MINUTE));
352         assertEquals(0, monthPeriod.get(Calendar.SECOND));
353 
354         // Try getting the minimum of the date. We should end up with 2005/10/15 00:00:00
355         Calendar datePeriod = DateUtils.toStartOfPeriod((Calendar) calendar.clone(), Calendar.DATE);
356         assertEquals(year, datePeriod.get(Calendar.YEAR));
357         assertEquals(month, datePeriod.get(Calendar.MONTH));
358         assertEquals(date, datePeriod.get(Calendar.DATE));
359         assertEquals(0, datePeriod.get(Calendar.HOUR_OF_DAY));
360         assertEquals(0, datePeriod.get(Calendar.MINUTE));
361         assertEquals(0, datePeriod.get(Calendar.SECOND));
362 
363         // Try getting the minimum of the hour. We should end up with 2005/10/15 13:00:00
364         Calendar hourPeriod = DateUtils.toStartOfPeriod((Calendar) calendar.clone(), Calendar.HOUR_OF_DAY);
365         assertEquals(year, hourPeriod.get(Calendar.YEAR));
366         assertEquals(month, hourPeriod.get(Calendar.MONTH));
367         assertEquals(date, hourPeriod.get(Calendar.DATE));
368         assertEquals(hour, hourPeriod.get(Calendar.HOUR_OF_DAY));
369         assertEquals(0, hourPeriod.get(Calendar.MINUTE));
370         assertEquals(0, hourPeriod.get(Calendar.SECOND));
371 
372         // Try getting the minimum of the minute. We should end up with 2005/10/15 13:22:00
373         Calendar minutePeriod = DateUtils.toStartOfPeriod((Calendar) calendar.clone(), Calendar.MINUTE);
374         assertEquals(year, minutePeriod.get(Calendar.YEAR));
375         assertEquals(month, minutePeriod.get(Calendar.MONTH));
376         assertEquals(date, minutePeriod.get(Calendar.DATE));
377         assertEquals(hour, minutePeriod.get(Calendar.HOUR_OF_DAY));
378         assertEquals(minute, minutePeriod.get(Calendar.MINUTE));
379         assertEquals(0, minutePeriod.get(Calendar.SECOND));
380     }
381 
382     // JUNIT Methods
383     public TestDateUtils(String s)
384     {
385         super(s);
386     }
387 
388     public static Test suite()
389     {
390         return new TestSuite(TestDateUtils.class);
391     }
392 }