internal CswNbtNode createGeneratorNode(CswEnumRateIntervalType IntervalType, String NodeTypeName = "Equipment Schedule", int WarningDays = 0, SortedList Days = null, DateTime?StartDate = null) { CswNbtNode ret = _CswNbtResources.Nodes.makeNodeFromNodeTypeId(_getNodeTypeId(NodeTypeName), delegate(CswNbtNode NewNode) { CswNbtObjClassGenerator GeneratorNode = NewNode; CswRateInterval RateInt = new CswRateInterval(_CswNbtResources); DateTime StDate = StartDate != null ? (DateTime)StartDate : new DateTime(2012, 1, 15); if (IntervalType == CswEnumRateIntervalType.WeeklyByDay) { if (null == Days) { Days = new SortedList { { DayOfWeek.Monday, DayOfWeek.Monday } }; } RateInt.setWeeklyByDay(Days, StDate); } else if (IntervalType == CswEnumRateIntervalType.MonthlyByDate) { RateInt.setMonthlyByDate(1, StDate.Day, StDate.Month, StDate.Year); } GeneratorNode.DueDateInterval.RateInterval = RateInt; GeneratorNode.WarningDays.Value = WarningDays; //GeneratorNode.postChanges( ForceUpdate: false ); }); _finalize(); return(ret); } // createGeneratorNode()
public void WeeklyByDayTest() { CswRateInterval r = new CswRateInterval(_CswResources); DateTime StartDate = new DateTime(2012, 10, 5); SortedList Days = new SortedList(); Days.Add(DayOfWeek.Monday, DayOfWeek.Monday); Days.Add(DayOfWeek.Wednesday, DayOfWeek.Wednesday); Days.Add(DayOfWeek.Friday, DayOfWeek.Friday); r.setWeeklyByDay(Days, StartDate); Assert.AreEqual(r.getFirst(), StartDate); DateTime CurrentDate = StartDate; for (Int32 i = 1; i <= 365; i++) { CurrentDate = CurrentDate.AddDays(1); DateTime TargetDate = CurrentDate.AddDays(1); while (TargetDate.DayOfWeek != DayOfWeek.Monday && TargetDate.DayOfWeek != DayOfWeek.Wednesday && TargetDate.DayOfWeek != DayOfWeek.Friday) { TargetDate = TargetDate.AddDays(1); } Assert.AreEqual(r.getNext(CurrentDate), TargetDate); } }