public void DoesNotGoPastDurationEnd() { // arrange var schedule = new WeeklySchedule { //Every 1 Week Frequency = 1, Days = new WeeklyScheduleDay[] { new WeeklyScheduleDay { // On Tuesdays Day = DayOfWeek.Tuesday, Time = new TimeRange { // From 1:30PM to 2:30 PM Start = new Time{ Hour = 13, Minute = 30}, End = new Time{ Hour = 14, Minute = 30} } } }, Duration = new DateRange { // Starting January 1 and ending January 14 Start = new DateTime(2013, 1, 1), End = new DateTime(2013, 1, 14) }, }; // act var results = schedule.BuildSchedule(); // assert Assert.NotNull(results); Assert.AreEqual(2, results.Count()); Assert.AreEqual(new DateTime(2013, 1, 1, 13, 30, 0), results.ElementAt(0).AsDateRange().Start); Assert.AreEqual(new DateTime(2013, 1, 8, 13, 30, 0), results.ElementAt(1).AsDateRange().Start); }
public void EveryThreeWeeksFor60DaysOnMondaysAndWednesdays() { // arrange var schedule = new WeeklySchedule { // Every 3 Weeks Frequency = 3, Days = new WeeklyScheduleDay[] { new WeeklyScheduleDay { // On Mondays Day = DayOfWeek.Monday, Time = new TimeRange { // From 1:30PM to 2:30 PM Start = new Time{ Hour = 13, Minute = 30}, End = new Time{ Hour = 14, Minute = 30} } }, new WeeklyScheduleDay { // and on Wednesdays Day = DayOfWeek.Wednesday, Time = new TimeRange { // From 4:30PM to 5:30 PM Start = new Time{ Hour = 16, Minute = 30}, End = new Time{ Hour = 17, Minute = 30} } } }, Duration = new DateRange { // Starting January 1 and ending March 1 Start = new DateTime(2013, 1, 1), End = new DateTime(2013, 3, 1) }, }; // act var results = schedule.BuildSchedule(); // assert Assert.NotNull(results); Assert.AreEqual(5, results.Count()); Assert.AreEqual(new DateTime(2013, 1, 2, 16, 30, 0), results.ElementAt(0).AsDateRange().Start, "First entry should be for Wednesday, January 2 at 4:30PM"); Assert.AreEqual(new DateTime(2013, 1, 2, 17, 30, 0), results.ElementAt(0).AsDateRange().End); Assert.AreEqual(new DateTime(2013, 1, 21, 13, 30, 0), results.ElementAt(1).AsDateRange().Start, "Second entry should be for Monday, January 21 at 1:30PM"); Assert.AreEqual(new DateTime(2013, 1, 21, 14, 30, 0), results.ElementAt(1).AsDateRange().End); Assert.AreEqual(new DateTime(2013, 1, 23, 16, 30, 0), results.ElementAt(2).AsDateRange().Start, "Third entry should be for Wednesday, Januar 23 at 4:30PM"); Assert.AreEqual(new DateTime(2013, 1, 23, 17, 30, 0), results.ElementAt(2).AsDateRange().End); Assert.AreEqual(new DateTime(2013, 2, 11, 13, 30, 0), results.ElementAt(3).AsDateRange().Start, "Fouth entry should be for Monday, Feb 11 at 1:30PM"); Assert.AreEqual(new DateTime(2013, 2, 11, 14, 30, 0), results.ElementAt(3).AsDateRange().End); Assert.AreEqual(new DateTime(2013, 2, 13, 16, 30, 0), results.ElementAt(4).AsDateRange().Start, "Fifth entry should be for Wednesday, Feb 13 at 4:30PM"); Assert.AreEqual(new DateTime(2013, 2, 13, 17, 30, 0), results.ElementAt(4).AsDateRange().End); }