blob: 24052b5a1339828b8fc7f4412aff118345b1a50d [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
Guido van Rossum9d32bb12003-01-28 03:51:53 +000021 def dumps(self, arg, proto=0):
Jeremy Hylton66426532001-10-15 21:38:56 +000022 f = StringIO()
Guido van Rossum9d32bb12003-01-28 03:51:53 +000023 p = pickle.Pickler(f, proto)
Jeremy Hylton66426532001-10-15 21:38:56 +000024 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
Guido van Rossum9d32bb12003-01-28 03:51:53 +000035 def dumps(self, arg, proto=0):
Jeremy Hylton5e0f4e72002-11-13 22:01:27 +000036 class PersPickler(pickle.Pickler):
37 def persistent_id(subself, obj):
38 return self.persistent_id(obj)
39 f = StringIO()
Guido van Rossum9d32bb12003-01-28 03:51:53 +000040 p = PersPickler(f, proto)
Jeremy Hylton5e0f4e72002-11-13 22:01:27 +000041 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()