示例#1
0
        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);
        }
示例#2
0
        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);
        }