package jfxtras.icalendarfx.parameter.rrule; import static org.junit.Assert.assertEquals; import java.time.DayOfWeek; import java.time.LocalDateTime; import java.time.Month; import java.time.ZoneId; import java.time.ZonedDateTime; 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; import jfxtras.icalendarfx.properties.component.recurrence.rrule.byxxx.ByMonth; import jfxtras.icalendarfx.properties.component.recurrence.rrule.byxxx.ByMonthDay; import jfxtras.icalendarfx.properties.component.recurrence.rrule.byxxx.ByWeekNumber; import jfxtras.icalendarfx.properties.component.recurrence.rrule.byxxx.ByDay.ByDayPair; public class RecurrenceRuleParseTest { /** tests parsing FREQ=YEARLY;INTERVAL=2;BYMONTH=1;BYDAY=SU */ @Test public void canParseRRule1() { String s = "FREQ=YEARLY;INTERVAL=2;BYMONTH=1;BYDAY=SU"; RecurrenceRuleValue rRule = RecurrenceRuleValue.parse(s); RecurrenceRuleValue expectedRRule = new RecurrenceRuleValue() .withFrequency(FrequencyType.YEARLY) .withInterval(2) .withByRules(new ByMonth(Month.JANUARY), new ByDay(DayOfWeek.SUNDAY)); assertEquals(s, expectedRRule.toString()); assertEquals(expectedRRule, rRule); } @Test public void canParseRRule2() { String s = "FREQ=MONTHLY;BYDAY=SA;BYMONTHDAY=7,8,9,10,11,12,13"; RecurrenceRuleValue rRule = RecurrenceRuleValue.parse(s); RecurrenceRuleValue expectedRRule = new RecurrenceRuleValue() .withFrequency(FrequencyType.MONTHLY) .withByRules(new ByDay(DayOfWeek.SATURDAY), new ByMonthDay(7,8,9,10,11,12,13)); assertEquals(s, expectedRRule.toString()); assertEquals(s, rRule.toString()); assertEquals(expectedRRule, rRule); } @Test public void canParseRRule3() { String s = "FREQ=YEARLY;BYWEEKNO=20;BYDAY=2MO,3MO"; RecurrenceRuleValue rRule = RecurrenceRuleValue.parse(s); RecurrenceRuleValue expectedRRule = new RecurrenceRuleValue() .withFrequency(FrequencyType.YEARLY) .withByRules(new ByWeekNumber(20), new ByDay(new ByDayPair(DayOfWeek.MONDAY, 2), new ByDayPair(DayOfWeek.MONDAY, 3))); assertEquals(expectedRRule, rRule); } @Test public void canParseRRule4() { String s = "UNTIL=20151201T100000Z;INTERVAL=2;FREQ=DAILY"; RecurrenceRuleValue rRule = RecurrenceRuleValue.parse(s); RecurrenceRuleValue expectedRRule = new RecurrenceRuleValue() .withUntil(ZonedDateTime.of(LocalDateTime.of(2015, 12, 1, 10, 0),ZoneId.of("Z"))) .withInterval(2) .withFrequency(FrequencyType.DAILY); assertEquals(expectedRRule, rRule); } }