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.
| Time to Start | Worker time | Duration | Time to finish | Idle | |
| Config | 19s | 1s | 1s | 21s | 19s |
| Eval | 4m07s | 11s | 11s | 4m19s | 3m45s |
| Build | 1h42m02s | 2m13s | - | - | 1h38m20s |
| Suite | 19s | 2m26s | - | - | 2h39m09s |