// Full roundtrip for 1601-01-01 to 2400-12-31 // checks sequence of rata die numbers and validates date output // (since the input is all nominal days of the calendar in that range // and the result of the inverse calculation must match the input no // invalid output can occur.) void test_RoundTripDate() { struct calendar truDate, expDate = { 1600, 0, 12, 31 };; int32 truRdn, expRdn = ntpcal_date_to_rd(&expDate); int leaps; while (expDate.year < 2400) { expDate.year++; expDate.month = 0; expDate.yearday = 0; leaps = leapdays(expDate.year); while (expDate.month < 12) { expDate.month++; expDate.monthday = 0; while (expDate.monthday < real_month_days[leaps][expDate.month]) { expDate.monthday++; expDate.yearday++; expRdn++; truRdn = ntpcal_date_to_rd(&expDate); TEST_ASSERT_EQUAL(expRdn, truRdn); ntpcal_rd_to_date(&truDate, truRdn); TEST_ASSERT_TRUE(IsEqualDateCal(expDate, truDate)); } } } }
// Full roundtrip for 1601-01-01 to 2400-12-31 // checks sequence of rata die numbers and validates date output // (since the input is all nominal days of the calendar in that range // and the result of the inverse calculation must match the input no // invalid output can occur.) TEST_F(calendarTest, RoundTripDate) { calendar truDate, expDate = { 1600, 0, 12, 31 };; int32 truRdn, expRdn = ntpcal_date_to_rd(&expDate); int leaps; while (expDate.year < 2400) { expDate.year++; expDate.month = 0; expDate.yearday = 0; leaps = leapdays(expDate.year); while (expDate.month < 12) { expDate.month++; expDate.monthday = 0; while (expDate.monthday < real_month_days[leaps][expDate.month]) { expDate.monthday++; expDate.yearday++; expRdn++; truRdn = ntpcal_date_to_rd(&expDate); EXPECT_EQ(expRdn, truRdn); ntpcal_rd_to_date(&truDate, truRdn); EXPECT_TRUE(IsEqualDate(expDate, truDate)); } } } }
// check first day of march for first 10000 years void test_LeapYears2() { struct calendar dateIn, dateOut; for (dateIn.year = 1; dateIn.year < 10000; ++dateIn.year) { dateIn.month = 3; dateIn.monthday = 1; dateIn.yearday = 60 + leapdays(dateIn.year); ntpcal_rd_to_date(&dateOut, ntpcal_date_to_rd(&dateIn)); TEST_ASSERT_TRUE(IsEqualDateCal(dateIn, dateOut)); } }
// check first day of march for first 10000 years TEST_F(calendarTest, LeapYears2) { calendar dateIn, dateOut; for (dateIn.year = 1; dateIn.year < 10000; ++dateIn.year) { dateIn.month = 3; dateIn.monthday = 1; dateIn.yearday = 60 + leapdays(dateIn.year); ntpcal_rd_to_date(&dateOut, ntpcal_date_to_rd(&dateIn)); EXPECT_TRUE(IsEqualDate(dateIn, dateOut)); } }
/* check last day of february for first 10000 years */ void test_LeapYears1(void) { struct calendar dateIn, dateOut; for (dateIn.year = 1; dateIn.year < 10000; ++dateIn.year) { dateIn.month = 2; dateIn.monthday = 28 + leapdays(dateIn.year); dateIn.yearday = 31 + dateIn.monthday; ntpcal_rd_to_date(&dateOut, ntpcal_date_to_rd(&dateIn)); TEST_ASSERT_TRUE(IsEqualDateCal(&dateIn, &dateOut)); } return; }