/// <summary>
        /// Builds a <see cref="List{Cycle}" /> based on the given as of date.
        /// </summary>
        /// <param name="asOf">As of date for the cycles to build</param>
        /// <param name="parent">Parent YearlySchedule for the created Cycles</param>
        /// <returns><see cref="List{Cycle}" /></returns>
        private static List<Cycle> BuildCycles(DateTime asOf, YearlySchedule parent)
        {
            DateTime cycleStart, cycleEnd, endOfYear;
            List<Cycle> cycles = new List<Cycle>();

            cycleStart = asOf.FirstMondayOfYear();
            cycleEnd = cycleStart.AddDays(CycleDefinition.QualityDefinitions.Count * 7);
            endOfYear = asOf.LastDayOfYear();

            while (cycleEnd <= endOfYear) {
                Cycle newCycle = new Cycle(parent, cycleStart);
                cycles.Add(newCycle);

                cycleStart = cycleStart.AddDays(CycleDefinition.QualityDefinitions.Count * 7);
                cycleEnd = cycleStart.AddDays(CycleDefinition.QualityDefinitions.Count * 7);
            }

            return cycles;
        }
 public void LastDayOfYear_Returns_Valid_Result(DateTime date, DateTime expectedDate)
 {
     Assert.That(date.LastDayOfYear(), Is.EqualTo(expectedDate));
 }
        public void LastDayOfYear()
        {
            var dateTime1 = new DateTime(2013, 3, 22);
            var date1 = dateTime1.LastDayOfYear();
            var date2 = dateTime1.LastDayOfYear(DayOfWeek.Monday);

            Assert.AreEqual(new DateTime(2013, 12, 31), date1);
            Assert.AreEqual(new DateTime(2013, 12, 30), date2);
        }