Skip to content

Commit 9a169be

Browse files
committed
Fixed an issue with "EssentialsWeek.GetEnumerator" not properly taking dayligt savings into account
1 parent 106e5f1 commit 9a169be

File tree

2 files changed

+48
-2
lines changed

2 files changed

+48
-2
lines changed

src/Skybrud.Essentials/Time/EssentialsWeek.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,9 +177,14 @@ public EssentialsWeek GetNextWeek() {
177177
/// </summary>
178178
/// <returns>An enumerator that can be used to iterate through the days of the week.</returns>
179179
public IEnumerator<EssentialsDate> GetEnumerator() {
180-
for (EssentialsTime day = Start; day < End; day = day.AddDays(1)) {
181-
yield return new EssentialsDate(day);
180+
181+
EssentialsDate start = new EssentialsDate(Start);
182+
EssentialsDate end = new EssentialsDate(End);
183+
184+
for (EssentialsDate day = start; day <= end; day = day.AddDays(1)) {
185+
yield return day;
182186
}
187+
183188
}
184189

185190
IEnumerator IEnumerable.GetEnumerator() {

src/UnitTestProject1/Time/Time/EssentialsWeekTests.cs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
using System;
2+
using System.Linq;
3+
using System.Text;
24
using Microsoft.VisualStudio.TestTools.UnitTesting;
35
using Skybrud.Essentials.Time;
46

@@ -198,6 +200,45 @@ public void GetNextWeek() {
198200

199201
}
200202

203+
[TestMethod]
204+
public void GetEnumerator() {
205+
206+
TimeZoneInfo romance = TimeZoneInfo.FindSystemTimeZoneById("Romance Standard Time");
207+
208+
var date = new EssentialsDate(2019, 10, 24);
209+
210+
EssentialsWeek week = new EssentialsWeek(date, romance);
211+
212+
Assert.AreEqual("2019-10-21T00:00:00+02:00", week.Start.ToString(), "Start");
213+
Assert.AreEqual("2019-10-27T23:59:59+01:00", week.End.ToString(), "End");
214+
215+
EssentialsDate[] days = week.ToArray();
216+
217+
Assert.AreEqual(7, days.Length);
218+
219+
Assert.AreEqual(DayOfWeek.Monday, days[0].DayOfWeek);
220+
Assert.AreEqual("2019-10-21", days[0].ToString());
221+
222+
Assert.AreEqual(DayOfWeek.Tuesday, days[1].DayOfWeek);
223+
Assert.AreEqual("2019-10-22", days[1].ToString());
224+
225+
Assert.AreEqual(DayOfWeek.Wednesday, days[2].DayOfWeek);
226+
Assert.AreEqual("2019-10-23", days[2].ToString());
227+
228+
Assert.AreEqual(DayOfWeek.Thursday, days[3].DayOfWeek);
229+
Assert.AreEqual("2019-10-24", days[3].ToString());
230+
231+
Assert.AreEqual(DayOfWeek.Friday, days[4].DayOfWeek);
232+
Assert.AreEqual("2019-10-25", days[4].ToString());
233+
234+
Assert.AreEqual(DayOfWeek.Saturday, days[5].DayOfWeek);
235+
Assert.AreEqual("2019-10-26", days[5].ToString());
236+
237+
Assert.AreEqual(DayOfWeek.Sunday, days[6].DayOfWeek);
238+
Assert.AreEqual("2019-10-27", days[6].ToString());
239+
240+
}
241+
201242
}
202243

203244
}

0 commit comments

Comments
 (0)