eb195f66

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

ical-recurrence: test that a yearly BySetPos selects within the whole year

BYSETPOS is evaluated against the candidate set of the entire frequency
period.  Only afterwards are the selected instances restricted to those
at or after DTSTART.

yearlyDateTimeRecurrence has the 'next > start' guard inside the list
that filterSetPos numbers, so instances before DTSTART are dropped
before BYSETPOS is applied and later candidates slide into their
positions.  monthlyDateTimeRecurrence and weeklyDateTimeRecurrence
apply that same guard after filterSetPos; yearly is the odd one out.

For 2020 the candidate set is the 15th of January, April, July and
October, so BYSETPOS=1 selects the 15th of January, which is before
DTSTART and therefore not part of the recurrence set.  The 15th of July
must not take its place.

Suite timing

Time to Start Worker time Duration Time to finish Idle
Config 1m55s 1s 1s 1m56s 1m55s
Eval 2m18s 17s 17s 2m35s 22s
Build 2m34s 2m39s - - 8m34s
Suite 1m55s 2m57s - - 36m34s

Timeline

0s2m20s2m30s10m50s11m11m10s11m20s11m30s