summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_calendar.py
diff options
context:
space:
mode:
authorWalter Dörwald <walter@livinglogic.de>2006-03-31 15:26:22 (GMT)
committerWalter Dörwald <walter@livinglogic.de>2006-03-31 15:26:22 (GMT)
commit58917a608336e5eb316664c118aa721defe0b39d (patch)
tree85589ab401fa010237bb7c9daf655c990e06e771 /Lib/test/test_calendar.py
parent3f144f9fe07474b0086a96e49656a9e046936f57 (diff)
downloadcpython-58917a608336e5eb316664c118aa721defe0b39d.zip
cpython-58917a608336e5eb316664c118aa721defe0b39d.tar.gz
cpython-58917a608336e5eb316664c118aa721defe0b39d.tar.bz2
Bug #947906: An object oriented interface has been added to the calendar
module. It's possible to generate HTML calendar now and the module can be called as a script (e.g. via ``python -mcalendar``).
Diffstat (limited to 'Lib/test/test_calendar.py')
-rw-r--r--Lib/test/test_calendar.py127
1 files changed, 93 insertions, 34 deletions
diff --git a/Lib/test/test_calendar.py b/Lib/test/test_calendar.py
index 34d365b..bd8e6b4 100644
--- a/Lib/test/test_calendar.py
+++ b/Lib/test/test_calendar.py
@@ -4,6 +4,64 @@ import unittest
from test import test_support
+result_2004 = """
+ 2004
+
+ January February March
+Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
+ 1 2 3 4 1 1 2 3 4 5 6 7
+ 5 6 7 8 9 10 11 2 3 4 5 6 7 8 8 9 10 11 12 13 14
+12 13 14 15 16 17 18 9 10 11 12 13 14 15 15 16 17 18 19 20 21
+19 20 21 22 23 24 25 16 17 18 19 20 21 22 22 23 24 25 26 27 28
+26 27 28 29 30 31 23 24 25 26 27 28 29 29 30 31
+
+ April May June
+Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
+ 1 2 3 4 1 2 1 2 3 4 5 6
+ 5 6 7 8 9 10 11 3 4 5 6 7 8 9 7 8 9 10 11 12 13
+12 13 14 15 16 17 18 10 11 12 13 14 15 16 14 15 16 17 18 19 20
+19 20 21 22 23 24 25 17 18 19 20 21 22 23 21 22 23 24 25 26 27
+26 27 28 29 30 24 25 26 27 28 29 30 28 29 30
+ 31
+
+ July August September
+Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
+ 1 2 3 4 1 1 2 3 4 5
+ 5 6 7 8 9 10 11 2 3 4 5 6 7 8 6 7 8 9 10 11 12
+12 13 14 15 16 17 18 9 10 11 12 13 14 15 13 14 15 16 17 18 19
+19 20 21 22 23 24 25 16 17 18 19 20 21 22 20 21 22 23 24 25 26
+26 27 28 29 30 31 23 24 25 26 27 28 29 27 28 29 30
+ 30 31
+
+ October November December
+Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
+ 1 2 3 1 2 3 4 5 6 7 1 2 3 4 5
+ 4 5 6 7 8 9 10 8 9 10 11 12 13 14 6 7 8 9 10 11 12
+11 12 13 14 15 16 17 15 16 17 18 19 20 21 13 14 15 16 17 18 19
+18 19 20 21 22 23 24 22 23 24 25 26 27 28 20 21 22 23 24 25 26
+25 26 27 28 29 30 31 29 30 27 28 29 30 31
+"""
+
+
+class OutputTestCase(unittest.TestCase):
+ def normalize_calendar(self, s):
+ def neitherspacenordigit(c):
+ return not c.isspace() and not c.isdigit()
+
+ lines = []
+ for line in s.splitlines(False):
+ # Drop texts, as they are locale dependent
+ if line and not filter(neitherspacenordigit, line):
+ lines.append(line)
+ return lines
+
+ def test_output(self):
+ self.assertEqual(
+ self.normalize_calendar(calendar.calendar(2004)),
+ self.normalize_calendar(result_2004)
+ )
+
+
class CalendarTestCase(unittest.TestCase):
def test_isleap(self):
# Make sure that the return is right for a few years, and
@@ -72,57 +130,57 @@ class MondayTestCase(MonthCalendarTestCase):
firstweekday = calendar.MONDAY
def test_february(self):
- # A 28-day february starting of monday (7+7+7+7 days)
+ # A 28-day february starting on 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)
+ # A 28-day february starting on 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)
+ # A 28-day february starting on 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)
+ # A 29-day february starting on 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)
+ # A 29-day february starting on 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)
+ # A 29-day february starting on 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)
+ # A 30-day april starting on 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)
+ # A 30-day april starting on 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)
+ # A 30-day april starting on 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)
+ # A 30-day april starting on 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)
+ # A 30-day april starting on 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)
+ # A 31-day december starting on 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)
+ # A 31-day december starting on 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)
+ # A 31-day december starting on 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)
+ # A 31-day december starting on 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)
+ # A 31-day december starting on 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)
+ # A 31-day december starting on saturday (2+7+7+7+7+1 days)
self.check_weeks(2068, 12, (2, 7, 7, 7, 7, 1))
@@ -130,62 +188,63 @@ class SundayTestCase(MonthCalendarTestCase):
firstweekday = calendar.SUNDAY
def test_february(self):
- # A 28-day february starting of sunday (7+7+7+7 days)
+ # A 28-day february starting on sunday (7+7+7+7 days)
self.check_weeks(2009, 2, (7, 7, 7, 7))
- # A 28-day february starting of monday (6+7+7+7+1 days)
+ # A 28-day february starting on monday (6+7+7+7+1 days)
self.check_weeks(1999, 2, (6, 7, 7, 7, 1))
- # A 28-day february starting of saturday (1+7+7+7+6 days)
+ # A 28-day february starting on saturday (1+7+7+7+6 days)
self.check_weeks(1997, 2, (1, 7, 7, 7, 6))
- # A 29-day february starting of sunday (7+7+7+7+1 days)
+ # A 29-day february starting on sunday (7+7+7+7+1 days)
self.check_weeks(2004, 2, (7, 7, 7, 7, 1))
- # A 29-day february starting of monday (6+7+7+7+2 days)
+ # A 29-day february starting on monday (6+7+7+7+2 days)
self.check_weeks(1960, 2, (6, 7, 7, 7, 2))
- # A 29-day february starting of saturday (1+7+7+7+7 days)
+ # A 29-day february starting on saturday (1+7+7+7+7 days)
self.check_weeks(1964, 2, (1, 7, 7, 7, 7))
def test_april(self):
- # A 30-day april starting of sunday (7+7+7+7+2 days)
+ # A 30-day april starting on sunday (7+7+7+7+2 days)
self.check_weeks(1923, 4, (7, 7, 7, 7, 2))
- # A 30-day april starting of monday (6+7+7+7+3 days)
+ # A 30-day april starting on monday (6+7+7+7+3 days)
self.check_weeks(1918, 4, (6, 7, 7, 7, 3))
- # A 30-day april starting of saturday (1+7+7+7+7+1 days)
+ # A 30-day april starting on saturday (1+7+7+7+7+1 days)
self.check_weeks(1950, 4, (1, 7, 7, 7, 7, 1))
- # A 30-day april starting of friday (2+7+7+7+7 days)
+ # A 30-day april starting on friday (2+7+7+7+7 days)
self.check_weeks(1960, 4, (2, 7, 7, 7, 7))
- # A 30-day april starting of thursday (3+7+7+7+6 days)
+ # A 30-day april starting on thursday (3+7+7+7+6 days)
self.check_weeks(1909, 4, (3, 7, 7, 7, 6))
def test_december(self):
- # A 31-day december starting of sunday (7+7+7+7+3 days)
+ # A 31-day december starting on sunday (7+7+7+7+3 days)
self.check_weeks(2080, 12, (7, 7, 7, 7, 3))
- # A 31-day december starting of monday (6+7+7+7+4 days)
+ # A 31-day december starting on monday (6+7+7+7+4 days)
self.check_weeks(1941, 12, (6, 7, 7, 7, 4))
- # A 31-day december starting of saturday (1+7+7+7+7+2 days)
+ # A 31-day december starting on saturday (1+7+7+7+7+2 days)
self.check_weeks(1923, 12, (1, 7, 7, 7, 7, 2))
- # A 31-day december starting of wednesday (4+7+7+7+6 days)
+ # A 31-day december starting on wednesday (4+7+7+7+6 days)
self.check_weeks(1948, 12, (4, 7, 7, 7, 6))
- # A 31-day december starting of thursday (3+7+7+7+7 days)
+ # A 31-day december starting on thursday (3+7+7+7+7 days)
self.check_weeks(1927, 12, (3, 7, 7, 7, 7))
- # A 31-day december starting of friday (2+7+7+7+7+1 days)
+ # A 31-day december starting on friday (2+7+7+7+7+1 days)
self.check_weeks(1995, 12, (2, 7, 7, 7, 7, 1))
def test_main():
test_support.run_unittest(
+ OutputTestCase,
CalendarTestCase,
MondayTestCase,
SundayTestCase