64 lines
1.8 KiB
Python
64 lines
1.8 KiB
Python
|
import unittest
|
||
|
|
||
|
from six.moves import cPickle as pickle
|
||
|
|
||
|
import isodate
|
||
|
|
||
|
|
||
|
class TestPickle(unittest.TestCase):
|
||
|
'''
|
||
|
A test case template to parse an ISO datetime string into a
|
||
|
datetime object.
|
||
|
'''
|
||
|
|
||
|
def test_pickle_datetime(self):
|
||
|
'''
|
||
|
Parse an ISO datetime string and compare it to the expected value.
|
||
|
'''
|
||
|
dti = isodate.parse_datetime('2012-10-26T09:33+00:00')
|
||
|
for proto in range(0, pickle.HIGHEST_PROTOCOL + 1):
|
||
|
pikl = pickle.dumps(dti, proto)
|
||
|
self.assertEqual(dti, pickle.loads(pikl),
|
||
|
"pickle proto %d failed" % proto)
|
||
|
|
||
|
def test_pickle_duration(self):
|
||
|
'''
|
||
|
Pickle / unpickle duration objects.
|
||
|
'''
|
||
|
from isodate.duration import Duration
|
||
|
dur = Duration()
|
||
|
failed = []
|
||
|
for proto in range(0, pickle.HIGHEST_PROTOCOL + 1):
|
||
|
try:
|
||
|
pikl = pickle.dumps(dur, proto)
|
||
|
if dur != pickle.loads(pikl):
|
||
|
raise Exception("not equal")
|
||
|
except Exception as e:
|
||
|
failed.append("pickle proto %d failed (%s)" % (proto, repr(e)))
|
||
|
self.assertEqual(len(failed), 0, "pickle protos failed: %s" %
|
||
|
str(failed))
|
||
|
|
||
|
def test_pickle_utc(self):
|
||
|
'''
|
||
|
isodate.UTC objects remain the same after pickling.
|
||
|
'''
|
||
|
self.assertTrue(isodate.UTC is pickle.loads(pickle.dumps(isodate.UTC)))
|
||
|
|
||
|
|
||
|
def test_suite():
|
||
|
'''
|
||
|
Construct a TestSuite instance for all test cases.
|
||
|
'''
|
||
|
suite = unittest.TestSuite()
|
||
|
suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestPickle))
|
||
|
return suite
|
||
|
|
||
|
|
||
|
# load_tests Protocol
|
||
|
def load_tests(loader, tests, pattern):
|
||
|
return test_suite()
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
unittest.main(defaultTest='test_suite')
|