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 }
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); }
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); }
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); }
/// <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 }