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 @@
 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 @@
     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 @@
     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
