package com.intrbiz.bergamot.scheduler.timeperiod;
import static org.junit.Assert.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.junit.Test;
import com.intrbiz.bergamot.model.timeperiod.DayOfWeekQualifier;
import com.intrbiz.bergamot.model.timeperiod.HourRange;
import com.intrbiz.bergamot.model.timeperiod.util.DayOfWeek;
public class TestTimeRanges
{
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("EEEE dd/MM/yyyy HH:mm:ss");
private static final Calendar setupCalendar(String date)
{
Date d;
try
{
d = dateFormat.parse(date);
Calendar cal = Calendar.getInstance();
cal.setTime(d);
return cal;
}
catch (ParseException e)
{
throw new IllegalArgumentException(e);
}
}
// some dates to test with
private Calendar monday_21_04_2014_at_00_00_00 = setupCalendar("Monday 21/04/2014 00:00:00");
private Calendar monday_21_04_2014_at_01_00_00 = setupCalendar("Monday 21/04/2014 01:00:00");
private Calendar monday_21_04_2014_at_02_00_00 = setupCalendar("Monday 21/04/2014 02:00:00");
private Calendar monday_21_04_2014_at_03_00_00 = setupCalendar("Monday 21/04/2014 03:00:00");
private Calendar monday_21_04_2014_at_04_00_00 = setupCalendar("Monday 21/04/2014 04:00:00");
private Calendar monday_21_04_2014_at_05_00_00 = setupCalendar("Monday 21/04/2014 05:00:00");
private Calendar monday_21_04_2014_at_06_00_00 = setupCalendar("Monday 21/04/2014 06:00:00");
private Calendar monday_21_04_2014_at_07_00_00 = setupCalendar("Monday 21/04/2014 07:00:00");
private Calendar monday_21_04_2014_at_08_00_00 = setupCalendar("Monday 21/04/2014 08:00:00");
private Calendar monday_21_04_2014_at_09_00_00 = setupCalendar("Monday 21/04/2014 09:00:00");
private Calendar monday_21_04_2014_at_10_00_00 = setupCalendar("Monday 21/04/2014 10:00:00");
private Calendar monday_21_04_2014_at_11_00_00 = setupCalendar("Monday 21/04/2014 11:00:00");
private Calendar monday_21_04_2014_at_12_00_00 = setupCalendar("Monday 21/04/2014 12:00:00");
private Calendar monday_21_04_2014_at_13_00_00 = setupCalendar("Monday 21/04/2014 13:00:00");
private Calendar monday_21_04_2014_at_14_00_00 = setupCalendar("Monday 21/04/2014 14:00:00");
private Calendar monday_21_04_2014_at_15_00_00 = setupCalendar("Monday 21/04/2014 15:00:00");
private Calendar monday_21_04_2014_at_16_00_00 = setupCalendar("Monday 21/04/2014 16:00:00");
private Calendar monday_21_04_2014_at_17_00_00 = setupCalendar("Monday 21/04/2014 17:00:00");
private Calendar monday_21_04_2014_at_18_00_00 = setupCalendar("Monday 21/04/2014 18:00:00");
private Calendar monday_21_04_2014_at_19_00_00 = setupCalendar("Monday 21/04/2014 19:00:00");
private Calendar monday_21_04_2014_at_20_00_00 = setupCalendar("Monday 21/04/2014 20:00:00");
private Calendar monday_21_04_2014_at_21_00_00 = setupCalendar("Monday 21/04/2014 21:00:00");
private Calendar monday_21_04_2014_at_22_00_00 = setupCalendar("Monday 21/04/2014 22:00:00");
private Calendar monday_21_04_2014_at_23_00_00 = setupCalendar("Monday 21/04/2014 23:00:00");
@Test
public void test24HourRange()
{
HourRange range = new HourRange(0,0,24,00);
assertTrue("Monday 21/04/2014 at 00:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_00_00_00));
assertTrue("Monday 21/04/2014 at 01:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_01_00_00));
assertTrue("Monday 21/04/2014 at 02:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_02_00_00));
assertTrue("Monday 21/04/2014 at 03:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_03_00_00));
assertTrue("Monday 21/04/2014 at 04:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_04_00_00));
assertTrue("Monday 21/04/2014 at 05:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_05_00_00));
assertTrue("Monday 21/04/2014 at 06:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_06_00_00));
assertTrue("Monday 21/04/2014 at 07:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_07_00_00));
assertTrue("Monday 21/04/2014 at 08:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_08_00_00));
assertTrue("Monday 21/04/2014 at 09:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_09_00_00));
assertTrue("Monday 21/04/2014 at 10:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_10_00_00));
assertTrue("Monday 21/04/2014 at 11:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_11_00_00));
assertTrue("Monday 21/04/2014 at 12:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_12_00_00));
assertTrue("Monday 21/04/2014 at 13:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_13_00_00));
assertTrue("Monday 21/04/2014 at 14:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_14_00_00));
assertTrue("Monday 21/04/2014 at 15:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_15_00_00));
assertTrue("Monday 21/04/2014 at 16:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_16_00_00));
assertTrue("Monday 21/04/2014 at 17:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_17_00_00));
assertTrue("Monday 21/04/2014 at 18:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_18_00_00));
assertTrue("Monday 21/04/2014 at 19:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_19_00_00));
assertTrue("Monday 21/04/2014 at 20:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_20_00_00));
assertTrue("Monday 21/04/2014 at 21:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_21_00_00));
assertTrue("Monday 21/04/2014 at 22:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_22_00_00));
assertTrue("Monday 21/04/2014 at 23:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_23_00_00));
}
@Test
public void test00_04HourRange()
{
HourRange range = new HourRange(0,0,4,0);
assertTrue("Monday 21/04/2014 at 00:00:00 is in 00:00-04:00", range.isInTimeRange(this.monday_21_04_2014_at_00_00_00));
assertTrue("Monday 21/04/2014 at 01:00:00 is in 00:00-04:00", range.isInTimeRange(this.monday_21_04_2014_at_01_00_00));
assertTrue("Monday 21/04/2014 at 02:00:00 is in 00:00-04:00", range.isInTimeRange(this.monday_21_04_2014_at_02_00_00));
assertTrue("Monday 21/04/2014 at 03:00:00 is in 00:00-04:00", range.isInTimeRange(this.monday_21_04_2014_at_03_00_00));
assertFalse("Monday 21/04/2014 at 04:00:00 is not in 00:00-04:00", range.isInTimeRange(this.monday_21_04_2014_at_04_00_00));
assertFalse("Monday 21/04/2014 at 05:00:00 is not in 00:00-04:00", range.isInTimeRange(this.monday_21_04_2014_at_05_00_00));
assertFalse("Monday 21/04/2014 at 06:00:00 is not in 00:00-04:00", range.isInTimeRange(this.monday_21_04_2014_at_06_00_00));
assertFalse("Monday 21/04/2014 at 07:00:00 is not in 00:00-04:00", range.isInTimeRange(this.monday_21_04_2014_at_07_00_00));
assertFalse("Monday 21/04/2014 at 08:00:00 is not in 00:00-04:00", range.isInTimeRange(this.monday_21_04_2014_at_08_00_00));
assertFalse("Monday 21/04/2014 at 09:00:00 is not in 00:00-04:00", range.isInTimeRange(this.monday_21_04_2014_at_09_00_00));
assertFalse("Monday 21/04/2014 at 10:00:00 is not in 00:00-04:00", range.isInTimeRange(this.monday_21_04_2014_at_10_00_00));
assertFalse("Monday 21/04/2014 at 11:00:00 is not in 00:00-04:00", range.isInTimeRange(this.monday_21_04_2014_at_11_00_00));
assertFalse("Monday 21/04/2014 at 12:00:00 is not in 00:00-04:00", range.isInTimeRange(this.monday_21_04_2014_at_12_00_00));
assertFalse("Monday 21/04/2014 at 13:00:00 is not in 00:00-04:00", range.isInTimeRange(this.monday_21_04_2014_at_13_00_00));
assertFalse("Monday 21/04/2014 at 14:00:00 is not in 00:00-04:00", range.isInTimeRange(this.monday_21_04_2014_at_14_00_00));
assertFalse("Monday 21/04/2014 at 15:00:00 is not in 00:00-04:00", range.isInTimeRange(this.monday_21_04_2014_at_15_00_00));
assertFalse("Monday 21/04/2014 at 16:00:00 is not in 00:00-04:00", range.isInTimeRange(this.monday_21_04_2014_at_16_00_00));
assertFalse("Monday 21/04/2014 at 17:00:00 is not in 00:00-04:00", range.isInTimeRange(this.monday_21_04_2014_at_17_00_00));
assertFalse("Monday 21/04/2014 at 18:00:00 is not in 00:00-04:00", range.isInTimeRange(this.monday_21_04_2014_at_18_00_00));
assertFalse("Monday 21/04/2014 at 19:00:00 is not in 00:00-04:00", range.isInTimeRange(this.monday_21_04_2014_at_19_00_00));
assertFalse("Monday 21/04/2014 at 20:00:00 is not in 00:00-04:00", range.isInTimeRange(this.monday_21_04_2014_at_20_00_00));
assertFalse("Monday 21/04/2014 at 21:00:00 is not in 00:00-04:00", range.isInTimeRange(this.monday_21_04_2014_at_21_00_00));
assertFalse("Monday 21/04/2014 at 22:00:00 is not in 00:00-04:00", range.isInTimeRange(this.monday_21_04_2014_at_22_00_00));
assertFalse("Monday 21/04/2014 at 23:00:00 is not in 00:00-04:00", range.isInTimeRange(this.monday_21_04_2014_at_23_00_00));
}
@Test
public void testMonday24x7()
{
DayOfWeekQualifier range = new DayOfWeekQualifier(DayOfWeek.MONDAY, new HourRange(0, 0, 24, 00));
assertTrue("Monday 21/04/2014 at 00:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_00_00_00));
assertTrue("Monday 21/04/2014 at 01:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_01_00_00));
assertTrue("Monday 21/04/2014 at 02:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_02_00_00));
assertTrue("Monday 21/04/2014 at 03:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_03_00_00));
assertTrue("Monday 21/04/2014 at 04:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_04_00_00));
assertTrue("Monday 21/04/2014 at 05:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_05_00_00));
assertTrue("Monday 21/04/2014 at 06:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_06_00_00));
assertTrue("Monday 21/04/2014 at 07:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_07_00_00));
assertTrue("Monday 21/04/2014 at 08:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_08_00_00));
assertTrue("Monday 21/04/2014 at 09:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_09_00_00));
assertTrue("Monday 21/04/2014 at 10:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_10_00_00));
assertTrue("Monday 21/04/2014 at 11:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_11_00_00));
assertTrue("Monday 21/04/2014 at 12:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_12_00_00));
assertTrue("Monday 21/04/2014 at 13:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_13_00_00));
assertTrue("Monday 21/04/2014 at 14:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_14_00_00));
assertTrue("Monday 21/04/2014 at 15:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_15_00_00));
assertTrue("Monday 21/04/2014 at 16:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_16_00_00));
assertTrue("Monday 21/04/2014 at 17:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_17_00_00));
assertTrue("Monday 21/04/2014 at 18:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_18_00_00));
assertTrue("Monday 21/04/2014 at 19:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_19_00_00));
assertTrue("Monday 21/04/2014 at 20:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_20_00_00));
assertTrue("Monday 21/04/2014 at 21:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_21_00_00));
assertTrue("Monday 21/04/2014 at 22:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_22_00_00));
assertTrue("Monday 21/04/2014 at 23:00:00 is in 00:00-23:59", range.isInTimeRange(this.monday_21_04_2014_at_23_00_00));
}
}