public void TestControllerJSONGenerationForYear()
        {
            //Arrange
            int            numberOfRecurrences = 10;
            YearlySchedule item = new YearlySchedule
            {
                RecurrenceType                = YearlySchedule.RecurrenceTypeEnum.Yearly,
                YearlyEveryNYearsSelected     = true,
                YearlyEveryNYears             = 1,
                RecurrenceStartDate           = DateTime.Now,
                RecurrenceEndAfterNSelected   = true,
                RecurrenceEndAfterNOccurences = numberOfRecurrences
            };
            ScheduleItem scheduleItem = new ScheduleItem
            {
                YearlySchedule = item
            };
            ScheduleItemController controller = new ScheduleItemController();

            //Act
            item.ProcessFutureDates();
            string       json          = controller.CreateJSON(scheduleItem);
            ScheduleItem processedItem = controller.ProcessJSON(json);

            //Assert
            Assert.IsTrue(json != null);
            Assert.AreEqual(processedItem.ScheduleItemType, "Yearly");
            Assert.IsTrue(processedItem.DailySchedule == null);
            Assert.IsTrue(processedItem.WeeklySchedule == null);
            Assert.IsTrue(processedItem.MonthlySchedule == null);
            Assert.IsTrue(processedItem.YearlySchedule != null);
        }
        public void TestEveryOneDayInThreeYearForFiveOccurences()
        {
            //Arrange
            int            numberOfRecurrences = 5;
            YearlySchedule item = new YearlySchedule
            {
                RecurrenceType                = YearlySchedule.RecurrenceTypeEnum.Yearly,
                YearlyEveryNYearsSelected     = true,
                YearlyEveryNYears             = 5,
                RecurrenceStartDate           = DateTime.Now,
                RecurrenceEndAfterNSelected   = true,
                RecurrenceEndAfterNOccurences = numberOfRecurrences
            };
            DateTime lastDate = item.NormalizeDate(item.RecurrenceStartDate.AddYears((numberOfRecurrences * item.YearlyEveryNYears) - item.YearlyEveryNYears));

            //Act
            item.ProcessFutureDates();

            //Assert
            Assert.AreEqual(item.Name, "Yearly every " + item.YearlyEveryNYears + " years for a total of " + numberOfRecurrences + " FutureDates");
            DateTime[] dates = item.FutureDates.ToArray();
            Assert.AreEqual(lastDate, dates[dates.Length - 1]);
        }