@@ -593,6 +593,58 @@ public void RecurrenceWithTimeZoneChanges()
593593 _logger . LogDebug ( expectedOccurrences ) ;
594594 }
595595
596+ [ Test ]
597+ public void GetFirstOccurrenceOfAllCalendarEvents ( )
598+ {
599+ // Wiki code start
600+
601+ var calendar = new Calendar ( ) ;
602+ var start = new CalDateTime ( 2025 , 9 , 1 , 10 , 0 , 0 ) ;
603+
604+ // Event that recurs daily
605+ calendar . Events . Add ( new CalendarEvent
606+ {
607+ Summary = "Daily event" ,
608+ Start = start ,
609+ End = start . AddHours ( 1 ) ,
610+ RecurrenceRules = [ new RecurrencePattern ( FrequencyType . Daily , interval : 1 ) ]
611+ } ) ;
612+
613+ // Simple event in far future
614+ calendar . Events . Add ( new CalendarEvent
615+ {
616+ Summary = "Far future event" ,
617+ Start = start . AddYears ( 10 ) ,
618+ End = start . AddYears ( 10 ) . AddHours ( 1 )
619+ } ) ;
620+
621+ var occurrences =
622+ calendar . Events
623+ . SelectMany ( ev => ev . GetOccurrences ( ) . Take ( 1 ) )
624+ . ToArray ( ) ;
625+
626+ // Wiki code end
627+
628+ // Occurrences
629+ const string expectedOccurrences =
630+ """
631+ 2 occurrences:
632+ Start: 09/01/2025 10:00:00 +02:00
633+ Period: PT1H
634+ End: 09/01/2025 11:00:00 +02:00
635+ Start: 09/01/2035 10:00:00 +02:00
636+ Period: PT1H
637+ End: 09/01/2035 11:00:00 +02:00
638+ """ ;
639+
640+ // Non-Wiki Asserts
641+
642+ var generatedOccurrences = ToWikiPeriodString ( occurrences ) ;
643+ Assert . That ( generatedOccurrences , Is . EqualTo ( expectedOccurrences ) ) ;
644+
645+ _logger . LogDebug ( expectedOccurrences ) ;
646+ }
647+
596648 [ Test ]
597649 public void MoreRecurrenceRuleExamples ( )
598650 {
0 commit comments