Commit 4a19b20f authored by Alexander Belopolsky's avatar Alexander Belopolsky

Issue 6280: Tests and simpler implementation for calendar.timegm

parent ea1228ef
...@@ -587,17 +587,12 @@ def formatstring(cols, colwidth=_colwidth, spacing=_spacing): ...@@ -587,17 +587,12 @@ def formatstring(cols, colwidth=_colwidth, spacing=_spacing):
EPOCH = 1970 EPOCH = 1970
_EPOCH_ORD = datetime.date(EPOCH, 1, 1).toordinal() _EPOCH_DATETIME = datetime.datetime(EPOCH, 1, 1)
_SECOND = datetime.timedelta(seconds=1)
def timegm(tuple): def timegm(tuple):
"""Unrelated but handy function to calculate Unix timestamp from GMT.""" """Unrelated but handy function to calculate Unix timestamp from GMT."""
year, month, day, hour, minute, second = tuple[:6] return (datetime.datetime(*tuple[:6]) - _EPOCH_DATETIME) // _SECOND
days = datetime.date(year, month, 1).toordinal() - _EPOCH_ORD + day - 1
hours = days*24 + hour
minutes = hours*60 + minute
seconds = minutes*60 + second
return seconds
def main(args): def main(args):
......
...@@ -2,7 +2,7 @@ import calendar ...@@ -2,7 +2,7 @@ import calendar
import unittest import unittest
from test import support from test import support
import time
result_2004_text = """ result_2004_text = """
2004 2004
...@@ -381,13 +381,21 @@ class SundayTestCase(MonthCalendarTestCase): ...@@ -381,13 +381,21 @@ class SundayTestCase(MonthCalendarTestCase):
# A 31-day december starting on 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)) self.check_weeks(1995, 12, (2, 7, 7, 7, 7, 1))
class TimegmTestCase(unittest.TestCase):
TIMESTAMPS = [0, 10, 100, 1000, 10000, 100000, 1000000,
1234567890, 1262304000, 1275785153,]
def test_timegm(self):
for secs in self.TIMESTAMPS:
tuple = time.gmtime(secs)
self.assertEqual(secs, calendar.timegm(tuple))
def test_main(): def test_main():
support.run_unittest( support.run_unittest(
OutputTestCase, OutputTestCase,
CalendarTestCase, CalendarTestCase,
MondayTestCase, MondayTestCase,
SundayTestCase SundayTestCase,
TimegmTestCase,
) )
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment