public void AddMonthsTest()
{
DateTime now = ClockProxy.Clock.Now;
CultureTestData cultures = new CultureTestData();
foreach ( CultureInfo culture in cultures )
{
DateTime currentYearMonthStart = new DateTime( now.Year, now.Month, 1 );
DateTime currentYearMonthEnd =
currentYearMonthStart.AddDays( culture.Calendar.GetDaysInMonth( currentYearMonthStart.Year,
currentYearMonthStart.Month ) );
Month currentYearMonth = new Month( currentYearMonthStart,
TimeCalendar.New( culture, TimeSpan.Zero, TimeSpan.Zero ) );
Assert.AreEqual( currentYearMonth.Start, currentYearMonthStart );
Assert.AreEqual( currentYearMonth.End, currentYearMonthEnd );
Assert.AreEqual( currentYearMonth.AddMonths( 0 ), currentYearMonth );
DateTime previousYearMonthStart = new DateTime( now.Year - 1, now.Month, 1 );
DateTime previousYearMonthEnd =
previousYearMonthStart.AddDays( culture.Calendar.GetDaysInMonth( previousYearMonthStart.Year,
previousYearMonthStart.Month ) );
Month previousYearMonth = currentYearMonth.AddMonths( TimeSpec.MonthsPerYear * -1 );
Assert.AreEqual( previousYearMonth.Start, previousYearMonthStart );
Assert.AreEqual( previousYearMonth.End, previousYearMonthEnd );
Assert.AreEqual( previousYearMonth.YearMonth, currentYearMonth.YearMonth );
Assert.AreEqual( previousYearMonth.Start.Year, currentYearMonth.Start.Year - 1 );
Assert.AreEqual( previousYearMonth.End.Year, currentYearMonth.End.Year - 1 );
DateTime nextYearMonthStart = new DateTime( now.Year + 1, now.Month, 1 );
DateTime nextYearMonthEnd =
nextYearMonthStart.AddDays( culture.Calendar.GetDaysInMonth( nextYearMonthStart.Year, nextYearMonthStart.Month ) );
Month nextYearMonth = currentYearMonth.AddMonths( TimeSpec.MonthsPerYear );
Assert.AreEqual( nextYearMonth.Start, nextYearMonthStart );
Assert.AreEqual( nextYearMonth.End, nextYearMonthEnd );
Assert.AreEqual( nextYearMonth.YearMonth, currentYearMonth.YearMonth );
Assert.AreEqual( nextYearMonth.Start.Year, currentYearMonth.Start.Year + 1 );
Assert.AreEqual( nextYearMonth.End.Year, currentYearMonth.End.Year + 1 );
}
}