public void GetMonthsTest() { const int startYear = 2004; const int yearCount = 10; const YearMonth startMonth = YearMonth.October; Years years = new Years(startYear, yearCount, TimeCalendar.New(startMonth)); ITimePeriodCollection months = years.GetMonths(); Assert.NotNull(months); int index = 0; foreach (Month month in months) { int monthYear; YearMonth monthMonth; TimeTool.AddMonth(startYear, startMonth, index, out monthYear, out monthMonth); Assert.Equal(month.Year, monthYear); Assert.Equal(month.Start, years.Start.AddMonths(index)); Assert.Equal(month.End, month.Calendar.MapEnd(month.Start.AddMonths(1))); index++; } Assert.Equal(index, yearCount * TimeSpec.MonthsPerYear); } // GetMonthsTest
public void FiscalYearsNearestDayGetMonthsTest() { const int yearCount = 13; Years years = new Years(2006, yearCount, GetFiscalYearCalendar(FiscalYearAlignment.NearestDay)); ITimePeriodCollection months = years.GetMonths(); Assert.NotNull(months); Assert.Equal(months.Count, yearCount * TimeSpec.MonthsPerYear); Assert.Equal(months[0].Start, new DateTime(2006, 9, 3)); for (int i = 0; i < months.Count; i++) { Month month = (Month)months[i]; // last month of a leap year (6 weeks) // http://en.wikipedia.org/wiki/4-4-5_Calendar if ((month.YearMonth == YearMonth.August) && (month.Year == 2011 || month.Year == 2016)) { Assert.Equal(month.Duration.Subtract(TimeCalendar.DefaultEndOffset).Days, TimeSpec.FiscalDaysPerLeapMonth); } else if ((i + 1) % 3 == 0) // first and second month of quarter (4 weeks) { Assert.Equal(month.Duration.Subtract(TimeCalendar.DefaultEndOffset).Days, TimeSpec.FiscalDaysPerLongMonth); } else // third month of quarter (5 weeks) { Assert.Equal(month.Duration.Subtract(TimeCalendar.DefaultEndOffset).Days, TimeSpec.FiscalDaysPerShortMonth); } } } // FiscalYearsNearestDayGetMonthsTest