Exemple #1
0
        public void FiscalYearGetMonthsTest()
        {
            const int             quarterCount = 8;
            Quarters              halfyears    = new Quarters(2006, YearQuarter.First, quarterCount, GetFiscalYearCalendar(FiscalYearAlignment.LastDay));
            ITimePeriodCollection months       = halfyears.GetMonths();

            Assert.AreNotEqual(months, null);
            Assert.AreEqual(months.Count, TimeSpec.MonthsPerQuarter * quarterCount);

            Assert.AreEqual(months[0].Start, new DateTime(2006, 8, 27));
            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 == 2008 || month.Year == 2013 || month.Year == 2019))
                {
                    Assert.AreEqual(month.Duration.Subtract(TimeCalendar.DefaultEndOffset).Days, TimeSpec.FiscalDaysPerLeapMonth);
                }
                else if ((i + 1) % 3 == 0)                     // first and second month of quarter (4 weeks)
                {
                    Assert.AreEqual(month.Duration.Subtract(TimeCalendar.DefaultEndOffset).Days, TimeSpec.FiscalDaysPerLongMonth);
                }
                else                 // third month of quarter (5 weeks)
                {
                    Assert.AreEqual(month.Duration.Subtract(TimeCalendar.DefaultEndOffset).Days, TimeSpec.FiscalDaysPerShortMonth);
                }
            }
            Assert.AreEqual(months[(TimeSpec.MonthsPerQuarter * quarterCount) - 1].End, halfyears.End);
        } // FiscalYearGetMonthsTest