blob: d30e0848e14c8e8f3ffe679a114ae594520d7244 [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
Tim Peters47a6b132003-01-28 22:34:11 +00004
Barry Warsaw04f357c2002-07-23 19:04:11 +00005from test import test_support
Jeremy Hylton66426532001-10-15 21:38:56 +00006
Tim Peters47a6b132003-01-28 22:34:11 +00007from test.pickletester import AbstractPickleTests
8from test.pickletester import TempAbstractPickleTests as XXXTemp
9from test.pickletester import AbstractPickleModuleTests
10from test.pickletester import AbstractPersistentPicklerTests
11
12class PickleTests(AbstractPickleTests, AbstractPickleModuleTests, XXXTemp):
Jeremy Hylton66426532001-10-15 21:38:56 +000013
14 def setUp(self):
15 self.dumps = pickle.dumps
16 self.loads = pickle.loads
Tim Peterse0c446b2001-10-18 21:57:37 +000017
Jeremy Hylton66426532001-10-15 21:38:56 +000018 module = pickle
19 error = KeyError
20
21class PicklerTests(AbstractPickleTests):
22
23 error = KeyError
24
Guido van Rossum9d32bb12003-01-28 03:51:53 +000025 def dumps(self, arg, proto=0):
Jeremy Hylton66426532001-10-15 21:38:56 +000026 f = StringIO()
Guido van Rossum9d32bb12003-01-28 03:51:53 +000027 p = pickle.Pickler(f, proto)
Jeremy Hylton66426532001-10-15 21:38:56 +000028 p.dump(arg)
29 f.seek(0)
30 return f.read()
31
32 def loads(self, buf):
33 f = StringIO(buf)
34 u = pickle.Unpickler(f)
35 return u.load()
36
Jeremy Hylton5e0f4e72002-11-13 22:01:27 +000037class PersPicklerTests(AbstractPersistentPicklerTests):
38
Guido van Rossum9d32bb12003-01-28 03:51:53 +000039 def dumps(self, arg, proto=0):
Jeremy Hylton5e0f4e72002-11-13 22:01:27 +000040 class PersPickler(pickle.Pickler):
41 def persistent_id(subself, obj):
42 return self.persistent_id(obj)
43 f = StringIO()
Guido van Rossum9d32bb12003-01-28 03:51:53 +000044 p = PersPickler(f, proto)
Jeremy Hylton5e0f4e72002-11-13 22:01:27 +000045 p.dump(arg)
46 f.seek(0)
47 return f.read()
48
49 def loads(self, buf):
50 class PersUnpickler(pickle.Unpickler):
51 def persistent_load(subself, obj):
52 return self.persistent_load(obj)
53 f = StringIO(buf)
54 u = PersUnpickler(f)
55 return u.load()
56
Fred Drake694ed092001-12-19 16:42:15 +000057def test_main():
58 loader = unittest.TestLoader()
59 suite = unittest.TestSuite()
60 suite.addTest(loader.loadTestsFromTestCase(PickleTests))
61 suite.addTest(loader.loadTestsFromTestCase(PicklerTests))
Jeremy Hylton5e0f4e72002-11-13 22:01:27 +000062 suite.addTest(loader.loadTestsFromTestCase(PersPicklerTests))
Fred Drake694ed092001-12-19 16:42:15 +000063 test_support.run_suite(suite)
64
Jeremy Hylton66426532001-10-15 21:38:56 +000065if __name__ == "__main__":
Fred Drake694ed092001-12-19 16:42:15 +000066 test_main()