Skip to content

Commit a3c4f1e

Browse files
committed
Add Wiki sample: Get first occurences of all events in a Calendar
Resolves #855
1 parent 2c4b3c3 commit a3c4f1e

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

Ical.Net.Tests/WikiSamples/RecurrenceWikiTests.cs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)