예제 #1
0
        public void RunEveryFourWeeksOnWeekdays()
        {
            var template = new WeeklyScheduleTemplate(4);

            template[DayOfWeek.Monday]    = true;
            template[DayOfWeek.Tuesday]   = true;
            template[DayOfWeek.Wednesday] = true;
            template[DayOfWeek.Thursday]  = true;
            template[DayOfWeek.Friday]    = true;

            var startDate = new Date(2019, 10, 24);

            var actual = template.GetDates(startDate).Take(10);

            actual.Should().Equal(new Date[] {
                new Date(2019, 10, 24),
                new Date(2019, 10, 25),
                new Date(2019, 11, 18),
                new Date(2019, 11, 19),
                new Date(2019, 11, 20),
                new Date(2019, 11, 21),
                new Date(2019, 11, 22),
                new Date(2019, 12, 16),
                new Date(2019, 12, 17),
                new Date(2019, 12, 18)
            });
        }
예제 #2
0
        public void ValidateAtLeastOneDaySelected()
        {
            var template = new WeeklyScheduleTemplate(1);

            var errors = template.Validate().ToList();

            errors.Should().BeEquivalentTo(new string[] { "Weekly schedule must occur on atleast 1 day" });
        }
예제 #3
0
        public void ValidateEveryNotLessThanZero()
        {
            var template = new WeeklyScheduleTemplate(-1);

            var errors = template.Validate().ToList();

            errors.Should().BeEquivalentTo(new string[] {
                "Weekly schedule must occur atleast every 1 weeks",
                "Weekly schedule must occur on atleast 1 day"
            });
        }
예제 #4
0
        public void FirstRunDateAfterDate()
        {
            var template = new WeeklyScheduleTemplate(1);

            template[DayOfWeek.Wednesday] = true;

            var startDate = new Date(2019, 10, 25);

            var actual = template.GetDates(startDate).First();

            actual.Should().Be(new Date(2019, 10, 30));
        }
예제 #5
0
        public void FirstRunDateBetweenDates()
        {
            var template = new WeeklyScheduleTemplate(1);

            template[DayOfWeek.Wednesday] = true;
            template[DayOfWeek.Saturday]  = true;

            var startDate = new Date(2019, 10, 24);

            var actual = template.GetDates(startDate).First();

            actual.Should().Be(new Date(2019, 10, 26));
        }
예제 #6
0
        public void RunEvery2WeeksOnMonday()
        {
            var template = new WeeklyScheduleTemplate(2);

            template[DayOfWeek.Monday] = true;

            var startDate = new Date(2019, 10, 24);

            var actual = template.GetDates(startDate).Take(5);

            actual.Should().Equal(new Date[] {
                new Date(2019, 10, 28),
                new Date(2019, 11, 11),
                new Date(2019, 11, 25),
                new Date(2019, 12, 09),
                new Date(2019, 12, 23)
            });
        }
예제 #7
0
        public void RunEveryWeekOnWednesdayAndSunday()
        {
            var template = new WeeklyScheduleTemplate(1);

            template[DayOfWeek.Wednesday] = true;
            template[DayOfWeek.Sunday]    = true;

            var startDate = new Date(2019, 10, 24);

            var actual = template.GetDates(startDate).Take(5);

            actual.Should().Equal(new Date[] {
                new Date(2019, 10, 27),
                new Date(2019, 10, 30),
                new Date(2019, 11, 03),
                new Date(2019, 11, 06),
                new Date(2019, 11, 10)
            });
        }
예제 #8
0
        public void WeeklyEveryMondayAt17_30()
        {
            var dateTemplate = new WeeklyScheduleTemplate(1);

            dateTemplate[DayOfWeek.Monday] = true;
            var timeTemplate = new ExactTimeScheduleTemplate(17, 30);

            var template = new ScheduleTemplate(dateTemplate, timeTemplate);

            var startDate = new DateTime(2019, 10, 23, 04, 34, 56);

            var schedule = new ScheduleInstance(template, startDate);

            schedule.Take(5).Should().Equal(new DateTime[] {
                new DateTime(2019, 10, 28, 17, 30, 00),
                new DateTime(2019, 11, 04, 17, 30, 00),
                new DateTime(2019, 11, 11, 17, 30, 00),
                new DateTime(2019, 11, 18, 17, 30, 00),
                new DateTime(2019, 11, 25, 17, 30, 00)
            });
        }
예제 #9
0
 public IntermediateWeeklyScheduleBuilder(ScheduleTemplate template)
     : base(template)
 {
     _DateTemplate = (WeeklyScheduleTemplate)template.DateTemplate;
 }
예제 #10
0
 public WeekScheduleBuilder(ScheduleTemplate template)
 {
     _Template     = template;
     _DateTemplate = (WeeklyScheduleTemplate)template.DateTemplate;
 }