public void CalculatedRecurrenceSetPagingWorks()
            {
                #region Arrange

                var validStartDateTime = new DateTime(2014, 2, 18);
                const int validDaysBetweenOccurrences = 3;
                var validEndDateTime = validStartDateTime.AddDays(9);
                var validDailyRecurrence = new DailyRecurrence(validStartDateTime, validDaysBetweenOccurrences,
                    validEndDateTime);

                #endregion

                #region Act

                const int validSkip = 1;
                const int validTake = 2;
                var recurrenceSet = validDailyRecurrence.CalculateRecurrenceSet(validSkip, validTake);

                #endregion

                #region Assert

                var expectedRecurrenceSet = new List<DateTime>
                {
                    validStartDateTime.AddDays(validDaysBetweenOccurrences*1),
                    validStartDateTime.AddDays(validDaysBetweenOccurrences*2)
                };

                Assert.IsTrue(expectedRecurrenceSet.SequenceEqual(recurrenceSet));

                #endregion
            }
Esempio n. 2
0
        public void GetOccurrences_EveryThird_Until()
        {
            var recurrence  = new DailyRecurrence(3, new DateTime(2017, 2, 26));
            var occurrences = recurrence.GetOccurrences(from).ToList();

            CollectionAssert.AreEqual(new[]
            {
                from.AddDays(0),
                from.AddDays(3),
                from.AddDays(6),
                from.AddDays(9),
            }, occurrences);
        }
Esempio n. 3
0
        public void GetOccurrences_EveryThird()
        {
            var recurrence  = new DailyRecurrence(3, null);
            var occurrences = recurrence.GetOccurrences(from).Take(5).ToList();

            CollectionAssert.AreEqual(new[]
            {
                from.AddDays(0),
                from.AddDays(3),
                from.AddDays(6),
                from.AddDays(9),
                from.AddDays(12),
            }, occurrences);
        }
Esempio n. 4
0
        public void GetOccurrences_Every()
        {
            var recurrence  = new DailyRecurrence(1, null);
            var occurrences = recurrence.GetOccurrences(from).Take(9).ToList();

            CollectionAssert.AreEqual(new[]
            {
                from.AddDays(0),
                from.AddDays(1),
                from.AddDays(2),
                from.AddDays(3),
                from.AddDays(4),
                from.AddDays(5),
                from.AddDays(6),
                from.AddDays(7),
                from.AddDays(8),
            }, occurrences);
        }
Esempio n. 5
0
        /// <summary>
        /// Create the recurrence pattern according to the schedule Type
        /// </summary>
        /// <param name="scheduleTypeParam"></param>
        /// <returns></returns>
        private RecurrencePattern GetPattern(string scheduleTypeParam, int scheduleDay)
        {
            SchedulePeriod scheduleType = (SchedulePeriod)Enum.Parse(typeof(SchedulePeriod), scheduleTypeParam, true);

            switch (scheduleType)
            {
            case SchedulePeriod.Daily:
                DailyRecurrence dailyPattern = new DailyRecurrence();
                dailyPattern.DaysInterval = 1;
                return(dailyPattern);

            case SchedulePeriod.Monthly:
                MonthlyDOWRecurrence monthlyPattern = new MonthlyDOWRecurrence();
                monthlyPattern.WhichWeekSpecified = true;
                monthlyPattern.WhichWeek          = WeekNumberEnum.LastWeek;

                MonthsOfYearSelector months = new MonthsOfYearSelector();
                months.January              = true;
                months.February             = true;
                months.March                = true;
                months.April                = true;
                months.May                  = true;
                months.June                 = true;
                months.July                 = true;
                months.August               = true;
                months.September            = true;
                months.October              = true;
                months.November             = true;
                months.December             = true;
                monthlyPattern.MonthsOfYear = months;

                DaysOfWeekSelector days = GetExecutionDay(scheduleDay);
                monthlyPattern.DaysOfWeek = days;

                return(monthlyPattern);

            case SchedulePeriod.Weekdays:
                WeeklyRecurrence weekdaysRecurrence = new WeeklyRecurrence();

                DaysOfWeekSelector Weekdays = new DaysOfWeekSelector();
                Weekdays.Monday    = true;
                Weekdays.Tuesday   = true;
                Weekdays.Wednesday = true;
                Weekdays.Thursday  = true;
                Weekdays.Friday    = true;

                weekdaysRecurrence.DaysOfWeek = Weekdays;

                weekdaysRecurrence.WeeksIntervalSpecified = true;
                weekdaysRecurrence.WeeksInterval          = 1;

                return(weekdaysRecurrence);

            case SchedulePeriod.Weekly:
                WeeklyRecurrence weeklyRecurrence = new WeeklyRecurrence();

                DaysOfWeekSelector weeklydays = GetExecutionDay(scheduleDay);
                weeklyRecurrence.DaysOfWeek = weeklydays;

                weeklyRecurrence.WeeksIntervalSpecified = true;
                weeklyRecurrence.WeeksInterval          = 1;

                return(weeklyRecurrence);

            default:
                return(null);
            }
        }
            public void CalculatedRecurrenceSetFilteringWorks()
            {
                #region Arrange

                var validStartDateTime = new DateTime(2014, 2, 18);
                const int validDaysBetweenOccurrences = 3;
                var validEndDateTime = validStartDateTime.AddDays(9);
                var validDailyRecurrence = new DailyRecurrence(validStartDateTime, validDaysBetweenOccurrences,
                    validEndDateTime);

                #endregion

                #region Act

                var validDateTimeWindow = new DateTimeWindow(validStartDateTime.AddDays(1),
                    validEndDateTime.Subtract(TimeSpan.FromDays(1)));

                var recurrenceSet =
                    validDailyRecurrence.CalculateRecurrenceSet(dateTimeWindow: validDateTimeWindow);

                #endregion

                #region Assert

                var expectedRecurrenceSet = new List<DateTime>
                {
                    validStartDateTime.AddDays(validDaysBetweenOccurrences*1),
                    validStartDateTime.AddDays(validDaysBetweenOccurrences*2)
                };

                Assert.IsTrue(expectedRecurrenceSet.SequenceEqual(recurrenceSet));

                #endregion
            }
            public void CalculatedRecurrenceSetEnforcesExcludedDates()
            {
                #region Arrange

                var validStartDateTime = new DateTime(2014, 2, 18);
                const int validDaysBetweenOccurrences = 3;
                var validEndDateTime = validStartDateTime.AddDays(9);
                var validDailyRecurrence = new DailyRecurrence(validStartDateTime, validDaysBetweenOccurrences,
                    validEndDateTime);
                validDailyRecurrence.Exclude(validStartDateTime.AddDays(validDaysBetweenOccurrences*2));

                #endregion

                #region Act

                var recurrenceSet = validDailyRecurrence.CalculateRecurrenceSet();

                #endregion

                #region Assert

                var expectedRecurrenceSet = new List<DateTime>
                {
                    validStartDateTime,
                    validStartDateTime.AddDays(validDaysBetweenOccurrences*1),
                    validStartDateTime.AddDays(validDaysBetweenOccurrences*3)
                };

                Assert.IsTrue(expectedRecurrenceSet.SequenceEqual(recurrenceSet));

                #endregion
            }