/*
* Copyright (c) 2005, Rob Gordon.
*/
package org.oddjob.schedules.schedules;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import junit.framework.TestCase;
import org.oddjob.OddjobDescriptorFactory;
import org.oddjob.OddjobSessionFactory;
import org.oddjob.arooa.ArooaDescriptor;
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.ScheduleResult;
import org.oddjob.schedules.ScheduleRoller;
import org.oddjob.schedules.SimpleInterval;
import org.oddjob.schedules.SimpleScheduleResult;
/**
*
* @author Rob Gordon.
*/
public class AfterScheduleTest extends TestCase {
static DateFormat checkFormat = new SimpleDateFormat("dd-MMM-yy HH:mm:ss:SSS");
static DateFormat inputFormat = new SimpleDateFormat("dd-MMM-yy HH:mm");
public void testAfterInterval() throws ParseException {
AfterSchedule after = new AfterSchedule();
IntervalSchedule interval = new IntervalSchedule();
interval.setInterval("00:10");
after.setSchedule(interval);
ScheduleResult[] results = new ScheduleRoller(
after).resultsFrom(
DateHelper.parseDateTime("2000-01-01 12:00"));
ScheduleResult expected = new SimpleScheduleResult(
new SimpleInterval(
DateHelper.parseDateTime("2000-01-01 12:10"),
DateHelper.parseDateTime("2000-01-01 12:20")),
DateHelper.parseDateTime("2000-01-01 12:10"));
assertEquals(expected, results[0]);
expected = new SimpleScheduleResult(
new SimpleInterval(
DateHelper.parseDateTime("2000-01-01 12:20"),
DateHelper.parseDateTime("2000-01-01 12:30")),
DateHelper.parseDateTime("2000-01-01 12:20"));
assertEquals(expected, results[1]);
}
public void testAfterEndOfSchedule() throws ParseException {
AfterSchedule after = new AfterSchedule();
DateSchedule interval = new DateSchedule();
interval.setOn("2011-09-20");
after.setSchedule(interval);
Interval[] results = new ScheduleRoller(
after).resultsFrom(
DateHelper.parseDateTime("2011-09-20 12:00"));
ScheduleResult expected = new SimpleScheduleResult(
new IntervalTo(
DateHelper.parseDateTime("2011-09-21 00:00"),
IntervalTo.END_OF_TIME),
DateHelper.parseDateTime("2011-09-21 00:00"));
assertEquals(expected, results[0]);
assertEquals(null, results[1]);
}
public void testAfterExample() throws ArooaParseException, ParseException {
OddjobDescriptorFactory df = new OddjobDescriptorFactory();
ArooaDescriptor descriptor = df.createDescriptor(
getClass().getClassLoader());
StandardFragmentParser parser = new StandardFragmentParser(descriptor);
parser.parse(new XMLConfiguration(
"org/oddjob/schedules/schedules/AfterScheduleExample.xml",
getClass().getClassLoader()));
Schedule schedule = (Schedule) parser.getRoot();
ScheduleContext context = new ScheduleContext(
DateHelper.parseDateTime("2011-04-12 11:00"));
ScheduleResult next = schedule.nextDue(context);
ScheduleResult expected = new SimpleScheduleResult(
new IntervalTo(
DateHelper.parseDateTime("2011-04-12 11:20"),
DateHelper.parseDateTime("2011-04-12 11:40")),
DateHelper.parseDateTime("2011-04-12 11:20"));
assertEquals(expected, next);
next = schedule.nextDue(context.move(
DateHelper.parseDate("2011-04-12 12:20:00:001")));
assertEquals(null, next);
}
public void testAfterBusinessDays() throws ArooaParseException, ParseException {
ArooaSession session = new OddjobSessionFactory().createSession();
StandardFragmentParser parser = new StandardFragmentParser(session);
parser.parse(new XMLConfiguration(
"org/oddjob/schedules/schedules/AfterBusinessDays.xml",
getClass().getClassLoader()));
Schedule schedule = (Schedule) parser.getRoot();
ScheduleResult[] results = new ScheduleRoller(schedule).resultsFrom(
DateHelper.parseDateTime("2011-04-27 12:00"));
Interval expected = new SimpleScheduleResult(
new SimpleInterval(
DateHelper.parseDateTime("2011-04-28 08:00"),
DateHelper.parseDateTime("2011-04-29 00:00")),
DateHelper.parseDateTime("2011-04-28 00:00"));
assertEquals(expected, results[0]);
expected = new SimpleScheduleResult(
new SimpleInterval(
DateHelper.parseDateTime("2011-04-29 08:00"),
DateHelper.parseDateTime("2011-04-30 00:00")),
DateHelper.parseDateTime("2011-04-29 00:00"));
assertEquals(expected, results[1]);
expected = new SimpleScheduleResult(
new SimpleInterval(
DateHelper.parseDateTime("2011-04-30 08:00"),
DateHelper.parseDateTime("2011-05-04 00:00")),
DateHelper.parseDateTime("2011-04-30 00:00"));
assertEquals(expected, results[2]);
expected = new SimpleScheduleResult(
new SimpleInterval(
DateHelper.parseDateTime("2011-05-04 08:00"),
DateHelper.parseDateTime("2011-05-05 00:00")),
DateHelper.parseDateTime("2011-05-04 00:00"));
assertEquals(expected, results[3]);
expected = new SimpleScheduleResult(
new SimpleInterval(
DateHelper.parseDateTime("2011-05-05 08:00"),
DateHelper.parseDateTime("2011-05-06 00:00")),
DateHelper.parseDateTime("2011-05-05 00:00"));
assertEquals(expected, results[4]);
expected = new SimpleScheduleResult(
new SimpleInterval(
DateHelper.parseDateTime("2011-05-06 08:00"),
DateHelper.parseDateTime("2011-05-07 00:00")),
DateHelper.parseDateTime("2011-05-06 00:00"));
assertEquals(expected, results[5]);
}
}