package org.oddjob.schedules; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import junit.framework.TestCase; import org.apache.log4j.Logger; import org.oddjob.schedules.schedules.WeeklySchedule; import org.oddjob.schedules.schedules.TimeSchedule; import org.oddjob.schedules.units.DayOfWeek; public class AdhocScheduleTest extends TestCase { private static final Logger logger = Logger.getLogger(AdhocScheduleTest.class); public void testForMeena() throws ParseException { SimpleDateFormat format = new SimpleDateFormat("dd-MMM-yy hh:mm"); assertTrue(isIncluded(DayOfWeek.Days.WEDNESDAY, "10:00", "12:00", format.parse("11-feb-09 11:00"))); assertFalse(isIncluded(DayOfWeek.Days.WEDNESDAY, "10:00", "12:00", format.parse("11-feb-09 09:59"))); assertFalse(isIncluded(DayOfWeek.Days.WEDNESDAY, "10:00", "12:00", format.parse("11-feb-09 12:00"))); // Boundaries not included. assertFalse(isIncluded(DayOfWeek.Days.WEDNESDAY, "10:00", "12:00", format.parse("11-feb-09 10:00"))); assertFalse(isIncluded(DayOfWeek.Days.WEDNESDAY, "10:00", "12:00", format.parse("12-feb-09 12:00"))); // Over midnight examples assertTrue(isIncluded(DayOfWeek.Days.WEDNESDAY, "23:00", "01:00", format.parse("11-feb-09 23:30"))); assertFalse(isIncluded(DayOfWeek.Days.WEDNESDAY, "23:00", "01:00", format.parse("11-feb-09 00:30"))); assertTrue(isIncluded(DayOfWeek.Days.WEDNESDAY, "23:00", "01:00", format.parse("12-feb-09 00:00"))); assertFalse(isIncluded(DayOfWeek.Days.WEDNESDAY, "23:00", "01:00", format.parse("11-feb-09 22:30"))); assertFalse(isIncluded(DayOfWeek.Days.WEDNESDAY, "23:00", "01:00", format.parse("12-feb-09 01:30"))); } public static final boolean isIncluded (DayOfWeek day, String startTime, String endTime, Date date) throws ParseException { WeeklySchedule dws = new WeeklySchedule(); dws.setOn(day); TimeSchedule time = new TimeSchedule(); time.setFrom(startTime); time.setTo(endTime); dws.setRefinement(time); Interval result = dws.nextDue(new ScheduleContext(date)); logger.debug("Day=" + day + ", from=" + startTime + ", to=" + endTime + ", date=" + date + ", result=" + result); return date.after(result.getFromDate()) && date.before(result.getToDate()); } }