e7b53224

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 1s 4s 4s 6s 1s
Eval 47s 12s 12s 1m00s 41s
Build 59s 1m54s - - 5m59s
Suite 1s 2m12s - - 19m55s

Timeline

0s50s1m6m30s6m40s6m50s7m7m10s7m20s