Open sherlynwong opened 2 years ago
[Test] public void SkippedOccurrenceOnWeeklyPattern() { const int evaluationsCount = 1; var eventStart = new CalDateTime(new DateTime(2021, 11, 15, 0, 0, 0, DateTimeKind.Local)); //monday var eventEnd = new CalDateTime(new DateTime(2021, 11, 21 , 0, 0, 0, DateTimeKind.Local));//sunday var vEvent = new CalendarEvent { DtStart = eventStart, DtEnd = eventEnd, Duration = new TimeSpan(0,1,0,0) }; var pattern = new RecurrencePattern { Frequency = FrequencyType.Weekly, ByDay = new List<WeekDay> { new WeekDay(DayOfWeek.Monday) }, ByHour = new List<int>() { 2 } }; vEvent.RecurrenceRules.Add(pattern); var calendar = new Calendar(); calendar.Events.Add(vEvent); var intervalStart = eventStart; var intervalEnd = intervalStart.AddDays(7 * evaluationsCount); var occurrences = RecurrenceUtil.GetOccurrences( recurrable: vEvent, periodStart: intervalStart, periodEnd: intervalEnd, includeReferenceDateInResults: false); var occurrenceSet = new HashSet<IDateTime>(occurrences.Select(o => o.Period.StartTime)); Assert.AreEqual(evaluationsCount, occurrenceSet.Count); var observed = occurrenceSet.FirstOrDefault().AsDateTimeOffset; var expected = new CalDateTime(2021, 11, 15, 2, 0, 0).AsDateTimeOffset; var isEquals = observed.Equals(expected); Assert.IsTrue(isEquals, $"Expected {expected.ToString("s")}, but Observed {observed.ToString("s")}"); }
Attached with the unit test.
Expected 2021-11-15T02:00:00, but Observed 2021-11-15T00:00:00
Suspect the issue caused by this method
ical.net-master\src\Ical.Net\Evaluation\RecurrencePatternEvaluator.cs method HashSet Evaluate(IDateTime referenceDate, DateTime periodStart, DateTime periodEnd, bool includeReferenceDateInResults)
The TIME of expected occurrence somehow goes missing
Attached with the unit test.
Suspect the issue caused by this method
The TIME of expected occurrence somehow goes missing