blob: c3126491ad29d78f641ac9116371d115cfa12cbd [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
Serhiy Storchakacdc7a912013-02-12 21:36:47 +02006from test.pickletester import (AbstractPickleTests,
7 AbstractPickleModuleTests,
8 AbstractPersistentPicklerTests,
9 AbstractPicklerUnpicklerObjectTests,
10 BigmemPickleTests)
Tim Peters47a6b132003-01-28 22:34:11 +000011
Tim Peters080c88b2003-02-15 03:01:11 +000012class PickleTests(AbstractPickleTests, AbstractPickleModuleTests):
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
Collin Winterf8089c72009-04-09 16:46:46 +000065class PicklerUnpicklerObjectTests(AbstractPicklerUnpicklerObjectTests):
66
67 pickler_class = pickle.Pickler
68 unpickler_class = pickle.Unpickler
69
Serhiy Storchakacdc7a912013-02-12 21:36:47 +020070class PickleBigmemPickleTests(BigmemPickleTests):
71
72 def dumps(self, arg, proto=0, fast=0):
73 # Ignore fast
74 return pickle.dumps(arg, proto)
75
76 def loads(self, buf):
77 # Ignore fast
78 return pickle.loads(buf)
79
Collin Winterf8089c72009-04-09 16:46:46 +000080
Fred Drake694ed092001-12-19 16:42:15 +000081def test_main():
Walter Dörwald21d3a322003-05-01 17:45:56 +000082 test_support.run_unittest(
83 PickleTests,
84 PicklerTests,
Collin Winterf8089c72009-04-09 16:46:46 +000085 PersPicklerTests,
86 PicklerUnpicklerObjectTests,
Serhiy Storchakacdc7a912013-02-12 21:36:47 +020087 PickleBigmemPickleTests,
Walter Dörwald21d3a322003-05-01 17:45:56 +000088 )
Tim Peterse14295c2003-01-30 21:27:37 +000089 test_support.run_doctest(pickle)
Fred Drake694ed092001-12-19 16:42:15 +000090
Jeremy Hylton66426532001-10-15 21:38:56 +000091if __name__ == "__main__":
Fred Drake694ed092001-12-19 16:42:15 +000092 test_main()