c2e0b9db

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

ical-recurrence: keep one instance per start in the recurrence set

@
Where duplicate instances are generated by the "RRULE"
and "RDATE" properties, only one recurrence is considered.
Duplicate instances are ignored.
@

@
The
duration of a specific recurrence may be modified in an exception
component or simply by using an "RDATE" property of PERIOD value
type.
@

Unioning sets of EventOccurrence deduplicates on the start and the end
together, so one instance survived twice whenever the same start arrived
with two different ends.  Key on the start alone instead.

The quote above settles which one wins.  A period-valued RDATE is how the
duration of a single instance is changed, so it is meant to collide with
the instance the rule generates, and it is the one that carries the
intended duration.  DTSTART beats the rule too, because its end is stated
outright while the rule's is derived from it.

This also updates zoned-recurring.occ, which recorded the bug: it listed
four instances for a COUNT=3 rule, the first two being the same instance
with its end written once in each of the event's two time zones.  Its
sibling zoned-recurring.res already listed three, because resolving the
two ends to the same instant collapsed them, so the two golden files for
that calendar disagreed about how many instances it has.