blob: d61f29ba0edadb4295cb0c68a2d8b34c99d821c8 [file] [log] [blame]
Jeremy Hyltonbe467e52000-09-15 15:14:51 +00001import pickle
Fred Drake694ed092001-12-19 16:42:15 +00002import unittest
Jeremy Hylton66426532001-10-15 21:38:56 +00003from cStringIO import StringIO
Jeremy Hylton5e0f4e72002-11-13 22:01:27 +00004from test.pickletester import AbstractPickleTests, AbstractPickleModuleTests, \
5 AbstractPersistentPicklerTests
Barry Warsaw04f357c2002-07-23 19:04:11 +00006from test import test_support
Jeremy Hylton66426532001-10-15 21:38:56 +00007
8class PickleTests(AbstractPickleTests, AbstractPickleModuleTests):
9
10 def setUp(self):
11 self.dumps = pickle.dumps
12 self.loads = pickle.loads
Tim Peterse0c446b2001-10-18 21:57:37 +000013
Jeremy Hylton66426532001-10-15 21:38:56 +000014 module = pickle
15 error = KeyError
16
17class PicklerTests(AbstractPickleTests):
18
19 error = KeyError
20
21 def dumps(self, arg, bin=0):
22 f = StringIO()
23 p = pickle.Pickler(f, bin)
24 p.dump(arg)
25 f.seek(0)
26 return f.read()
27
28 def loads(self, buf):
29 f = StringIO(buf)
30 u = pickle.Unpickler(f)
31 return u.load()
32
Jeremy Hylton5e0f4e72002-11-13 22:01:27 +000033class PersPicklerTests(AbstractPersistentPicklerTests):
34
35 def dumps(self, arg, bin=0):
36 class PersPickler(pickle.Pickler):
37 def persistent_id(subself, obj):
38 return self.persistent_id(obj)
39 f = StringIO()
40 p = PersPickler(f, bin)
41 p.dump(arg)
42 f.seek(0)
43 return f.read()
44
45 def loads(self, buf):
46 class PersUnpickler(pickle.Unpickler):
47 def persistent_load(subself, obj):
48 return self.persistent_load(obj)
49 f = StringIO(buf)
50 u = PersUnpickler(f)
51 return u.load()
52
Fred Drake694ed092001-12-19 16:42:15 +000053def test_main():
54 loader = unittest.TestLoader()
55 suite = unittest.TestSuite()
56 suite.addTest(loader.loadTestsFromTestCase(PickleTests))
57 suite.addTest(loader.loadTestsFromTestCase(PicklerTests))
Jeremy Hylton5e0f4e72002-11-13 22:01:27 +000058 suite.addTest(loader.loadTestsFromTestCase(PersPicklerTests))
Fred Drake694ed092001-12-19 16:42:15 +000059 test_support.run_suite(suite)
60
Jeremy Hylton66426532001-10-15 21:38:56 +000061if __name__ == "__main__":
Fred Drake694ed092001-12-19 16:42:15 +000062 test_main()