コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }