public void ReadXElement_Empty_ThrowsSyncDocumentException() { WeeklyPattern pattern = new WeeklyPattern(); XElement element = XElement.Parse("<NotDailyWeeklyPattern />"); pattern.ReadXElement(element); }
bool IsSame(Recurrence otherRecurrence) { WeeklyPattern otherWeeklyPattern = (WeeklyPattern)otherRecurrence; return super.IsSame();otherRecurrence) && this.daysOfTheWeek.ToString(",") == otherWeeklyPattern.daysOfTheWeek.ToString(",") && this.firstDayOfWeek == otherWeeklyPattern.firstDayOfWeek; }
/// <summary> /// Checks if two recurrence objects are identical. /// </summary> /// <param name="otherRecurrence">The recurrence to compare this one to.</param> /// <returns>true if the two recurrences are identical, false otherwise.</returns> public override bool IsSame(Recurrence otherRecurrence) { WeeklyPattern otherWeeklyPattern = (WeeklyPattern)otherRecurrence; return(base.IsSame(otherRecurrence) && this.daysOfTheWeek.ToString(",") == otherWeeklyPattern.daysOfTheWeek.ToString(",") && this.firstDayOfWeek == otherWeeklyPattern.firstDayOfWeek); }
public IEnumerable <Occurrence> GetOccurrences(int maxPostNowOccurrences = 100) { Requires.Valid(this, this.GetType().Name); uint occNum = 0; var now = DateTime.UtcNow; int postNowOccurrences = 0; var dt = AllDay ? new DateTime(StartDate.Year, StartDate.Month, StartDate.Day, 0, 0, 0, 0, DateTimeKind.Utc) : new DateTime(StartDate.Year, StartDate.Month, StartDate.Day, StartTimeUtc.Hour, StartTimeUtc.Minute, StartTimeUtc.Second, StartTimeUtc.Millisecond, DateTimeKind.Utc); while ( IsPerpetual || (EndAfterNOccurrences > 0 && occNum < EndAfterNOccurrences) || (EndBeforeDate.HasValue && dt < EndBeforeDate)) { if (dt > now && ++postNowOccurrences > maxPostNowOccurrences) { break; } yield return(new Occurrence(dt, Duration, occNum++)); switch (PatternType) { case PatternTypes.Daily: if (DailyPattern.EveryNDays > 0) { dt = dt.AddDays(DailyPattern.EveryNDays); } else if (DailyPattern.EveryWeekday) { do { dt = dt.AddDays(1); } while (!dt.IsWeekday()); } else { throw new NotImplementedException(); } break; case PatternTypes.Weekly: for (;;) { dt = dt.AddDays(1); if (dt.DayOfWeek == DayOfWeek.Sunday) { dt = dt.AddDays((WeeklyPattern.RecurEveryNWeeksOn - 1) * 7); } if (WeeklyPattern.OccursOn(dt.DayOfWeek)) { break; } } break; } } }
public void GetXElement_SetMondayTrue_ReturnsCorrectXml() { WeeklyPattern pattern = new WeeklyPattern(); pattern.Monday = true; var element = pattern.GetXElement(); var attribute = element.Attribute(WeeklyPattern.cn_monday); Assert.IsNotNull(attribute); Assert.IsTrue(attribute.Value == "true"); }
public void GetXElement_SetSundayFalse_ReturnsCorrectXml() { WeeklyPattern pattern = new WeeklyPattern(); pattern.Sunday = false; var element = pattern.GetXElement(); var attribute = element.Attribute(WeeklyPattern.cn_sunday); Assert.IsNotNull(attribute); Assert.IsTrue(attribute.Value == "false"); }
public void GetXElement_SetReocurEveryNWeek_ReturnsCorrectXml() { WeeklyPattern pattern = new WeeklyPattern(); pattern.ReocurEveryNWeek = 3; var element = pattern.GetXElement(); var attribute = element.Attribute(WeeklyPattern.cn_reocurEveryNWeek); Assert.IsNotNull(attribute); Assert.IsTrue(attribute.Value == "3"); }
private static DateTime WeeklyCalculate(WeeklyPattern pattern, DateTime previousDate) { while (true) { previousDate = previousDate.AddDays(1); if (pattern.DaysOfTheWeek.Contains((DayOfTheWeek)previousDate.DayOfWeek)) { return(previousDate); } } }
public void ShouldContainWeeklyOccurences() { var date = DateTime.Parse("2017-01-02T00:00:00"); var pattern = new WeeklyPattern(date, 1) { EndDate = date.AddDays(14) }; pattern.DaysOfTheWeek.Add(DayOfTheWeek.Monday); pattern.DaysOfTheWeek.Add(DayOfTheWeek.Tuesday); pattern.DaysOfTheWeek.Add(DayOfTheWeek.Wednesday); var occurrence = new Occurrence { Start = date, End = date.AddHours(1) }; var result = PatternConverter.Convert(pattern, occurrence); Assert.Equal(7, result.Count); Assert.Equal(date, result.First().Start); }
public void EqualsAsISheduleTest() { var instance = new WeeklyPattern(); var res = instance.Equals(Mock.Create<ISchedulePattern>()); Assert.IsFalse(res); }
public void GetHashCodeTest() { const int ReoccurEveryNWeek = 1; const bool Sunday = true; const bool Monday = true; const bool Tuesday = true; const bool Wednesday = true; const bool Thursday = true; const bool Friday = true; const bool Saturday = true; var hash = ReoccurEveryNWeek.GetHashCode() ^ ((Sunday.GetHashCode() << 1) ^ (Monday.GetHashCode() << 2) ^ (Tuesday.GetHashCode() << 3) ^ (Wednesday.GetHashCode() << 4) ^ (Thursday.GetHashCode() << 5) ^ (Friday.GetHashCode() << 6) ^ (Saturday.GetHashCode() << 7)); var instance = new WeeklyPattern { ReoccurEveryNWeek = ReoccurEveryNWeek, Sunday = Sunday, Monday = Monday, Tuesday = Tuesday, Wednesday = Wednesday, Thursday = Thursday, Friday = Friday, Saturday = Saturday }; var res = instance.GetHashCode(); Assert.AreEqual(hash, res); }
public void PatternsWithDifferentDaysAreNotEqual() { var target = new WeeklyPattern { Sunday = true }; var other = new WeeklyPattern { Monday = true }; Assert.IsFalse(target.Equals(other)); }
public void PatternsWithEqualFieldsAreEqual() { var target = new WeeklyPattern { ReoccurEveryNWeek = 2, Monday = true, Wednesday = true, Friday = true }; var other = new WeeklyPattern { ReoccurEveryNWeek = 2, Monday = true, Wednesday = true, Friday = true }; Assert.IsTrue(target.Equals(other)); }
public void ReadXElement_SetWednesdayFalse_SetsPropertyWednesdayFalse() { WeeklyPattern pattern = new WeeklyPattern(); pattern.ReadXElement(XElement.Parse(@"<WeeklyPattern wednesday=""false"" />")); Assert.IsFalse(pattern.Tuesday); }
public void PatternsWithDifferentReoccurEveryNWeekAreNotEqual() { var target = new WeeklyPattern { ReoccurEveryNWeek = 1 }; var other = new WeeklyPattern { ReoccurEveryNWeek = 2 }; Assert.IsFalse(target.Equals(other)); }
public void GetNextDateAfter_ReturnsNextDayInNextWeek() { // Arrange. var target = new WeeklyPattern { Saturday = true, Sunday = true }; var afterDate = new DateTime(2013, 1, 19); // Saturday // Act. var result = target.GetNextDateAfter(afterDate); // Assert. var expected = new DateTime(2013, 1, 20); // Sunday Assert.AreEqual(expected, result); // Arrange. target = new WeeklyPattern { ReoccurEveryNWeek = 2, Sunday = true, Saturday = true }; afterDate = new DateTime(2013, 1, 19); // Saturday // Act. result = target.GetNextDateAfter(afterDate); // Assert. expected = new DateTime(2013, 1, 27); // Sunday Assert.AreEqual(expected, result); // Arrange. target = new WeeklyPattern { ReoccurEveryNWeek = 3, Sunday = true }; afterDate = new DateTime(2013, 1, 20); // Sunday // Act. result = target.GetNextDateAfter(afterDate); // Assert. expected = new DateTime(2013, 2, 10); // Sunday Assert.AreEqual(expected, result); }
public void PatternIsNotEqualToNull() { var target = new WeeklyPattern(); Assert.IsFalse(target.Equals(null)); }
public void ReoccurEveryNWeekDefaultsToOne() { var target = new WeeklyPattern(); Assert.AreEqual(1, target.ReoccurEveryNWeek); }
/// <summary> /// Converts the specified pattern. /// </summary> /// <param name="pattern">The pattern.</param> /// <param name="defaultOccurrence">The default occurrence.</param> /// <returns></returns> public static OccurrenceCollection Convert(WeeklyPattern pattern, Occurrence defaultOccurrence) { Expression <Func <DateTime, DateTime> > predicate = previousDate => WeeklyCalculate(pattern, previousDate); return(Convert(pattern, defaultOccurrence, predicate)); }
public void ReadXElement_SetFridayTrue_SetsPropertyFridayTrue() { WeeklyPattern pattern = new WeeklyPattern(); pattern.ReadXElement(XElement.Parse(@"<WeeklyPattern friday=""true"" />")); Assert.IsTrue(pattern.Friday); }
public void ReadXElement_SetSaturdayFalse_SetsPropertySaturdayFalse() { WeeklyPattern pattern = new WeeklyPattern(); pattern.ReadXElement(XElement.Parse(@"<WeeklyPattern saturday=""false"" />")); Assert.IsFalse(pattern.Saturday); }
public void ReadXElement_Set_SetsProperty() { WeeklyPattern pattern = new WeeklyPattern(); pattern.ReadXElement(XElement.Parse(@"<WeeklyPattern reocurEveryNWeek=""4"" />")); Assert.IsTrue(pattern.ReocurEveryNWeek == 4); }
public void GetNextDateAfter_ReturnsNextDayInCurrentWeek() { // Arrange. var target = new WeeklyPattern { ReoccurEveryNWeek = 2, Sunday = true, Tuesday = true }; var afterDate = new DateTime(2013, 1, 20); // Sunday // Act. var result = target.GetNextDateAfter(afterDate); // Assert. var expected = new DateTime(2013, 1, 22); // Tuesday Assert.AreEqual(expected, result); // Arrange. target = new WeeklyPattern { ReoccurEveryNWeek = 2, Saturday = true, }; afterDate = new DateTime(2013, 1, 18); // Friday. // Act. result = target.GetNextDateAfter(afterDate); // Assert. expected = new DateTime(2013, 1, 19); // Saturday Assert.AreEqual(expected, result); // Arrange. target = new WeeklyPattern { ReoccurEveryNWeek = 2, Sunday = true, Monday = true, Tuesday = true, Wednesday = true, Thursday = true, Friday = true, Saturday = true }; afterDate = new DateTime(2013, 1, 18); // Friday. // Act. result = target.GetNextDateAfter(afterDate); // Assert. expected = new DateTime(2013, 1, 19); // Saturday Assert.AreEqual(expected, result); }
public void PatternIsNotEqualToRandomObject() { var target = new WeeklyPattern(); Assert.IsFalse(target.Equals(new object())); }
public void WhenNoDaysAreSelected_GetNextDateAfter_ReturnsNull() { // Arrange. var target = new WeeklyPattern(); // Act. var result = target.GetNextDateAfter(new DateTime(2013, 1, 1)); // Assert. Assert.IsNull(result); }
public void PatternsWithDefaultValuesAreEqual() { var target = new WeeklyPattern(); var other = new WeeklyPattern(); Assert.IsTrue(target.Equals(other)); }
public void PatternIsEqualToSelf() { var target = new WeeklyPattern(); Assert.IsTrue(target.Equals(target)); }
public void ReadXElement_Empty_ThrowsArgumentNullException() { WeeklyPattern pattern = new WeeklyPattern(); XElement element = null; pattern.ReadXElement(element); }