package jfxtras.icalendarfx.parameter.rrule;
import static org.junit.Assert.assertEquals;
import java.time.DayOfWeek;
import java.util.Arrays;
import java.util.List;
import org.junit.Test;
import jfxtras.icalendarfx.properties.component.recurrence.rrule.FrequencyType;
import jfxtras.icalendarfx.properties.component.recurrence.rrule.RecurrenceRuleValue;
import jfxtras.icalendarfx.properties.component.recurrence.rrule.byxxx.ByDay;
public class RRuleErrorTest
{
@Test
public void canDetectIntervalError()
{
RecurrenceRuleValue rrule = new RecurrenceRuleValue()
.withFrequency(FrequencyType.YEARLY)
.withInterval(0); // invalid
assertEquals(1, rrule.errors().size());
}
@Test
public void canDetectMissingFrequency()
{
RecurrenceRuleValue rrule = new RecurrenceRuleValue();
assertEquals(1, rrule.errors().size());
}
@Test
public void canDetectCountAndUntilFrequency()
{
RecurrenceRuleValue rrule = new RecurrenceRuleValue()
.withFrequency(FrequencyType.YEARLY)
.withCount(10)
.withUntil("19970610T172345Z"); // invalid
assertEquals(1, rrule.errors().size());
}
@Test (expected = IllegalArgumentException.class)
public void canDetectDuplicateByRule()
{
RecurrenceRuleValue.parse("FREQ=WEEKLY;BYDAY=TU;BYDAY=TU");
}
@Test (expected = IllegalArgumentException.class)
public void canDetectDuplicateByRule2()
{
RecurrenceRuleValue.parse("FREQ=WEEKLY;BYDAY=TU;BYDAY=FR");
}
@Test
public void canDetectDuplicateByRule3()
{
RecurrenceRuleValue rrule = RecurrenceRuleValue.parse("FREQ=WEEKLY;BYMONTH=1;BYDAY=TU");
rrule.getByRules().add(new ByDay(DayOfWeek.FRIDAY));
List<String> expectedErrors = Arrays.asList("RRULE:ByDay can only occur once in a RRULE.");
assertEquals(expectedErrors, rrule.errors());
}
}