KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > oddjob > schedules > schedules > TimeScheduleTest


1 /*
2  * (c) Rob Gordon 2005
3  */

4 package org.oddjob.schedules.schedules;
5
6 import java.text.ParseException JavaDoc;
7 import java.util.Calendar JavaDoc;
8 import java.util.Date JavaDoc;
9 import java.util.TimeZone JavaDoc;
10
11 import junit.framework.TestCase;
12
13 import org.apache.log4j.Logger;
14 import org.oddjob.schedules.DateUtils;
15 import org.oddjob.schedules.Interval;
16 import org.oddjob.schedules.ScheduleContext;
17 import org.oddjob.util.DateHelper;
18
19 /**
20  *
21  */

22 public class TimeScheduleTest extends TestCase {
23     private static final Logger logger = Logger.getLogger("org.oddjob");
24     
25     protected void setUp() {
26         logger.debug("============== " + getName() + " ==================");
27     }
28     
29     public void testGetStartDate() throws ParseException JavaDoc {
30         TimeSchedule s = new TimeSchedule();
31         s.setFrom("10:00");
32         s.setTo("11:00");
33
34         Date JavaDoc result = s.getStartDate(new ScheduleContext(
35                 DateHelper.parseDateTime("2-mar-06 09:00")));
36         
37         assertEquals(DateHelper.parseDateTime("2-mar-06 10:00"), result);
38         
39         result = s.getStartDate(new ScheduleContext(
40                 DateHelper.parseDateTime("2-mar-06 10:30")));
41         
42         assertEquals(DateHelper.parseDateTime("2-mar-06 10:00"), result);
43
44         result = s.getStartDate(new ScheduleContext(
45                 DateHelper.parseDateTime("2-mar-06 11:30")));
46         
47         assertEquals(DateHelper.parseDateTime("3-mar-06 10:00"), result);
48     }
49     
50     public void testGetStartDate2() throws ParseException JavaDoc {
51         TimeSchedule s = new TimeSchedule();
52         s.setFrom("11:00");
53         s.setTo("10:00");
54
55         Date JavaDoc result = s.getStartDate(new ScheduleContext(
56                 DateHelper.parseDateTime("2-mar-06 09:00")));
57         
58         assertEquals(DateHelper.parseDateTime("1-mar-06 11:00"), result);
59         
60         result = s.getStartDate(new ScheduleContext(
61                 DateHelper.parseDateTime("2-mar-06 10:30")));
62         
63         assertEquals(DateHelper.parseDateTime("2-mar-06 11:00"), result);
64
65         result = s.getStartDate(new ScheduleContext(
66                 DateHelper.parseDateTime("2-mar-06 11:30")));
67         
68         assertEquals(DateHelper.parseDateTime("2-mar-06 11:00"), result);
69     }
70
71     public void testGetEndDate() throws ParseException JavaDoc {
72         TimeSchedule s = new TimeSchedule();
73         s.setFrom("10:00");
74         s.setTo("11:00");
75
76         Date JavaDoc result = s.getEndDate(new ScheduleContext(
77                 DateHelper.parseDateTime("2-mar-06 09:00")));
78         
79         assertEquals(DateHelper.parseDateTime("2-mar-06 10:59:59:999"), result);
80         
81         result = s.getEndDate(new ScheduleContext(
82                 DateHelper.parseDateTime("2-mar-06 10:30")));
83         
84         assertEquals(DateHelper.parseDateTime("2-mar-06 10:59:59:999"), result);
85
86         result = s.getEndDate(new ScheduleContext(
87                 DateHelper.parseDateTime("2-mar-06 11:30")));
88         
89         assertEquals(DateHelper.parseDateTime("3-mar-06 10:59:59:999"), result);
90     }
91     
92     public void testGetEndDate2() throws ParseException JavaDoc {
93         TimeSchedule s = new TimeSchedule();
94         s.setFrom("11:00");
95         s.setTo("10:00");
96
97         Date JavaDoc result = s.getEndDate(new ScheduleContext(
98                 DateHelper.parseDateTime("2-mar-06 09:00")));
99         
100         assertEquals(DateHelper.parseDateTime("2-mar-06 09:59:59:999"), result);
101         
102         result = s.getEndDate(new ScheduleContext(
103                 DateHelper.parseDateTime("2-mar-06 10:30")));
104         
105         assertEquals(DateHelper.parseDateTime("3-mar-06 09:59:59:999"), result);
106
107         result = s.getEndDate(new ScheduleContext(
108                 DateHelper.parseDateTime("2-mar-06 11:30")));
109         
110         assertEquals(DateHelper.parseDateTime("3-mar-06 09:59:59:999"), result);
111     }
112     
113     
114     public void testSimple() throws ParseException JavaDoc {
115         TimeSchedule s = new TimeSchedule();
116         s.setFrom("10:00");
117         s.setTo("11:00");
118
119         Date JavaDoc on;
120         ScheduleContext context;
121         Date JavaDoc expectedFrom;
122         Date JavaDoc expectedTo;
123         
124         on = DateHelper.parseDateTime("21-jun-05 9:56");
125         context = new ScheduleContext(on);
126         expectedFrom = DateHelper.parseDateTime("21-jun-05 10:00");
127         expectedTo = DateHelper.parseDateTime("21-jun-05 10:59:59:999");
128
129         assertEquals(expectedFrom, s.getStartDate(context));
130         assertEquals(expectedTo, s.getEndDate(context));
131         
132         on = DateHelper.parseDateTime("21-jun-05 10:30");
133         context = new ScheduleContext(on);
134         expectedFrom = DateHelper.parseDateTime("21-jun-05 10:00");
135         expectedTo = DateHelper.parseDateTime("21-jun-05 10:59:59:999");
136
137         assertEquals(expectedFrom, s.getStartDate(context));
138         assertEquals(expectedTo, s.getEndDate(context));
139
140         on = DateHelper.parseDateTime("21-jun-05 12:30");
141         context = new ScheduleContext(on);
142         expectedFrom = DateHelper.parseDateTime("22-jun-05 10:00");
143         expectedTo = DateHelper.parseDateTime("22-jun-05 10:59:59:999");
144
145         assertEquals(expectedFrom,
146                 s.getStartDate(context));
147         assertEquals(expectedTo,
148                 s.getEndDate(context));
149     }
150     
151     public void testOverMidnight() throws ParseException JavaDoc {
152         TimeSchedule s = new TimeSchedule();
153         s.setFrom("23:00");
154         s.setTo("01:00");
155
156         Date JavaDoc on;
157         ScheduleContext context;
158         Date JavaDoc expectedFrom;
159         Date JavaDoc expectedTo;
160         
161         // before.
162
on = DateHelper.parseDateTime("21-jun-05 2:56");
163         context = new ScheduleContext(on);
164         expectedFrom = DateHelper.parseDateTime("21-jun-05 23:00");
165         expectedTo = DateHelper.parseDateTime("22-jun-05 00:59:59:999");
166
167         assertEquals(expectedFrom, s.getStartDate(context));
168         assertEquals(expectedTo, s.getEndDate(context));
169
170         // during.
171
on = DateHelper.parseDateTime("22-jun-05 0:30");
172         context = new ScheduleContext(on);
173         expectedFrom = DateHelper.parseDateTime("21-jun-05 23:00");
174         expectedTo = DateHelper.parseDateTime("22-jun-05 00:59:59:999");
175
176         assertEquals(expectedFrom, s.getStartDate(context));
177         assertEquals(expectedTo, s.getEndDate(context));
178
179         // after
180
on = DateHelper.parseDateTime("22-jun-05 12:30");
181         context = new ScheduleContext(on);
182         expectedFrom = DateHelper.parseDateTime("22-jun-05 23:00");
183         expectedTo = DateHelper.parseDateTime("23-jun-05 00:59:59:999");
184
185         assertEquals(expectedFrom, s.getStartDate(context));
186         assertEquals(expectedTo, s.getEndDate(context));
187     }
188     
189     public void testOn() throws ParseException JavaDoc {
190         TimeSchedule s = new TimeSchedule();
191         s.setOn("12:00");
192
193         Date JavaDoc on;
194         ScheduleContext context;
195         Date JavaDoc expectedFrom;
196         Date JavaDoc expectedTo;
197         
198         on = DateHelper.parseDateTime("21-jun-05 8:00");
199         context = new ScheduleContext(on);
200         expectedFrom = DateHelper.parseDateTime("21-jun-05 12:00");
201         expectedTo = DateHelper.parseDateTime("21-jun-05 12:00");
202
203         assertEquals(expectedFrom,
204                 s.getStartDate(context));
205         assertEquals(expectedTo,
206                 s.getEndDate(context));
207         
208         on = DateHelper.parseDateTime("21-jun-05 12:00");
209         context = new ScheduleContext(on);
210         expectedFrom = DateHelper.parseDateTime("21-jun-05 12:00");
211         expectedTo = DateHelper.parseDateTime("21-jun-05 12:00");
212
213         assertEquals(expectedFrom, s.getStartDate(context));
214         assertEquals(expectedTo, s.getEndDate(context));
215
216         on = DateHelper.parseDateTime("21-jun-05 12:30");
217         context = new ScheduleContext(on);
218         expectedFrom = DateHelper.parseDateTime("22-jun-05 12:00");
219         expectedTo = DateHelper.parseDateTime("22-jun-05 12:00");
220
221         assertEquals(expectedFrom, s.getStartDate(context));
222         assertEquals(expectedTo, s.getEndDate(context));
223     }
224     
225     /**
226      * How does a Calendar behave at daylight saving time?
227      * change 02:00 to 01:00 and the test fails - but which is right?
228      */

229     public void testCalendarAssuptions() throws ParseException JavaDoc {
230         TimeZone.setDefault(TimeZone.getTimeZone("Europe/London"));
231         
232         Date JavaDoc sample = DateHelper.parseDateTime("29-oct-05 02:00");
233         Calendar JavaDoc cal = Calendar.getInstance(TimeZone.getTimeZone("Europe/London"));
234         cal.setTime(sample);
235         
236         cal.add(Calendar.DATE, 1);
237         
238         assertEquals(DateHelper.parseDateTime("30-oct-05 02:00"), cal.getTime());
239     }
240     
241     public void testDayLightSavingChangeForward() throws ParseException JavaDoc {
242         TimeZone.setDefault(TimeZone.getTimeZone("Europe/London"));
243         
244         TimeSchedule s = new TimeSchedule();
245         s.setOn("02:00");
246
247         Date JavaDoc on;
248         ScheduleContext context;
249         Date JavaDoc expectedFrom;
250         Date JavaDoc expectedTo;
251         
252         on = DateHelper.parseDateTime("29-oct-05 12:00");
253         context = new ScheduleContext(on);
254         expectedFrom = DateHelper.parseDateTime("30-oct-05 02:00");
255         expectedTo = expectedFrom;
256
257         assertEquals(expectedFrom,
258                 s.getStartDate(context));
259         assertEquals(expectedTo,
260                 s.getEndDate(context));
261         
262         on = new Date JavaDoc(expectedFrom.getTime() + 1);
263         context = new ScheduleContext(on);
264         expectedFrom = DateHelper.parseDateTime("31-oct-05 02:00");
265         expectedTo = expectedFrom;
266         
267         assertEquals(expectedFrom,
268                 s.getStartDate(context));
269         assertEquals(expectedTo,
270                 s.getEndDate(context));
271     }
272     
273     public void testDayLightSavingChangeBack() throws ParseException JavaDoc {
274         TimeZone.setDefault(TimeZone.getTimeZone("Europe/London"));
275         
276         TimeSchedule s = new TimeSchedule();
277         s.setOn("02:00");
278
279         Date JavaDoc on;
280         ScheduleContext context;
281         Date JavaDoc expectedFrom;
282         Date JavaDoc expectedTo;
283         
284         on = DateHelper.parseDateTime("26-mar-05 12:00");
285         context = new ScheduleContext(on);
286         expectedFrom = DateHelper.parseDateTime("27-mar-05 02:00");
287         expectedTo = expectedFrom;
288
289         assertEquals(expectedFrom,
290                 s.getStartDate(context));
291         assertEquals(expectedTo,
292                 s.getEndDate(context));
293         
294         on = new Date JavaDoc(expectedFrom.getTime() + 1);
295         context = new ScheduleContext(on);
296         expectedFrom = DateHelper.parseDateTime("28-mar-05 02:00");
297         expectedTo = expectedFrom;
298         
299         assertEquals(expectedFrom,
300                 s.getStartDate(context));
301         assertEquals(expectedTo,
302                 s.getEndDate(context));
303     }
304     
305     public void testWithLimits() throws ParseException JavaDoc {
306         TimeSchedule s = new TimeSchedule();
307         s.setOn("12:00");
308         s.setLimits(new Interval(DateHelper.parseDate("21-jun-2020")
309                 , DateUtils.oneMillisBefore(DateHelper.parseDate("22-jun-2020"))));
310         
311         Date JavaDoc on;
312         ScheduleContext context;
313         Date JavaDoc expectedFrom;
314         Date JavaDoc expectedTo;
315         
316         on = DateHelper.parseDateTime("21-jun-2020 12:00");
317         context = new ScheduleContext(on);
318         expectedFrom = DateHelper.parseDateTime("21-jun-2020 12:00");
319         expectedTo = expectedFrom;
320
321         Interval result = s.nextDue(context);
322         assertEquals(expectedFrom,
323                 result.getFromDate());
324         assertEquals(expectedTo,
325                 result.getToDate());
326     }
327     
328     // with just a from time
329
public void testDefaultTo() throws Exception JavaDoc {
330         TimeSchedule s = new TimeSchedule();
331         s.setFrom("10:00");
332         
333         ScheduleContext context = new ScheduleContext(
334                 DateHelper.parseDateTime("25-dec-05 09:00"));
335         
336         Interval result = s.nextDue(context);
337         logger.debug("result " + result);
338         
339         Date JavaDoc expectedFrom = DateHelper.parseDateTime("25-dec-2005 10:00");
340         Date JavaDoc expectedTo = DateUtils.oneMillisBefore(DateHelper.parseDateTime("26-dec-2005 00:00"));
341         
342         assertEquals(expectedFrom,
343                 result.getFromDate());
344         assertEquals(expectedTo,
345                 result.getToDate());
346     }
347     
348     // with just a to time
349
public void testDefaultFrom() throws Exception JavaDoc {
350         TimeSchedule s = new TimeSchedule();
351         s.setTo("10:00");
352         
353         ScheduleContext context = new ScheduleContext(
354                 DateHelper.parseDateTime("25-dec-05 11:00"));
355         
356         Interval result = s.nextDue(context);
357         logger.debug("result " + result);
358                 
359         assertEquals(new Interval(
360                 DateHelper.parseDateTime("26-dec-2005 00:00"),
361                 DateHelper.parseDateTime("26-dec-2005 09:59:59:999")),
362                 result);
363     }
364     
365     public void testWithInterval() throws Exception JavaDoc {
366         TimeSchedule ts = new TimeSchedule();
367         ts.setTo("11:59");
368         IntervalSchedule is = new IntervalSchedule();
369         is.setInterval("00:15");
370         ts.addValueSchedule(is);
371         
372         ScheduleContext context = new ScheduleContext(
373                 DateHelper.parseDateTime("22-feb-06 14:00"));
374         
375         Interval result = ts.nextDue(context);
376         logger.debug("result " + result);
377         
378         Date JavaDoc expectedFrom = DateHelper.parseDateTime("23-feb-2006 00:00");
379         Date JavaDoc expectedTo = DateUtils.oneMillisBefore(DateHelper.parseDateTime("23-feb-2006 00:15"));
380         
381         assertEquals(expectedFrom,
382                 result.getFromDate());
383         assertEquals(expectedTo,
384                 result.getToDate());
385     }
386 }
387
Popular Tags