Пример #1
0
        public void WeeklyTime_CompareTo()
        {
            var zoo = new WeeklyTime(DayOfWeek.Monday, 0, 0, 0);
            var foo = new WeeklyTime(DayOfWeek.Monday, 1, 1, 1);
            var moo = new WeeklyTime(DayOfWeek.Monday, 1, 1, 1);
            var bar = new WeeklyTime(DayOfWeek.Monday, 2, 2, 2);

            Assert.True(foo.CompareTo(bar) == -1);
            Assert.True(foo.CompareTo(moo) == 0);
            Assert.True(foo.CompareTo(zoo) == 1);
        }
Пример #2
0
        public void WeeklyTime_CompareToInvalid()
        {
            var did_throw = false;
            var zoo       = new WeeklyTime(DayOfWeek.Monday, 0, 0, 0);
            var boo       = new object();

            try
            {
                zoo.CompareTo(boo);
            }
            catch (ArgumentException)
            {
                did_throw = true;
            }

            Assert.True(did_throw);
        }
Пример #3
0
        /// <summary>
        /// This method returns the next RouteInstance to depart from the given the date time.
        /// 
        /// If the Route has no deliveryTimes, the method will return null.  Otherwise, it will return a RouteInstance with
        /// the DateTime of the next delivery time.
        /// </summary>
        /// <param name="time"></param>
        /// <returns></returns>
        public RouteInstance GetNextDeparture(DateTime time)
        {
            if (departureTimes.Count == 0) {
                return null;
            }

            var asWeeklyTime = new WeeklyTime(time);

            // find next departure time
            WeeklyTime nextDeparture = null;
            foreach (WeeklyTime departureTime in departureTimes)
            {

                var value = asWeeklyTime.CompareTo(departureTime);
                if ( value <= 0)
                {
                    nextDeparture = departureTime;
                    break;
                }
            }

            int extraMinutes = 0; // extra time to add if the departureTime is next week.

            // if no deliveries this week, get first one next week.
            if (nextDeparture == null) {
                nextDeparture = departureTimes[0];
                extraMinutes = WeeklyTime.MINUTES_IN_A_WEEK;
            }

            // work out datetime
            int minutesDifference = (int)(nextDeparture.Value.TotalMinutes - asWeeklyTime.Value.TotalMinutes) + extraMinutes;
            var departureDateTime = time.AddMinutes(minutesDifference);

            // create and return route instance
            return new RouteInstance(this, departureDateTime);
        }