示例#1
0
        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
示例#2
0
        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