blob: 88709042054559bd963d26dc9007930ee4d0afd0 [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
Guido van Rossum5d9113d2003-01-29 17:58:45 +000014 def dumps(self, arg, proto=0, fast=0):
15 # Ignore fast
16 return pickle.dumps(arg, proto)
17
18 def loads(self, buf):
19 # Ignore fast
20 return pickle.loads(buf)
Tim Peterse0c446b2001-10-18 21:57:37 +000021
Jeremy Hylton66426532001-10-15 21:38:56 +000022 module = pickle
23 error = KeyError
24
25class PicklerTests(AbstractPickleTests):
26
27 error = KeyError
28
Guido van Rossum5d9113d2003-01-29 17:58:45 +000029 def dumps(self, arg, proto=0, fast=0):
Jeremy Hylton66426532001-10-15 21:38:56 +000030 f = StringIO()
Guido van Rossum9d32bb12003-01-28 03:51:53 +000031 p = pickle.Pickler(f, proto)
Guido van Rossum5d9113d2003-01-29 17:58:45 +000032 if fast:
33 p.fast = fast
Jeremy Hylton66426532001-10-15 21:38:56 +000034 p.dump(arg)
35 f.seek(0)
36 return f.read()
37
38 def loads(self, buf):
39 f = StringIO(buf)
40 u = pickle.Unpickler(f)
41 return u.load()
42
Jeremy Hylton5e0f4e72002-11-13 22:01:27 +000043class PersPicklerTests(AbstractPersistentPicklerTests):
44
Guido van Rossum5d9113d2003-01-29 17:58:45 +000045 def dumps(self, arg, proto=0, fast=0):
Jeremy Hylton5e0f4e72002-11-13 22:01:27 +000046 class PersPickler(pickle.Pickler):
47 def persistent_id(subself, obj):
48 return self.persistent_id(obj)
49 f = StringIO()
Guido van Rossum9d32bb12003-01-28 03:51:53 +000050 p = PersPickler(f, proto)
Guido van Rossum5d9113d2003-01-29 17:58:45 +000051 if fast:
52 p.fast = fast
Jeremy Hylton5e0f4e72002-11-13 22:01:27 +000053 p.dump(arg)
54 f.seek(0)
55 return f.read()
56
57 def loads(self, buf):
58 class PersUnpickler(pickle.Unpickler):
59 def persistent_load(subself, obj):
60 return self.persistent_load(obj)
61 f = StringIO(buf)
62 u = PersUnpickler(f)
63 return u.load()
64
Fred Drake694ed092001-12-19 16:42:15 +000065def test_main():
66 loader = unittest.TestLoader()
67 suite = unittest.TestSuite()
68 suite.addTest(loader.loadTestsFromTestCase(PickleTests))
69 suite.addTest(loader.loadTestsFromTestCase(PicklerTests))
Jeremy Hylton5e0f4e72002-11-13 22:01:27 +000070 suite.addTest(loader.loadTestsFromTestCase(PersPicklerTests))
Fred Drake694ed092001-12-19 16:42:15 +000071 test_support.run_suite(suite)
72
Jeremy Hylton66426532001-10-15 21:38:56 +000073if __name__ == "__main__":
Fred Drake694ed092001-12-19 16:42:15 +000074 test_main()