package jfxtras.icalendarfx.parameter.rrule;
import static org.junit.Assert.assertEquals;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.time.temporal.Temporal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.junit.Test;
import jfxtras.icalendarfx.properties.component.recurrence.rrule.byxxx.BySetPosition;
public class BySetPositionTest
{
@Test
public void canParseSetPosition()
{
BySetPosition element = new BySetPosition(-2,5);
assertEquals(Arrays.asList(-2,5), element.getValue());
assertEquals("BYSETPOS=-2,5", element.toString());
}
@Test
public void canStreamSetPosition()
{
LocalDateTime dateTimeStart = LocalDateTime.of(2016, 1, 4, 0, 0);
ChronoUnit frequency = ChronoUnit.MONTHS;
List<Temporal> list = Arrays.asList(
LocalDateTime.of(2016, 1, 4, 0, 0),
LocalDateTime.of(2016, 1, 5, 0, 0),
LocalDateTime.of(2016, 1, 6, 0, 0)
);
BySetPosition element = new BySetPosition(2);
Stream<Temporal> recurrenceStream = element.streamRecurrences(list.stream(), frequency, dateTimeStart);
List<LocalDateTime> expectedRecurrences = new ArrayList<>(Arrays.asList(
LocalDateTime.of(2016, 1, 5, 0, 0)
));
List<Temporal> madeRecurrences = recurrenceStream.limit(8).collect(Collectors.toList());
assertEquals(expectedRecurrences, madeRecurrences);
}
@Test
public void canStreamSetPosition2()
{
LocalDateTime dateTimeStart = LocalDateTime.of(2016, 1, 4, 0, 0);
ChronoUnit frequency = ChronoUnit.MONTHS;
List<Temporal> list = Arrays.asList(
LocalDateTime.of(2016, 1, 4, 0, 0),
LocalDateTime.of(2016, 1, 5, 0, 0),
LocalDateTime.of(2016, 1, 6, 0, 0)
);
BySetPosition element = new BySetPosition(-1);
Stream<Temporal> recurrenceStream = element.streamRecurrences(list.stream(), frequency, dateTimeStart);
List<LocalDateTime> expectedRecurrences = new ArrayList<>(Arrays.asList(
LocalDateTime.of(2016, 1, 6, 0, 0)
));
List<Temporal> madeRecurrences = recurrenceStream.limit(8).collect(Collectors.toList());
assertEquals(expectedRecurrences, madeRecurrences);
}
}