mirror of
https://github.com/python/cpython.git
synced 2025-08-31 14:07:50 +00:00
Add tests that check the result of calendar.monthcalendar() for a set
of corner cases.
This commit is contained in:
parent
0a4dd390bf
commit
59ad45689b
1 changed files with 79 additions and 1 deletions
|
@ -54,8 +54,86 @@ class CalendarTestCase(unittest.TestCase):
|
|||
d[v] = 1
|
||||
self.assertEqual(len(d), 13)
|
||||
|
||||
|
||||
class MonthCalendarTestCase(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.oldfirstweekday = calendar.firstweekday()
|
||||
calendar.setfirstweekday(self.firstweekday)
|
||||
|
||||
def tearDown(self):
|
||||
calendar.setfirstweekday(self.oldfirstweekday)
|
||||
|
||||
def check_weeks(self, year, month, weeks):
|
||||
cal = calendar.monthcalendar(year, month)
|
||||
self.assertEqual(len(cal), len(weeks))
|
||||
for i in xrange(len(weeks)):
|
||||
self.assertEqual(weeks[i], sum(day != 0 for day in cal[i]))
|
||||
|
||||
|
||||
class MondayTestCase(MonthCalendarTestCase):
|
||||
firstweekday = calendar.MONDAY
|
||||
|
||||
def test_february(self):
|
||||
# A 28-day february starting of monday (7+7+7+7 days)
|
||||
self.check_weeks(1999, 2, (7, 7, 7, 7))
|
||||
|
||||
# A 28-day february starting of tuesday (6+7+7+7+1 days)
|
||||
self.check_weeks(2005, 2, (6, 7, 7, 7, 1))
|
||||
|
||||
# A 28-day february starting of sunday (1+7+7+7+6 days)
|
||||
self.check_weeks(1987, 2, (1, 7, 7, 7, 6))
|
||||
|
||||
# A 29-day february starting of monday (7+7+7+7+1 days)
|
||||
self.check_weeks(1988, 2, (7, 7, 7, 7, 1))
|
||||
|
||||
# A 29-day february starting of tuesday (6+7+7+7+2 days)
|
||||
self.check_weeks(1972, 2, (6, 7, 7, 7, 2))
|
||||
|
||||
# A 29-day february starting of sunday (1+7+7+7+7 days)
|
||||
self.check_weeks(2004, 2, (1, 7, 7, 7, 7))
|
||||
|
||||
def test_april(self):
|
||||
# A 30-day april starting of monday (7+7+7+7+2 days)
|
||||
self.check_weeks(1935, 4, (7, 7, 7, 7, 2))
|
||||
|
||||
# A 30-day april starting of tuesday (6+7+7+7+3 days)
|
||||
self.check_weeks(1975, 4, (6, 7, 7, 7, 3))
|
||||
|
||||
# A 30-day april starting of sunday (1+7+7+7+7+1 days)
|
||||
self.check_weeks(1945, 4, (1, 7, 7, 7, 7, 1))
|
||||
|
||||
# A 30-day april starting of saturday (2+7+7+7+7 days)
|
||||
self.check_weeks(1995, 4, (2, 7, 7, 7, 7))
|
||||
|
||||
# A 30-day april starting of friday (3+7+7+7+6 days)
|
||||
self.check_weeks(1994, 4, (3, 7, 7, 7, 6))
|
||||
|
||||
def test_december(self):
|
||||
# A 31-day december starting of monday (7+7+7+7+3 days)
|
||||
self.check_weeks(1980, 12, (7, 7, 7, 7, 3))
|
||||
|
||||
# A 31-day december starting of tuesday (6+7+7+7+4 days)
|
||||
self.check_weeks(1987, 12, (6, 7, 7, 7, 4))
|
||||
|
||||
# A 31-day december starting of sunday (1+7+7+7+7+2 days)
|
||||
self.check_weeks(1968, 12, (1, 7, 7, 7, 7, 2))
|
||||
|
||||
# A 31-day december starting of thursday (4+7+7+7+6 days)
|
||||
self.check_weeks(1988, 12, (4, 7, 7, 7, 6))
|
||||
|
||||
# A 31-day december starting of friday (3+7+7+7+7 days)
|
||||
self.check_weeks(2017, 12, (3, 7, 7, 7, 7))
|
||||
|
||||
# A 31-day december starting of saturday (2+7+7+7+7+1 days)
|
||||
self.check_weeks(2068, 12, (2, 7, 7, 7, 7, 1))
|
||||
|
||||
|
||||
def test_main():
|
||||
test_support.run_unittest(CalendarTestCase)
|
||||
test_support.run_unittest(
|
||||
CalendarTestCase,
|
||||
MondayTestCase
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_main()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue