/*
* © University of Bristol
*/
package org.ilrt.mca.harvester.events;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import org.ilrt.mca.harvester.events.EventItemImpl;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author Chris Bailey (c.bailey@bristol.ac.uk)
*/
public class EventItemImplTest {
private static String DATE_FORMAT_STRING = "yyyy-MM-dd'T'HH:mm:ss'Z'";
public EventItemImplTest() {
}
@BeforeClass
public static void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
}
@Test
public void testIsRecurring() throws ParseException {
EventItemImpl item = new EventItemImpl();
Date startdate = new SimpleDateFormat(DATE_FORMAT_STRING).parse("2009-09-28T08:00:00Z");
Date until = new SimpleDateFormat(DATE_FORMAT_STRING).parse("2009-12-11T08:00:00Z");
item.setId("2rds35n4nan737jahku8cgq3nc@google.com");
item.setLabel("ASSL: Opening times");
item.setDescription("Issue Desk Service:<P>\nMonday to Wednesday - 8.45am - 8.00pm<br>\n\nThursday - 9.45am-8.00pm<br>\n\nFriday - 8.45am - 6.00pm <br>\n\nSaturday - 8.45 am - 6.00pm <br>\n\nSunday - No Issue Desk services<br>\n");
item.setStartOfWeek("MO");
item.setUntil(until);
System.out.println(item.isRecurring());
assertFalse(item.isRecurring());
item.setFrequency("DAILY");
assertTrue(item.isRecurring());
}
@Test
public void testGetRecurringDates() throws ParseException {
EventItemImpl item = new EventItemImpl();
List<Date> recurringDates;
Date startdate = new SimpleDateFormat(DATE_FORMAT_STRING).parse("2009-09-28T08:00:00Z");
Date until = new SimpleDateFormat(DATE_FORMAT_STRING).parse("2009-12-11T08:00:00Z");
item.setId("2rds35n4nan737jahku8cgq3nc@google.com");
item.setLabel("ASSL: Opening times");
item.setDescription("Issue Desk Service:<P>\nMonday to Wednesday - 8.45am - 8.00pm<br>\n\nThursday - 9.45am-8.00pm<br>\n\nFriday - 8.45am - 6.00pm <br>\n\nSaturday - 8.45 am - 6.00pm <br>\n\nSunday - No Issue Desk services<br>\n");
item.setStartDate(startdate);
item.setStartOfWeek("MO");
item.setFrequency("DAILY");
item.setUntil(until);
assertTrue(item.isRecurring());
recurringDates = item.getRecurringDatesUntil(until);
assertEquals("Number of generated dates don't match",74,recurringDates.size());
// add a month restriction
item.setByMonth("1,4,11");
recurringDates = item.getRecurringDatesUntil(until);
assertEquals("Number of generated dates don't match",30,recurringDates.size());
item.setByMonth("12,9");
recurringDates = item.getRecurringDatesUntil(until);
assertEquals("Number of generated dates don't match",13,recurringDates.size());
item.setByMonth("11");
recurringDates = item.getRecurringDatesUntil(until);
assertEquals("Number of generated dates don't match",30,recurringDates.size());
item.setByMonth("");
recurringDates = item.getRecurringDatesUntil(until);
assertEquals("Number of generated dates don't match",74,recurringDates.size());
System.out.println("Running monthly test");
item.setFrequency("MONTHLY");
recurringDates = item.getRecurringDatesUntil(until);
assertEquals("Number of generated dates don't match",2,recurringDates.size());
startdate = new SimpleDateFormat(DATE_FORMAT_STRING).parse("2009-04-28T08:00:00Z");
until = new SimpleDateFormat(DATE_FORMAT_STRING).parse("2010-12-11T08:00:00Z");
item.setStartDate(startdate);
item.setUntil(until);
recurringDates = item.getRecurringDatesUntil(until);
assertEquals("Number of generated dates don't match",19,recurringDates.size());
item.setByMonth("11");
recurringDates = item.getRecurringDatesUntil(until);
assertEquals("Number of generated dates don't match",2,recurringDates.size());
System.out.println("Running count test");
item.setFrequency("MONTHLY");
item.setByMonth("");
item.setCount(10);
recurringDates = item.getRecurringDatesUntil(until);
assertEquals("Number of generated dates don't match",10,recurringDates.size());
item.setCount(25);
recurringDates = item.getRecurringDatesUntil(until);
assertEquals("Number of generated dates don't match",19,recurringDates.size());
item.setCount(15);
item.setByMonth("1,4,5,10");
recurringDates = item.getRecurringDatesUntil(until);
assertEquals("Number of generated dates don't match",6,recurringDates.size());
item.setCount(5);
recurringDates = item.getRecurringDatesUntil(until);
assertEquals("Number of generated dates don't match",5,recurringDates.size());
item.setStartDate(new SimpleDateFormat(DATE_FORMAT_STRING).parse("2010-04-02T08:00:00Z"));
item.setEndDate(new SimpleDateFormat(DATE_FORMAT_STRING).parse("2010-04-03T08:00:00Z"));
item.setUntil(new SimpleDateFormat(DATE_FORMAT_STRING).parse("2010-08-06T08:00:00Z"));
item.setCount(-1);
item.setFrequency("WEEKLY");
item.setByMonth("");
until = new SimpleDateFormat(DATE_FORMAT_STRING).parse("2009-12-11T13:51:11Z");
recurringDates = item.getRecurringDatesUntil(until);
assertEquals("Number of generated dates don't match",0,recurringDates.size());
until = new SimpleDateFormat(DATE_FORMAT_STRING).parse("2011-12-11T13:51:11Z");
recurringDates = item.getRecurringDatesUntil(until);
assertEquals("Number of generated dates don't match",18,recurringDates.size());
item.setByMonth("1,4,5,10");
recurringDates = item.getRecurringDatesUntil(until);
assertEquals("Number of generated dates don't match",8,recurringDates.size());
item.setByMonth("4,7,10");
recurringDates = item.getRecurringDatesUntil(until);
// for (Date d : recurringDates) System.out.println(d);
assertEquals("Number of generated dates don't match",9,recurringDates.size());
}
}