a6a55477

ical-recurrence: test that Count takes the chronologically first yearly instances

The BYWEEKNO branch of yearlyDayCandidate iterates over the days of the
week in Monday-to-Sunday order regardless of the week start, so with
WKST=SU it emits Sunday last while Sunday is chronologically first.

recurUntil and recurCount both assume the list of occurrences ascends.
recurCount then takes the wrong instances, and recurUntil is worse: it
returns the empty set at the first element past UNTIL, so one
out-of-order day truncates everything after it.  The same ordering also
mis-numbers BYSETPOS in that branch.

monthlyDateTimeRecurrence and weeklyDateTimeRecurrence sort their
candidates before use; yearlyDateTimeRecurrence does not.

With a week start of Sunday, week 1 of 2021 starts on Sunday the 3rd of
January and week 1 of 2022 on Sunday the 2nd, so counting from the
Sunday of week 1 of 2021 the next two instances are the Monday after it
and the Sunday of week 1 of 2022.

Suite timing

Time to Start Worker time Duration Time to finish Idle
Config 2s 2s 2s 4s 2s
Eval 4s 11s 11s 16s 0s
Build 16s 6m19s 9m04s 9m20s 7m09s
Suite 2s 6m33s 9m17s 9m20s 7m11s

Timeline

0s10s7m30s7m40s7m50s8m8m10s8m20s8m30s8m40s8m50s9m9m10s9m20s