Issue #9051: Added tests for pickling and copying the timezone objects.

This commit is contained in:
Serhiy Storchaka 2015-11-16 11:20:17 +02:00
commit 51eca24748
1 changed files with 28 additions and 1 deletions

View File

@ -3,6 +3,7 @@
See http://www.zope.org/Members/fdrake/DateTimeWiki/TestCases See http://www.zope.org/Members/fdrake/DateTimeWiki/TestCases
""" """
import copy
import decimal import decimal
import sys import sys
import pickle import pickle
@ -235,7 +236,6 @@ class TestTimeZone(unittest.TestCase):
tzrep = repr(tz) tzrep = repr(tz)
self.assertEqual(tz, eval(tzrep)) self.assertEqual(tz, eval(tzrep))
def test_class_members(self): def test_class_members(self):
limit = timedelta(hours=23, minutes=59) limit = timedelta(hours=23, minutes=59)
self.assertEqual(timezone.utc.utcoffset(None), ZERO) self.assertEqual(timezone.utc.utcoffset(None), ZERO)
@ -323,6 +323,33 @@ class TestTimeZone(unittest.TestCase):
self.assertEqual(tz.dst(t), self.assertEqual(tz.dst(t),
t.replace(tzinfo=tz).dst()) t.replace(tzinfo=tz).dst())
def test_pickle(self):
for tz in self.ACDT, self.EST, timezone.min, timezone.max:
for pickler, unpickler, proto in pickle_choices:
tz_copy = unpickler.loads(pickler.dumps(tz, proto))
self.assertEqual(tz_copy, tz)
tz = timezone.utc
for pickler, unpickler, proto in pickle_choices:
tz_copy = unpickler.loads(pickler.dumps(tz, proto))
self.assertIs(tz_copy, tz)
def test_copy(self):
for tz in self.ACDT, self.EST, timezone.min, timezone.max:
tz_copy = copy.copy(tz)
self.assertEqual(tz_copy, tz)
tz = timezone.utc
tz_copy = copy.copy(tz)
self.assertIs(tz_copy, tz)
def test_deepcopy(self):
for tz in self.ACDT, self.EST, timezone.min, timezone.max:
tz_copy = copy.deepcopy(tz)
self.assertEqual(tz_copy, tz)
tz = timezone.utc
tz_copy = copy.deepcopy(tz)
self.assertIs(tz_copy, tz)
############################################################################# #############################################################################
# Base class for testing a particular aspect of timedelta, time, date and # Base class for testing a particular aspect of timedelta, time, date and
# datetime comparisons. # datetime comparisons.