1dd199fa

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 38s 0s 0s 39s 38s
Eval 2m57s 9s 9s 3m07s 2m18s
Build 1h55m10s 1m10s - - 1h52m22s
Suite 38s 1m21s - - 2h37m14s

Timeline

0s3m1h55m1h55m1h55m1h55m