aef0dee6

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 2m51s 0s 0s 2m52s 2m51s
Eval 2m54s 13s 13s 3m08s 1s
Build 3m07s 7m58s 5m48s 8m56s 12s
Suite 2m51s 8m12s 6m04s 8m56s 3m05s

Timeline

0s3m4m5m6m7m8m