changeset: 99154:634905e9628d branch: 3.5 parent: 99151:3ae62099d70b parent: 99153:e48da8f01316 user: Serhiy Storchaka date: Mon Nov 16 11:19:31 2015 +0200 files: Lib/test/datetimetester.py description: Issue #9051: Added tests for pickling and copying the timezone objects. diff -r 3ae62099d70b -r 634905e9628d Lib/test/datetimetester.py --- a/Lib/test/datetimetester.py Sun Nov 15 21:57:39 2015 -0800 +++ b/Lib/test/datetimetester.py Mon Nov 16 11:19:31 2015 +0200 @@ -3,6 +3,7 @@ See http://www.zope.org/Members/fdrake/DateTimeWiki/TestCases """ +import copy import decimal import sys import pickle @@ -235,7 +236,6 @@ tzrep = repr(tz) self.assertEqual(tz, eval(tzrep)) - def test_class_members(self): limit = timedelta(hours=23, minutes=59) self.assertEqual(timezone.utc.utcoffset(None), ZERO) @@ -322,6 +322,33 @@ self.assertEqual(tz.dst(t), 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 # datetime comparisons.