X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Ftests%2Fxestiacalendar_commonfunctions.h;h=d5c065d089d468210ee11d7ba6e84873926f4576;hb=51c291353798e0081c475d7e6f9c13c84c147a16;hp=8da4adc3be73cc660ff8656725a055323aa557f8;hpb=9cfe89f551413dcf49e5de07137379c90ffce887;p=xestiacalendar%2F.git diff --git a/source/tests/xestiacalendar_commonfunctions.h b/source/tests/xestiacalendar_commonfunctions.h index 8da4adc..d5c065d 100644 --- a/source/tests/xestiacalendar_commonfunctions.h +++ b/source/tests/xestiacalendar_commonfunctions.h @@ -19,6 +19,7 @@ #include "../common/file.h" #include "../common/text.h" #include "../common/colour.h" +#include "../common/monthviewgen.h" TEST(CommonFunctions, FileTests){ @@ -401,4 +402,596 @@ TEST(CommonFunctions, OutputText){ ASSERT_EQ(ResultText4, OutputText4); ASSERT_EQ(ResultText5, OutputText5); +} + +TEST(CommonFunctions, PreviousMonthNumberofDays){ + + // Test the year 2015 (does not have a leap year). + + ASSERT_EQ(30, PreviousMonthNumberofDays(12, 2015)); + + // Test the year 2016 (has a leap year). + + ASSERT_EQ(31, PreviousMonthNumberofDays(1, 2016)); + ASSERT_EQ(31, PreviousMonthNumberofDays(2, 2016)); + ASSERT_EQ(29, PreviousMonthNumberofDays(3, 2016)); + ASSERT_EQ(31, PreviousMonthNumberofDays(4, 2016)); + ASSERT_EQ(30, PreviousMonthNumberofDays(5, 2016)); + ASSERT_EQ(31, PreviousMonthNumberofDays(6, 2016)); + ASSERT_EQ(30, PreviousMonthNumberofDays(7, 2016)); + ASSERT_EQ(31, PreviousMonthNumberofDays(8, 2016)); + ASSERT_EQ(31, PreviousMonthNumberofDays(9, 2016)); + ASSERT_EQ(30, PreviousMonthNumberofDays(10, 2016)); + ASSERT_EQ(31, PreviousMonthNumberofDays(11, 2016)); + ASSERT_EQ(30, PreviousMonthNumberofDays(12, 2016)); + ASSERT_EQ(31, PreviousMonthNumberofDays(1, 2017)); + + // Test the leap year section. + + ASSERT_EQ(29, PreviousMonthNumberofDays(3, 2016)); + ASSERT_EQ(29, PreviousMonthNumberofDays(3, 2012)); + ASSERT_EQ(29, PreviousMonthNumberofDays(3, 2008)); + ASSERT_EQ(29, PreviousMonthNumberofDays(3, 2004)); + ASSERT_EQ(29, PreviousMonthNumberofDays(3, 2000)); + + ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2015)); + ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2014)); + ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2013)); + + ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2041)); + ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2042)); + ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2043)); + ASSERT_EQ(29, PreviousMonthNumberofDays(3, 2044)); + ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2045)); + ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2046)); + ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2047)); + ASSERT_EQ(29, PreviousMonthNumberofDays(3, 2048)); + ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2049)); + ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2050)); + + ASSERT_EQ(28, PreviousMonthNumberofDays(3, 1900)); + ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2200)); + ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2300)); + ASSERT_EQ(29, PreviousMonthNumberofDays(3, 2400)); + ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2500)); + ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2600)); + ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2700)); + ASSERT_EQ(29, PreviousMonthNumberofDays(3, 2800)); + ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2900)); + ASSERT_EQ(28, PreviousMonthNumberofDays(3, 3000)); + +} + +TEST(CommonFunctions, MonthViewGenerator){ + + XCCalendarMonthViewGrid MonthView = GenerateMonthGrid(6, 2016); + + // First week. + + ASSERT_EQ(30, MonthView.WeekList[0].DayList[0].Day); + ASSERT_EQ(5, MonthView.WeekList[0].DayList[0].Month); + ASSERT_EQ(2016, MonthView.WeekList[0].DayList[0].Year); + ASSERT_EQ(false, MonthView.WeekList[0].DayList[0].IsInMonth); + + ASSERT_EQ(31, MonthView.WeekList[0].DayList[1].Day); + ASSERT_EQ(5, MonthView.WeekList[0].DayList[1].Month); + ASSERT_EQ(2016, MonthView.WeekList[0].DayList[1].Year); + ASSERT_EQ(false, MonthView.WeekList[0].DayList[1].IsInMonth); + + ASSERT_EQ(1, MonthView.WeekList[0].DayList[2].Day); + ASSERT_EQ(6, MonthView.WeekList[0].DayList[2].Month); + ASSERT_EQ(2016, MonthView.WeekList[0].DayList[2].Year); + ASSERT_EQ(true, MonthView.WeekList[0].DayList[2].IsInMonth); + + ASSERT_EQ(2, MonthView.WeekList[0].DayList[3].Day); + ASSERT_EQ(6, MonthView.WeekList[0].DayList[3].Month); + ASSERT_EQ(2016, MonthView.WeekList[0].DayList[3].Year); + ASSERT_EQ(true, MonthView.WeekList[0].DayList[3].IsInMonth); + + ASSERT_EQ(3, MonthView.WeekList[0].DayList[4].Day); + ASSERT_EQ(6, MonthView.WeekList[0].DayList[4].Month); + ASSERT_EQ(2016, MonthView.WeekList[0].DayList[4].Year); + ASSERT_EQ(true, MonthView.WeekList[0].DayList[4].IsInMonth); + + ASSERT_EQ(4, MonthView.WeekList[0].DayList[5].Day); + ASSERT_EQ(6, MonthView.WeekList[0].DayList[5].Month); + ASSERT_EQ(2016, MonthView.WeekList[0].DayList[5].Year); + ASSERT_EQ(true, MonthView.WeekList[0].DayList[5].IsInMonth); + + ASSERT_EQ(5, MonthView.WeekList[0].DayList[6].Day); + ASSERT_EQ(6, MonthView.WeekList[0].DayList[6].Month); + ASSERT_EQ(2016, MonthView.WeekList[0].DayList[6].Year); + ASSERT_EQ(true, MonthView.WeekList[0].DayList[6].IsInMonth); + + // Second week. + + ASSERT_EQ(6, MonthView.WeekList[1].DayList[0].Day); + ASSERT_EQ(6, MonthView.WeekList[1].DayList[0].Month); + ASSERT_EQ(2016, MonthView.WeekList[1].DayList[0].Year); + ASSERT_EQ(true, MonthView.WeekList[1].DayList[0].IsInMonth); + + ASSERT_EQ(7, MonthView.WeekList[1].DayList[1].Day); + ASSERT_EQ(6, MonthView.WeekList[1].DayList[1].Month); + ASSERT_EQ(2016, MonthView.WeekList[1].DayList[1].Year); + ASSERT_EQ(true, MonthView.WeekList[1].DayList[1].IsInMonth); + + ASSERT_EQ(8, MonthView.WeekList[1].DayList[2].Day); + ASSERT_EQ(6, MonthView.WeekList[1].DayList[2].Month); + ASSERT_EQ(2016, MonthView.WeekList[1].DayList[2].Year); + ASSERT_EQ(true, MonthView.WeekList[1].DayList[2].IsInMonth); + + ASSERT_EQ(9, MonthView.WeekList[1].DayList[3].Day); + ASSERT_EQ(6, MonthView.WeekList[1].DayList[3].Month); + ASSERT_EQ(2016, MonthView.WeekList[1].DayList[3].Year); + ASSERT_EQ(true, MonthView.WeekList[1].DayList[3].IsInMonth); + + ASSERT_EQ(10, MonthView.WeekList[1].DayList[4].Day); + ASSERT_EQ(6, MonthView.WeekList[1].DayList[4].Month); + ASSERT_EQ(2016, MonthView.WeekList[1].DayList[4].Year); + ASSERT_EQ(true, MonthView.WeekList[1].DayList[4].IsInMonth); + + ASSERT_EQ(11, MonthView.WeekList[1].DayList[5].Day); + ASSERT_EQ(6, MonthView.WeekList[1].DayList[5].Month); + ASSERT_EQ(2016, MonthView.WeekList[1].DayList[5].Year); + ASSERT_EQ(true, MonthView.WeekList[1].DayList[5].IsInMonth); + + ASSERT_EQ(12, MonthView.WeekList[1].DayList[6].Day); + ASSERT_EQ(6, MonthView.WeekList[1].DayList[6].Month); + ASSERT_EQ(2016, MonthView.WeekList[1].DayList[6].Year); + ASSERT_EQ(true, MonthView.WeekList[1].DayList[6].IsInMonth); + + // Third Week. + + ASSERT_EQ(13, MonthView.WeekList[2].DayList[0].Day); + ASSERT_EQ(6, MonthView.WeekList[2].DayList[0].Month); + ASSERT_EQ(2016, MonthView.WeekList[2].DayList[0].Year); + ASSERT_EQ(true, MonthView.WeekList[2].DayList[0].IsInMonth); + + ASSERT_EQ(14, MonthView.WeekList[2].DayList[1].Day); + ASSERT_EQ(6, MonthView.WeekList[2].DayList[1].Month); + ASSERT_EQ(2016, MonthView.WeekList[2].DayList[1].Year); + ASSERT_EQ(true, MonthView.WeekList[2].DayList[1].IsInMonth); + + ASSERT_EQ(15, MonthView.WeekList[2].DayList[2].Day); + ASSERT_EQ(6, MonthView.WeekList[2].DayList[2].Month); + ASSERT_EQ(2016, MonthView.WeekList[2].DayList[2].Year); + ASSERT_EQ(true, MonthView.WeekList[2].DayList[2].IsInMonth); + + ASSERT_EQ(16, MonthView.WeekList[2].DayList[3].Day); + ASSERT_EQ(6, MonthView.WeekList[2].DayList[3].Month); + ASSERT_EQ(2016, MonthView.WeekList[2].DayList[3].Year); + ASSERT_EQ(true, MonthView.WeekList[2].DayList[3].IsInMonth); + + ASSERT_EQ(17, MonthView.WeekList[2].DayList[4].Day); + ASSERT_EQ(6, MonthView.WeekList[2].DayList[4].Month); + ASSERT_EQ(2016, MonthView.WeekList[2].DayList[4].Year); + ASSERT_EQ(true, MonthView.WeekList[2].DayList[4].IsInMonth); + + ASSERT_EQ(18, MonthView.WeekList[2].DayList[5].Day); + ASSERT_EQ(6, MonthView.WeekList[2].DayList[5].Month); + ASSERT_EQ(2016, MonthView.WeekList[2].DayList[5].Year); + ASSERT_EQ(true, MonthView.WeekList[2].DayList[5].IsInMonth); + + ASSERT_EQ(19, MonthView.WeekList[2].DayList[6].Day); + ASSERT_EQ(6, MonthView.WeekList[2].DayList[6].Month); + ASSERT_EQ(2016, MonthView.WeekList[2].DayList[6].Year); + ASSERT_EQ(true, MonthView.WeekList[2].DayList[6].IsInMonth); + + // Fourth week. + + ASSERT_EQ(20, MonthView.WeekList[3].DayList[0].Day); + ASSERT_EQ(6, MonthView.WeekList[3].DayList[0].Month); + ASSERT_EQ(2016, MonthView.WeekList[3].DayList[0].Year); + ASSERT_EQ(true, MonthView.WeekList[3].DayList[0].IsInMonth); + + ASSERT_EQ(21, MonthView.WeekList[3].DayList[1].Day); + ASSERT_EQ(6, MonthView.WeekList[3].DayList[1].Month); + ASSERT_EQ(2016, MonthView.WeekList[3].DayList[1].Year); + ASSERT_EQ(true, MonthView.WeekList[3].DayList[1].IsInMonth); + + ASSERT_EQ(22, MonthView.WeekList[3].DayList[2].Day); + ASSERT_EQ(6, MonthView.WeekList[3].DayList[2].Month); + ASSERT_EQ(2016, MonthView.WeekList[3].DayList[2].Year); + ASSERT_EQ(true, MonthView.WeekList[3].DayList[2].IsInMonth); + + ASSERT_EQ(23, MonthView.WeekList[3].DayList[3].Day); + ASSERT_EQ(6, MonthView.WeekList[3].DayList[3].Month); + ASSERT_EQ(2016, MonthView.WeekList[3].DayList[3].Year); + ASSERT_EQ(true, MonthView.WeekList[3].DayList[3].IsInMonth); + + ASSERT_EQ(24, MonthView.WeekList[3].DayList[4].Day); + ASSERT_EQ(6, MonthView.WeekList[3].DayList[4].Month); + ASSERT_EQ(2016, MonthView.WeekList[3].DayList[4].Year); + ASSERT_EQ(true, MonthView.WeekList[3].DayList[4].IsInMonth); + + ASSERT_EQ(25, MonthView.WeekList[3].DayList[5].Day); + ASSERT_EQ(6, MonthView.WeekList[3].DayList[5].Month); + ASSERT_EQ(2016, MonthView.WeekList[3].DayList[5].Year); + ASSERT_EQ(true, MonthView.WeekList[3].DayList[5].IsInMonth); + + ASSERT_EQ(26, MonthView.WeekList[3].DayList[6].Day); + ASSERT_EQ(6, MonthView.WeekList[3].DayList[6].Month); + ASSERT_EQ(2016, MonthView.WeekList[3].DayList[6].Year); + ASSERT_EQ(true, MonthView.WeekList[3].DayList[6].IsInMonth); + + // Fifth week. + + ASSERT_EQ(27, MonthView.WeekList[4].DayList[0].Day); + ASSERT_EQ(6, MonthView.WeekList[4].DayList[0].Month); + ASSERT_EQ(2016, MonthView.WeekList[4].DayList[0].Year); + ASSERT_EQ(true, MonthView.WeekList[4].DayList[0].IsInMonth); + + ASSERT_EQ(28, MonthView.WeekList[4].DayList[1].Day); + ASSERT_EQ(6, MonthView.WeekList[4].DayList[1].Month); + ASSERT_EQ(2016, MonthView.WeekList[4].DayList[1].Year); + ASSERT_EQ(true, MonthView.WeekList[4].DayList[1].IsInMonth); + + ASSERT_EQ(29, MonthView.WeekList[4].DayList[2].Day); + ASSERT_EQ(6, MonthView.WeekList[4].DayList[2].Month); + ASSERT_EQ(2016, MonthView.WeekList[4].DayList[2].Year); + ASSERT_EQ(true, MonthView.WeekList[4].DayList[2].IsInMonth); + + ASSERT_EQ(30, MonthView.WeekList[4].DayList[3].Day); + ASSERT_EQ(6, MonthView.WeekList[4].DayList[3].Month); + ASSERT_EQ(2016, MonthView.WeekList[4].DayList[3].Year); + ASSERT_EQ(true, MonthView.WeekList[4].DayList[3].IsInMonth); + + ASSERT_EQ(1, MonthView.WeekList[4].DayList[4].Day); + ASSERT_EQ(7, MonthView.WeekList[4].DayList[4].Month); + ASSERT_EQ(2016, MonthView.WeekList[4].DayList[4].Year); + ASSERT_EQ(false, MonthView.WeekList[4].DayList[4].IsInMonth); + + ASSERT_EQ(2, MonthView.WeekList[4].DayList[5].Day); + ASSERT_EQ(7, MonthView.WeekList[4].DayList[5].Month); + ASSERT_EQ(2016, MonthView.WeekList[4].DayList[5].Year); + ASSERT_EQ(false, MonthView.WeekList[4].DayList[5].IsInMonth); + + ASSERT_EQ(3, MonthView.WeekList[4].DayList[6].Day); + ASSERT_EQ(7, MonthView.WeekList[4].DayList[6].Month); + ASSERT_EQ(2016, MonthView.WeekList[4].DayList[6].Year); + ASSERT_EQ(false, MonthView.WeekList[4].DayList[6].IsInMonth); + + // Test February 2016 (leap year). + + MonthView = GenerateMonthGrid(2, 2016); + + // First week. + + ASSERT_EQ(1, MonthView.WeekList[0].DayList[0].Day); + ASSERT_EQ(2, MonthView.WeekList[0].DayList[0].Month); + ASSERT_EQ(2016, MonthView.WeekList[0].DayList[0].Year); + ASSERT_EQ(true, MonthView.WeekList[0].DayList[0].IsInMonth); + + ASSERT_EQ(2, MonthView.WeekList[0].DayList[1].Day); + ASSERT_EQ(2, MonthView.WeekList[0].DayList[1].Month); + ASSERT_EQ(2016, MonthView.WeekList[0].DayList[1].Year); + ASSERT_EQ(true, MonthView.WeekList[0].DayList[1].IsInMonth); + + ASSERT_EQ(3, MonthView.WeekList[0].DayList[2].Day); + ASSERT_EQ(2, MonthView.WeekList[0].DayList[2].Month); + ASSERT_EQ(2016, MonthView.WeekList[0].DayList[2].Year); + ASSERT_EQ(true, MonthView.WeekList[0].DayList[2].IsInMonth); + + ASSERT_EQ(4, MonthView.WeekList[0].DayList[3].Day); + ASSERT_EQ(2, MonthView.WeekList[0].DayList[3].Month); + ASSERT_EQ(2016, MonthView.WeekList[0].DayList[3].Year); + ASSERT_EQ(true, MonthView.WeekList[0].DayList[3].IsInMonth); + + ASSERT_EQ(5, MonthView.WeekList[0].DayList[4].Day); + ASSERT_EQ(2, MonthView.WeekList[0].DayList[4].Month); + ASSERT_EQ(2016, MonthView.WeekList[0].DayList[4].Year); + ASSERT_EQ(true, MonthView.WeekList[0].DayList[4].IsInMonth); + + ASSERT_EQ(6, MonthView.WeekList[0].DayList[5].Day); + ASSERT_EQ(2, MonthView.WeekList[0].DayList[5].Month); + ASSERT_EQ(2016, MonthView.WeekList[0].DayList[5].Year); + ASSERT_EQ(true, MonthView.WeekList[0].DayList[5].IsInMonth); + + ASSERT_EQ(7, MonthView.WeekList[0].DayList[6].Day); + ASSERT_EQ(2, MonthView.WeekList[0].DayList[6].Month); + ASSERT_EQ(2016, MonthView.WeekList[0].DayList[6].Year); + ASSERT_EQ(true, MonthView.WeekList[0].DayList[6].IsInMonth); + + // Second week. + + ASSERT_EQ(8, MonthView.WeekList[1].DayList[0].Day); + ASSERT_EQ(2, MonthView.WeekList[1].DayList[0].Month); + ASSERT_EQ(2016, MonthView.WeekList[1].DayList[0].Year); + ASSERT_EQ(true, MonthView.WeekList[1].DayList[0].IsInMonth); + + ASSERT_EQ(9, MonthView.WeekList[1].DayList[1].Day); + ASSERT_EQ(2, MonthView.WeekList[1].DayList[1].Month); + ASSERT_EQ(2016, MonthView.WeekList[1].DayList[1].Year); + ASSERT_EQ(true, MonthView.WeekList[1].DayList[1].IsInMonth); + + ASSERT_EQ(10, MonthView.WeekList[1].DayList[2].Day); + ASSERT_EQ(2, MonthView.WeekList[1].DayList[2].Month); + ASSERT_EQ(2016, MonthView.WeekList[1].DayList[2].Year); + ASSERT_EQ(true, MonthView.WeekList[1].DayList[2].IsInMonth); + + ASSERT_EQ(11, MonthView.WeekList[1].DayList[3].Day); + ASSERT_EQ(2, MonthView.WeekList[1].DayList[3].Month); + ASSERT_EQ(2016, MonthView.WeekList[1].DayList[3].Year); + ASSERT_EQ(true, MonthView.WeekList[1].DayList[3].IsInMonth); + + ASSERT_EQ(12, MonthView.WeekList[1].DayList[4].Day); + ASSERT_EQ(2, MonthView.WeekList[1].DayList[4].Month); + ASSERT_EQ(2016, MonthView.WeekList[1].DayList[4].Year); + ASSERT_EQ(true, MonthView.WeekList[1].DayList[4].IsInMonth); + + ASSERT_EQ(13, MonthView.WeekList[1].DayList[5].Day); + ASSERT_EQ(2, MonthView.WeekList[1].DayList[5].Month); + ASSERT_EQ(2016, MonthView.WeekList[1].DayList[5].Year); + ASSERT_EQ(true, MonthView.WeekList[1].DayList[5].IsInMonth); + + ASSERT_EQ(14, MonthView.WeekList[1].DayList[6].Day); + ASSERT_EQ(2, MonthView.WeekList[1].DayList[6].Month); + ASSERT_EQ(2016, MonthView.WeekList[1].DayList[6].Year); + ASSERT_EQ(true, MonthView.WeekList[1].DayList[6].IsInMonth); + + // Third Week. + + ASSERT_EQ(15, MonthView.WeekList[2].DayList[0].Day); + ASSERT_EQ(2, MonthView.WeekList[2].DayList[0].Month); + ASSERT_EQ(2016, MonthView.WeekList[2].DayList[0].Year); + ASSERT_EQ(true, MonthView.WeekList[2].DayList[0].IsInMonth); + + ASSERT_EQ(16, MonthView.WeekList[2].DayList[1].Day); + ASSERT_EQ(2, MonthView.WeekList[2].DayList[1].Month); + ASSERT_EQ(2016, MonthView.WeekList[2].DayList[1].Year); + ASSERT_EQ(true, MonthView.WeekList[2].DayList[1].IsInMonth); + + ASSERT_EQ(17, MonthView.WeekList[2].DayList[2].Day); + ASSERT_EQ(2, MonthView.WeekList[2].DayList[2].Month); + ASSERT_EQ(2016, MonthView.WeekList[2].DayList[2].Year); + ASSERT_EQ(true, MonthView.WeekList[2].DayList[2].IsInMonth); + + ASSERT_EQ(18, MonthView.WeekList[2].DayList[3].Day); + ASSERT_EQ(2, MonthView.WeekList[2].DayList[3].Month); + ASSERT_EQ(2016, MonthView.WeekList[2].DayList[3].Year); + ASSERT_EQ(true, MonthView.WeekList[2].DayList[3].IsInMonth); + + ASSERT_EQ(19, MonthView.WeekList[2].DayList[4].Day); + ASSERT_EQ(2, MonthView.WeekList[2].DayList[4].Month); + ASSERT_EQ(2016, MonthView.WeekList[2].DayList[4].Year); + ASSERT_EQ(true, MonthView.WeekList[2].DayList[4].IsInMonth); + + ASSERT_EQ(20, MonthView.WeekList[2].DayList[5].Day); + ASSERT_EQ(2, MonthView.WeekList[2].DayList[5].Month); + ASSERT_EQ(2016, MonthView.WeekList[2].DayList[5].Year); + ASSERT_EQ(true, MonthView.WeekList[2].DayList[5].IsInMonth); + + ASSERT_EQ(21, MonthView.WeekList[2].DayList[6].Day); + ASSERT_EQ(2, MonthView.WeekList[2].DayList[6].Month); + ASSERT_EQ(2016, MonthView.WeekList[2].DayList[6].Year); + ASSERT_EQ(true, MonthView.WeekList[2].DayList[6].IsInMonth); + + // Fourth week. + + ASSERT_EQ(22, MonthView.WeekList[3].DayList[0].Day); + ASSERT_EQ(2, MonthView.WeekList[3].DayList[0].Month); + ASSERT_EQ(2016, MonthView.WeekList[3].DayList[0].Year); + ASSERT_EQ(true, MonthView.WeekList[3].DayList[0].IsInMonth); + + ASSERT_EQ(23, MonthView.WeekList[3].DayList[1].Day); + ASSERT_EQ(2, MonthView.WeekList[3].DayList[1].Month); + ASSERT_EQ(2016, MonthView.WeekList[3].DayList[1].Year); + ASSERT_EQ(true, MonthView.WeekList[3].DayList[1].IsInMonth); + + ASSERT_EQ(24, MonthView.WeekList[3].DayList[2].Day); + ASSERT_EQ(2, MonthView.WeekList[3].DayList[2].Month); + ASSERT_EQ(2016, MonthView.WeekList[3].DayList[2].Year); + ASSERT_EQ(true, MonthView.WeekList[3].DayList[2].IsInMonth); + + ASSERT_EQ(25, MonthView.WeekList[3].DayList[3].Day); + ASSERT_EQ(2, MonthView.WeekList[3].DayList[3].Month); + ASSERT_EQ(2016, MonthView.WeekList[3].DayList[3].Year); + ASSERT_EQ(true, MonthView.WeekList[3].DayList[3].IsInMonth); + + ASSERT_EQ(26, MonthView.WeekList[3].DayList[4].Day); + ASSERT_EQ(2, MonthView.WeekList[3].DayList[4].Month); + ASSERT_EQ(2016, MonthView.WeekList[3].DayList[4].Year); + ASSERT_EQ(true, MonthView.WeekList[3].DayList[4].IsInMonth); + + ASSERT_EQ(27, MonthView.WeekList[3].DayList[5].Day); + ASSERT_EQ(2, MonthView.WeekList[3].DayList[5].Month); + ASSERT_EQ(2016, MonthView.WeekList[3].DayList[5].Year); + ASSERT_EQ(true, MonthView.WeekList[3].DayList[5].IsInMonth); + + ASSERT_EQ(28, MonthView.WeekList[3].DayList[6].Day); + ASSERT_EQ(2, MonthView.WeekList[3].DayList[6].Month); + ASSERT_EQ(2016, MonthView.WeekList[3].DayList[6].Year); + ASSERT_EQ(true, MonthView.WeekList[3].DayList[6].IsInMonth); + + // Fifth week. + + ASSERT_EQ(29, MonthView.WeekList[4].DayList[0].Day); + ASSERT_EQ(2, MonthView.WeekList[4].DayList[0].Month); + ASSERT_EQ(2016, MonthView.WeekList[4].DayList[0].Year); + ASSERT_EQ(true, MonthView.WeekList[4].DayList[0].IsInMonth); + + ASSERT_EQ(1, MonthView.WeekList[4].DayList[1].Day); + ASSERT_EQ(3, MonthView.WeekList[4].DayList[1].Month); + ASSERT_EQ(2016, MonthView.WeekList[4].DayList[1].Year); + ASSERT_EQ(false, MonthView.WeekList[4].DayList[1].IsInMonth); + + ASSERT_EQ(2, MonthView.WeekList[4].DayList[2].Day); + ASSERT_EQ(3, MonthView.WeekList[4].DayList[2].Month); + ASSERT_EQ(2016, MonthView.WeekList[4].DayList[2].Year); + ASSERT_EQ(false, MonthView.WeekList[4].DayList[2].IsInMonth); + + ASSERT_EQ(3, MonthView.WeekList[4].DayList[3].Day); + ASSERT_EQ(3, MonthView.WeekList[4].DayList[3].Month); + ASSERT_EQ(2016, MonthView.WeekList[4].DayList[3].Year); + ASSERT_EQ(false, MonthView.WeekList[4].DayList[3].IsInMonth); + + ASSERT_EQ(4, MonthView.WeekList[4].DayList[4].Day); + ASSERT_EQ(3, MonthView.WeekList[4].DayList[4].Month); + ASSERT_EQ(2016, MonthView.WeekList[4].DayList[4].Year); + ASSERT_EQ(false, MonthView.WeekList[4].DayList[4].IsInMonth); + + ASSERT_EQ(5, MonthView.WeekList[4].DayList[5].Day); + ASSERT_EQ(3, MonthView.WeekList[4].DayList[5].Month); + ASSERT_EQ(2016, MonthView.WeekList[4].DayList[5].Year); + ASSERT_EQ(false, MonthView.WeekList[4].DayList[5].IsInMonth); + + ASSERT_EQ(6, MonthView.WeekList[4].DayList[6].Day); + ASSERT_EQ(3, MonthView.WeekList[4].DayList[6].Month); + ASSERT_EQ(2016, MonthView.WeekList[4].DayList[6].Year); + ASSERT_EQ(false, MonthView.WeekList[4].DayList[6].IsInMonth); + + // Generate a month grid for February 2100 (not a leap year). + + MonthView = GenerateMonthGrid(2, 2100); + + // First week. + + ASSERT_EQ(4, MonthView.WeekList.size()); + + ASSERT_EQ(1, MonthView.WeekList[0].DayList[0].Day); + ASSERT_EQ(2, MonthView.WeekList[0].DayList[0].Month); + ASSERT_EQ(2100, MonthView.WeekList[0].DayList[0].Year); + ASSERT_EQ(true, MonthView.WeekList[0].DayList[0].IsInMonth); + + ASSERT_EQ(2, MonthView.WeekList[0].DayList[1].Day); + ASSERT_EQ(2, MonthView.WeekList[0].DayList[1].Month); + ASSERT_EQ(2100, MonthView.WeekList[0].DayList[1].Year); + ASSERT_EQ(true, MonthView.WeekList[0].DayList[1].IsInMonth); + + ASSERT_EQ(3, MonthView.WeekList[0].DayList[2].Day); + ASSERT_EQ(2, MonthView.WeekList[0].DayList[2].Month); + ASSERT_EQ(2100, MonthView.WeekList[0].DayList[2].Year); + ASSERT_EQ(true, MonthView.WeekList[0].DayList[2].IsInMonth); + + ASSERT_EQ(4, MonthView.WeekList[0].DayList[3].Day); + ASSERT_EQ(2, MonthView.WeekList[0].DayList[3].Month); + ASSERT_EQ(2100, MonthView.WeekList[0].DayList[3].Year); + ASSERT_EQ(true, MonthView.WeekList[0].DayList[3].IsInMonth); + + ASSERT_EQ(5, MonthView.WeekList[0].DayList[4].Day); + ASSERT_EQ(2, MonthView.WeekList[0].DayList[4].Month); + ASSERT_EQ(2100, MonthView.WeekList[0].DayList[4].Year); + ASSERT_EQ(true, MonthView.WeekList[0].DayList[4].IsInMonth); + + ASSERT_EQ(6, MonthView.WeekList[0].DayList[5].Day); + ASSERT_EQ(2, MonthView.WeekList[0].DayList[5].Month); + ASSERT_EQ(2100, MonthView.WeekList[0].DayList[5].Year); + ASSERT_EQ(true, MonthView.WeekList[0].DayList[5].IsInMonth); + + ASSERT_EQ(7, MonthView.WeekList[0].DayList[6].Day); + ASSERT_EQ(2, MonthView.WeekList[0].DayList[6].Month); + ASSERT_EQ(2100, MonthView.WeekList[0].DayList[6].Year); + ASSERT_EQ(true, MonthView.WeekList[0].DayList[6].IsInMonth); + + // Second week. + + ASSERT_EQ(8, MonthView.WeekList[1].DayList[0].Day); + ASSERT_EQ(2, MonthView.WeekList[1].DayList[0].Month); + ASSERT_EQ(2100, MonthView.WeekList[1].DayList[0].Year); + ASSERT_EQ(true, MonthView.WeekList[1].DayList[0].IsInMonth); + + ASSERT_EQ(9, MonthView.WeekList[1].DayList[1].Day); + ASSERT_EQ(2, MonthView.WeekList[1].DayList[1].Month); + ASSERT_EQ(2100, MonthView.WeekList[1].DayList[1].Year); + ASSERT_EQ(true, MonthView.WeekList[1].DayList[1].IsInMonth); + + ASSERT_EQ(10, MonthView.WeekList[1].DayList[2].Day); + ASSERT_EQ(2, MonthView.WeekList[1].DayList[2].Month); + ASSERT_EQ(2100, MonthView.WeekList[1].DayList[2].Year); + ASSERT_EQ(true, MonthView.WeekList[1].DayList[2].IsInMonth); + + ASSERT_EQ(11, MonthView.WeekList[1].DayList[3].Day); + ASSERT_EQ(2, MonthView.WeekList[1].DayList[3].Month); + ASSERT_EQ(2100, MonthView.WeekList[1].DayList[3].Year); + ASSERT_EQ(true, MonthView.WeekList[1].DayList[3].IsInMonth); + + ASSERT_EQ(12, MonthView.WeekList[1].DayList[4].Day); + ASSERT_EQ(2, MonthView.WeekList[1].DayList[4].Month); + ASSERT_EQ(2100, MonthView.WeekList[1].DayList[4].Year); + ASSERT_EQ(true, MonthView.WeekList[1].DayList[4].IsInMonth); + + ASSERT_EQ(13, MonthView.WeekList[1].DayList[5].Day); + ASSERT_EQ(2, MonthView.WeekList[1].DayList[5].Month); + ASSERT_EQ(2100, MonthView.WeekList[1].DayList[5].Year); + ASSERT_EQ(true, MonthView.WeekList[1].DayList[5].IsInMonth); + + ASSERT_EQ(14, MonthView.WeekList[1].DayList[6].Day); + ASSERT_EQ(2, MonthView.WeekList[1].DayList[6].Month); + ASSERT_EQ(2100, MonthView.WeekList[1].DayList[6].Year); + ASSERT_EQ(true, MonthView.WeekList[1].DayList[6].IsInMonth); + + // Third Week. + + ASSERT_EQ(15, MonthView.WeekList[2].DayList[0].Day); + ASSERT_EQ(2, MonthView.WeekList[2].DayList[0].Month); + ASSERT_EQ(2100, MonthView.WeekList[2].DayList[0].Year); + ASSERT_EQ(true, MonthView.WeekList[2].DayList[0].IsInMonth); + + ASSERT_EQ(16, MonthView.WeekList[2].DayList[1].Day); + ASSERT_EQ(2, MonthView.WeekList[2].DayList[1].Month); + ASSERT_EQ(2100, MonthView.WeekList[2].DayList[1].Year); + ASSERT_EQ(true, MonthView.WeekList[2].DayList[1].IsInMonth); + + ASSERT_EQ(17, MonthView.WeekList[2].DayList[2].Day); + ASSERT_EQ(2, MonthView.WeekList[2].DayList[2].Month); + ASSERT_EQ(2100, MonthView.WeekList[2].DayList[2].Year); + ASSERT_EQ(true, MonthView.WeekList[2].DayList[2].IsInMonth); + + ASSERT_EQ(18, MonthView.WeekList[2].DayList[3].Day); + ASSERT_EQ(2, MonthView.WeekList[2].DayList[3].Month); + ASSERT_EQ(2100, MonthView.WeekList[2].DayList[3].Year); + ASSERT_EQ(true, MonthView.WeekList[2].DayList[3].IsInMonth); + + ASSERT_EQ(19, MonthView.WeekList[2].DayList[4].Day); + ASSERT_EQ(2, MonthView.WeekList[2].DayList[4].Month); + ASSERT_EQ(2100, MonthView.WeekList[2].DayList[4].Year); + ASSERT_EQ(true, MonthView.WeekList[2].DayList[4].IsInMonth); + + ASSERT_EQ(20, MonthView.WeekList[2].DayList[5].Day); + ASSERT_EQ(2, MonthView.WeekList[2].DayList[5].Month); + ASSERT_EQ(2100, MonthView.WeekList[2].DayList[5].Year); + ASSERT_EQ(true, MonthView.WeekList[2].DayList[5].IsInMonth); + + ASSERT_EQ(21, MonthView.WeekList[2].DayList[6].Day); + ASSERT_EQ(2, MonthView.WeekList[2].DayList[6].Month); + ASSERT_EQ(2100, MonthView.WeekList[2].DayList[6].Year); + ASSERT_EQ(true, MonthView.WeekList[2].DayList[6].IsInMonth); + + // Fourth week. + + ASSERT_EQ(22, MonthView.WeekList[3].DayList[0].Day); + ASSERT_EQ(2, MonthView.WeekList[3].DayList[0].Month); + ASSERT_EQ(2100, MonthView.WeekList[3].DayList[0].Year); + ASSERT_EQ(true, MonthView.WeekList[3].DayList[0].IsInMonth); + + ASSERT_EQ(23, MonthView.WeekList[3].DayList[1].Day); + ASSERT_EQ(2, MonthView.WeekList[3].DayList[1].Month); + ASSERT_EQ(2100, MonthView.WeekList[3].DayList[1].Year); + ASSERT_EQ(true, MonthView.WeekList[3].DayList[1].IsInMonth); + + ASSERT_EQ(24, MonthView.WeekList[3].DayList[2].Day); + ASSERT_EQ(2, MonthView.WeekList[3].DayList[2].Month); + ASSERT_EQ(2100, MonthView.WeekList[3].DayList[2].Year); + ASSERT_EQ(true, MonthView.WeekList[3].DayList[2].IsInMonth); + + ASSERT_EQ(25, MonthView.WeekList[3].DayList[3].Day); + ASSERT_EQ(2, MonthView.WeekList[3].DayList[3].Month); + ASSERT_EQ(2100, MonthView.WeekList[3].DayList[3].Year); + ASSERT_EQ(true, MonthView.WeekList[3].DayList[3].IsInMonth); + + ASSERT_EQ(26, MonthView.WeekList[3].DayList[4].Day); + ASSERT_EQ(2, MonthView.WeekList[3].DayList[4].Month); + ASSERT_EQ(2100, MonthView.WeekList[3].DayList[4].Year); + ASSERT_EQ(true, MonthView.WeekList[3].DayList[4].IsInMonth); + + ASSERT_EQ(27, MonthView.WeekList[3].DayList[5].Day); + ASSERT_EQ(2, MonthView.WeekList[3].DayList[5].Month); + ASSERT_EQ(2100, MonthView.WeekList[3].DayList[5].Year); + ASSERT_EQ(true, MonthView.WeekList[3].DayList[5].IsInMonth); + + ASSERT_EQ(28, MonthView.WeekList[3].DayList[6].Day); + ASSERT_EQ(2, MonthView.WeekList[3].DayList[6].Month); + ASSERT_EQ(2100, MonthView.WeekList[3].DayList[6].Year); + ASSERT_EQ(true, MonthView.WeekList[3].DayList[6].IsInMonth); + } \ No newline at end of file