blob: fb10ffed16cdd342f558d658f9de05f189fddff5 [file] [log] [blame]
Jeremy Hyltonbe467e52000-09-15 15:14:51 +00001import pickle
Jeremy Hylton66426532001-10-15 21:38:56 +00002from cStringIO import StringIO
Tim Peters47a6b132003-01-28 22:34:11 +00003
Barry Warsaw04f357c2002-07-23 19:04:11 +00004from test import test_support
Jeremy Hylton66426532001-10-15 21:38:56 +00005
Tim Peters47a6b132003-01-28 22:34:11 +00006from test.pickletester import AbstractPickleTests
Tim Peters47a6b132003-01-28 22:34:11 +00007from test.pickletester import AbstractPickleModuleTests
8from test.pickletester import AbstractPersistentPicklerTests
9
Tim Peters080c88b2003-02-15 03:01:11 +000010class PickleTests(AbstractPickleTests, AbstractPickleModuleTests):
Jeremy Hylton66426532001-10-15 21:38:56 +000011
Guido van Rossum5d9113d2003-01-29 17:58:45 +000012 def dumps(self, arg, proto=0, fast=0):
13 # Ignore fast
14 return pickle.dumps(arg, proto)
15
16 def loads(self, buf):
17 # Ignore fast
18 return pickle.loads(buf)
Tim Peterse0c446b2001-10-18 21:57:37 +000019
Jeremy Hylton66426532001-10-15 21:38:56 +000020 module = pickle
21 error = KeyError
22
23class PicklerTests(AbstractPickleTests):
24
25 error = KeyError
26
Guido van Rossum5d9113d2003-01-29 17:58:45 +000027 def dumps(self, arg, proto=0, fast=0):
Jeremy Hylton66426532001-10-15 21:38:56 +000028 f = StringIO()
Guido van Rossum9d32bb12003-01-28 03:51:53 +000029 p = pickle.Pickler(f, proto)
Guido van Rossum5d9113d2003-01-29 17:58:45 +000030 if fast:
31 p.fast = fast
Jeremy Hylton66426532001-10-15 21:38:56 +000032 p.dump(arg)
33 f.seek(0)
34 return f.read()
35
36 def loads(self, buf):
37 f = StringIO(buf)
38 u = pickle.Unpickler(f)
39 return u.load()
40
Jeremy Hylton5e0f4e72002-11-13 22:01:27 +000041class PersPicklerTests(AbstractPersistentPicklerTests):
42
Guido van Rossum5d9113d2003-01-29 17:58:45 +000043 def dumps(self, arg, proto=0, fast=0):
Jeremy Hylton5e0f4e72002-11-13 22:01:27 +000044 class PersPickler(pickle.Pickler):
45 def persistent_id(subself, obj):
46 return self.persistent_id(obj)
47 f = StringIO()
Guido van Rossum9d32bb12003-01-28 03:51:53 +000048 p = PersPickler(f, proto)
Guido van Rossum5d9113d2003-01-29 17:58:45 +000049 if fast:
50 p.fast = fast
Jeremy Hylton5e0f4e72002-11-13 22:01:27 +000051 p.dump(arg)
52 f.seek(0)
53 return f.read()
54
55 def loads(self, buf):
56 class PersUnpickler(pickle.Unpickler):
57 def persistent_load(subself, obj):
58 return self.persistent_load(obj)
59 f = StringIO(buf)
60 u = PersUnpickler(f)
61 return u.load()
62
Fred Drake694ed092001-12-19 16:42:15 +000063def test_main():
Walter Dörwald21d3a322003-05-01 17:45:56 +000064 test_support.run_unittest(
65 PickleTests,
66 PicklerTests,
67 PersPicklerTests
68 )
Tim Peterse14295c2003-01-30 21:27:37 +000069 test_support.run_doctest(pickle)
Fred Drake694ed092001-12-19 16:42:15 +000070
Jeremy Hylton66426532001-10-15 21:38:56 +000071if __name__ == "__main__":
Fred Drake694ed092001-12-19 16:42:15 +000072 test_main()