package org.oddjob.schedules.schedules; import java.text.ParseException; import java.util.Date; import junit.framework.TestCase; import org.oddjob.OddjobSessionFactory; import org.oddjob.arooa.ArooaParseException; import org.oddjob.arooa.ArooaSession; import org.oddjob.arooa.standard.StandardFragmentParser; import org.oddjob.arooa.utils.DateHelper; import org.oddjob.arooa.xml.XMLConfiguration; import org.oddjob.schedules.Interval; import org.oddjob.schedules.IntervalTo; import org.oddjob.schedules.Schedule; import org.oddjob.schedules.ScheduleContext; import org.oddjob.schedules.ScheduleList; import org.oddjob.schedules.ScheduleResult; import org.oddjob.schedules.ScheduleRoller; import org.oddjob.schedules.SimpleInterval; import org.oddjob.schedules.SimpleScheduleResult; import org.oddjob.schedules.units.DayOfWeek; import org.oddjob.schedules.units.Month; public class DayAfterScheduleTest extends TestCase { public void testDayAfterInterval() throws ParseException { DayAfterSchedule test = new DayAfterSchedule(); ScheduleContext context = new ScheduleContext(new Date()); context = context.spawn(new Date(), new IntervalTo( DateHelper.parseDate("2011-09-15"), DateHelper.parseDate("2011-09-16"))); Interval result = test.nextDue(context); IntervalTo expected = new IntervalTo( DateHelper.parseDate("2011-09-16"), DateHelper.parseDate("2011-09-17")); assertEquals(expected, result); } public void testDayAfterWithRefinement() throws ParseException { WeeklySchedule weekly = new WeeklySchedule(); weekly.setOn(DayOfWeek.Days.WEDNESDAY); DayAfterSchedule test = new DayAfterSchedule(); weekly.setRefinement(test); DailySchedule time = new DailySchedule(); time.setFrom("14:00"); test.setRefinement(time); Interval[] results = new ScheduleRoller(weekly).resultsFrom( DateHelper.parseDate("2011-09-15")); IntervalTo expected = new IntervalTo( DateHelper.parseDateTime("2011-09-15 14:00"), DateHelper.parseDate("2011-09-16")); assertEquals(expected, results[0]); expected = new IntervalTo( DateHelper.parseDateTime("2011-09-22 14:00"), DateHelper.parseDate("2011-09-23")); assertEquals(expected, results[1]); } public void testDayAfterScheduleExample() throws ArooaParseException, ParseException { ArooaSession session = new OddjobSessionFactory().createSession(); ScheduleList holidays = new ScheduleList(); YearlySchedule h1 = new YearlySchedule(); h1.setInMonth(Month.Months.AUGUST); DateSchedule h2 = new DateSchedule(); h2.setOn("2011-09-30"); holidays.setSchedules(0, h1); holidays.setSchedules(1, h2); session.getBeanRegistry().register("holidays", holidays); StandardFragmentParser parser = new StandardFragmentParser(session); parser.parse(new XMLConfiguration( "org/oddjob/schedules/schedules/DayAfterScheduleExample.xml", getClass().getClassLoader())); Schedule schedule = (Schedule) parser.getRoot(); Interval[] results = new ScheduleRoller(schedule).resultsFrom( DateHelper.parseDateTime("2011-04-12 11:00")); ScheduleResult expected; expected = new SimpleScheduleResult( new SimpleInterval( DateHelper.parseDateTime("2011-05-02 08:00")), DateHelper.parseDateTime("2011-05-02 00:00")); assertEquals(expected, results[0]); expected = new SimpleScheduleResult( new IntervalTo( DateHelper.parseDateTime("2011-05-31 17:00"))); assertEquals(expected, results[1]); expected = new SimpleScheduleResult( new IntervalTo( DateHelper.parseDateTime("2011-06-30 17:00"))); assertEquals(expected, results[2]); expected = new SimpleScheduleResult( new SimpleInterval( DateHelper.parseDateTime("2011-09-01 08:00")), DateHelper.parseDateTime("2011-09-01 00:00")); assertEquals(expected, results[3]); expected = new SimpleScheduleResult( new IntervalTo( DateHelper.parseDateTime("2011-10-03 08:00")), DateHelper.parseDateTime("2011-10-03 00:00")); assertEquals(expected, results[4]); expected = new SimpleScheduleResult( new IntervalTo( DateHelper.parseDateTime("2011-10-31 17:00"))); assertEquals(expected, results[5]); } }