package au.com.vaadinutils.jasper.scheduler; import static org.junit.Assert.assertTrue; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import org.junit.Test; import au.com.vaadinutils.jasper.scheduler.entities.ScheduleMode; public class ScheduleCalcTest { // Logger logger = LogManager.getLogger(); @Test public void testDaysOfWeek() throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yy/MM/dd HH:mm:ss"); Date scheduledTime = sdf.parse("14/05/29 09:30:00"); String daysOfWeek = "1,3,5"; // mon, wed & fri ReportEmailSchedule schedule = new DayOfWeekSchedule(scheduledTime, daysOfWeek); Map<Date, Date> testTimes = new HashMap<Date, Date>(); testTimes.put(sdf.parse("14/05/29 10:00:00"), sdf.parse("14/05/30 09:30:00")); // Thurs/Fri testTimes.put(sdf.parse("14/05/30 10:00:00"), sdf.parse("14/06/02 09:30:00")); // Fri/Mon testTimes.put(sdf.parse("14/05/31 10:00:00"), sdf.parse("14/06/02 09:30:00")); // Sat/Mon testTimes.put(sdf.parse("14/06/01 10:00:00"), sdf.parse("14/06/02 09:30:00")); // Sun/Mon testTimes.put(sdf.parse("14/06/02 10:00:00"), sdf.parse("14/06/04 09:30:00")); // Mon/Wed testTimes.put(sdf.parse("14/06/03 10:00:00"), sdf.parse("14/06/04 09:30:00")); // Tues/Wed testTimes.put(sdf.parse("14/06/04 10:00:00"), sdf.parse("14/06/06 09:30:00")); // Wed/Fri for (Entry<Date, Date> testTime : testTimes.entrySet()) { Date now = testTime.getKey(); Date scheduled = ScheduleMode.DAY_OF_WEEK.getNextRuntime(schedule, now); Date expectedResult = testTime.getValue(); assertTrue("expected " + expectedResult + " got " + scheduled, scheduled.equals(expectedResult)); } } @Test public void testDayOfMonth() throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yy/MM/dd HH:mm:ss"); Date scheduledTime = sdf.parse("14/05/29 09:30:00"); // String daysOfMonth = "1,3,5"; // mon, wed & fri ReportEmailSchedule schedule = new DayOfMonthSchedule(scheduledTime, 29); Map<Date, Date> testTimes = new HashMap<Date, Date>(); testTimes.put(sdf.parse("14/01/28 10:00:00"), sdf.parse("14/01/29 09:30:00")); // Thurs/Fri testTimes.put(sdf.parse("14/02/25 10:00:00"), sdf.parse("14/02/28 09:30:00")); // Fri/Mon testTimes.put(sdf.parse("14/12/31 10:00:00"), sdf.parse("15/01/29 09:30:00")); // Sat/Mon for (Entry<Date, Date> testTime : testTimes.entrySet()) { Date now = testTime.getKey(); Date scheduled = ScheduleMode.DAY_OF_MONTH.getNextRuntime(schedule, now); Date expectedResult = testTime.getValue(); assertTrue("expected " + expectedResult + " got " + scheduled, scheduled.equals(expectedResult)); } } @Test public void testEveryDay() throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yy/MM/dd HH:mm:ss"); Date scheduledTime = sdf.parse("14/05/29 09:30:00"); ReportEmailSchedule schedule = new EveryDaySchedule(scheduledTime); Map<Date, Date> testTimes = new HashMap<Date, Date>(); testTimes.put(sdf.parse("14/05/29 10:00:00"), sdf.parse("14/05/30 09:30:00")); testTimes.put(sdf.parse("14/05/30 10:00:00"), sdf.parse("14/05/31 09:30:00")); testTimes.put(sdf.parse("14/05/31 10:00:00"), sdf.parse("14/06/01 09:30:00")); testTimes.put(sdf.parse("14/06/01 10:00:00"), sdf.parse("14/06/02 09:30:00")); testTimes.put(sdf.parse("14/06/02 10:00:00"), sdf.parse("14/06/03 09:30:00")); testTimes.put(sdf.parse("14/06/03 10:00:00"), sdf.parse("14/06/04 09:30:00")); testTimes.put(sdf.parse("14/06/04 10:00:00"), sdf.parse("14/06/05 09:30:00")); for (Entry<Date, Date> testTime : testTimes.entrySet()) { Date now = testTime.getKey(); Date scheduled = ScheduleMode.EVERY_DAY.getNextRuntime(schedule, now); Date expectedResult = testTime.getValue(); assertTrue("expected " + expectedResult + " got " + scheduled, scheduled.equals(expectedResult)); } } }