public void TestTrailingOverride() { List <RouteScheduleOverride> routeScheduleOverrides; var schedule = InitialSchedule(8, 12, 9, 12, out routeScheduleOverrides); // Override starts later, Both end at same time, leaving first part of original schedule var realSchedules = BuildScheduleView.ModifyRouteScheduleForOverlap(schedule, routeScheduleOverrides); Assert.AreEqual(1, realSchedules.Count); Assert.AreEqual(schedule.StartTime, realSchedules[0].StartTime); Assert.AreEqual(ScheduleTime(9, 0, 0), realSchedules[0].EndTime); routeScheduleOverrides[0].EndTime = ScheduleTime(13, 0, 0); // Override ends past fixed schedule leaving the first part of original schedule realSchedules = BuildScheduleView.ModifyRouteScheduleForOverlap(schedule, routeScheduleOverrides); Assert.AreEqual(1, realSchedules.Count); Assert.AreEqual(schedule.StartTime, realSchedules[0].StartTime); Assert.AreEqual(ScheduleTime(9, 0, 0), realSchedules[0].EndTime); routeScheduleOverrides[0].EndTime = ScheduleTime(10, 0, 0); // Override ends in middle of original schedule, leaving first and last segment realSchedules = BuildScheduleView.ModifyRouteScheduleForOverlap(schedule, routeScheduleOverrides); Assert.AreEqual(2, realSchedules.Count); Assert.AreEqual(schedule.StartTime, realSchedules[0].StartTime); Assert.AreEqual(ScheduleTime(9, 0, 0), realSchedules[0].EndTime); Assert.AreEqual(ScheduleTime(10, 0, 0), realSchedules[1].StartTime); Assert.AreEqual(schedule.EndTime, realSchedules[1].EndTime); }
public void TestMultipleOverride() { List <RouteScheduleOverride> routeScheduleOverrides; var schedule = InitialSchedule(6, 23, 9, 12, out routeScheduleOverrides); // Override starts later, Both end at same time, leaving first part of original schedule // Create second override var scheduleOverride = new RouteScheduleOverride(); scheduleOverride.OverrideType = RouteScheduleOverride.OverrideRule.NoService; // Result will be same for either NoService or Replace scheduleOverride.StartTime = ScheduleTime(15, 0, 0); scheduleOverride.EndTime = ScheduleTime(16, 0, 0); routeScheduleOverrides.Add(scheduleOverride); var realSchedules = BuildScheduleView.ModifyRouteScheduleForOverlap(schedule, routeScheduleOverrides); Assert.AreEqual(3, realSchedules.Count); // Leaves segments 6:00-9:00, 12:00-15:00, 16:00-23:00 Assert.AreEqual(schedule.StartTime, realSchedules[0].StartTime); Assert.AreEqual(ScheduleTime(9, 0, 0), realSchedules[0].EndTime); Assert.AreEqual(ScheduleTime(12, 0, 0), realSchedules[1].StartTime); Assert.AreEqual(ScheduleTime(15, 0, 0), realSchedules[1].EndTime); Assert.AreEqual(ScheduleTime(16, 0, 0), realSchedules[2].StartTime); Assert.AreEqual(ScheduleTime(23, 0, 0), realSchedules[2].EndTime); }
public void TestCoincidentOverride() { List <RouteScheduleOverride> routeScheduleOverrides; var schedule = InitialSchedule(6, 10, 6, 10, out routeScheduleOverrides); var realSchedules = BuildScheduleView.ModifyRouteScheduleForOverlap(schedule, routeScheduleOverrides); Assert.AreEqual(0, realSchedules.Count); // Original schedule completely removed }
public void TestRegularSchedule() { List <RouteScheduleOverride> routeScheduleOverrides; var schedule = InitialSchedule(6, 10, 12, 14, out routeScheduleOverrides); // Non-overlapping times (No effect on fixed schedule) var realSchedules = BuildScheduleView.ModifyRouteScheduleForOverlap(schedule, routeScheduleOverrides); Assert.AreEqual(1, realSchedules.Count); Assert.AreEqual(realSchedules[0].StartTime, schedule.StartTime); Assert.AreEqual(realSchedules[0].EndTime, schedule.EndTime); }
public void TestLeadingOverride() { List <RouteScheduleOverride> routeScheduleOverrides; var schedule = InitialSchedule(8, 10, 6, 10, out routeScheduleOverrides); // Override starts early, Both end at same time var realSchedules = BuildScheduleView.ModifyRouteScheduleForOverlap(schedule, routeScheduleOverrides); Assert.AreEqual(0, realSchedules.Count); // Original schedule completely removed routeScheduleOverrides[0].EndTime = ScheduleTime(9, 0, 0); // Override ends early, leaving 1 hour of original schedule realSchedules = BuildScheduleView.ModifyRouteScheduleForOverlap(schedule, routeScheduleOverrides); Assert.AreEqual(1, realSchedules.Count); Assert.AreEqual(ScheduleTime(9, 0, 0), realSchedules[0].StartTime); Assert.AreEqual(schedule.EndTime, realSchedules[0].EndTime); routeScheduleOverrides[0].EndTime = ScheduleTime(12, 0, 0); // Override ends past original schedule, cancelling it all realSchedules = BuildScheduleView.ModifyRouteScheduleForOverlap(schedule, routeScheduleOverrides); Assert.AreEqual(0, realSchedules.Count); }