blob: 2db75898e332debd6a4521141675134a64d54b68 [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 Storchaka4d2cf552015-09-29 15:36:28 +03006from test.pickletester import (AbstractUnpickleTests,
7 AbstractPickleTests,
Serhiy Storchakacdc7a912013-02-12 21:36:47 +02008 AbstractPickleModuleTests,
9 AbstractPersistentPicklerTests,
10 AbstractPicklerUnpicklerObjectTests,
11 BigmemPickleTests)
Tim Peters47a6b132003-01-28 22:34:11 +000012
Serhiy Storchaka4d2cf552015-09-29 15:36:28 +030013class PickleTests(AbstractUnpickleTests, AbstractPickleTests,
14 AbstractPickleModuleTests):
Jeremy Hylton66426532001-10-15 21:38:56 +000015
Guido van Rossum5d9113d2003-01-29 17:58:45 +000016 def dumps(self, arg, proto=0, fast=0):
17 # Ignore fast
18 return pickle.dumps(arg, proto)
19
20 def loads(self, buf):
21 # Ignore fast
22 return pickle.loads(buf)
Tim Peterse0c446b2001-10-18 21:57:37 +000023
Jeremy Hylton66426532001-10-15 21:38:56 +000024 module = pickle
25 error = KeyError
26
Serhiy Storchaka4d2cf552015-09-29 15:36:28 +030027class UnpicklerTests(AbstractUnpickleTests):
Jeremy Hylton66426532001-10-15 21:38:56 +000028
29 error = KeyError
30
Serhiy Storchaka4d2cf552015-09-29 15:36:28 +030031 def loads(self, buf):
32 f = StringIO(buf)
33 u = pickle.Unpickler(f)
34 return u.load()
35
36
37class PicklerTests(AbstractPickleTests):
38
Guido van Rossum5d9113d2003-01-29 17:58:45 +000039 def dumps(self, arg, proto=0, fast=0):
Jeremy Hylton66426532001-10-15 21:38:56 +000040 f = StringIO()
Guido van Rossum9d32bb12003-01-28 03:51:53 +000041 p = pickle.Pickler(f, proto)
Guido van Rossum5d9113d2003-01-29 17:58:45 +000042 if fast:
43 p.fast = fast
Jeremy Hylton66426532001-10-15 21:38:56 +000044 p.dump(arg)
45 f.seek(0)
46 return f.read()
47
48 def loads(self, buf):
49 f = StringIO(buf)
50 u = pickle.Unpickler(f)
51 return u.load()
52
Jeremy Hylton5e0f4e72002-11-13 22:01:27 +000053class PersPicklerTests(AbstractPersistentPicklerTests):
54
Guido van Rossum5d9113d2003-01-29 17:58:45 +000055 def dumps(self, arg, proto=0, fast=0):
Jeremy Hylton5e0f4e72002-11-13 22:01:27 +000056 class PersPickler(pickle.Pickler):
57 def persistent_id(subself, obj):
58 return self.persistent_id(obj)
59 f = StringIO()
Guido van Rossum9d32bb12003-01-28 03:51:53 +000060 p = PersPickler(f, proto)
Guido van Rossum5d9113d2003-01-29 17:58:45 +000061 if fast:
62 p.fast = fast
Jeremy Hylton5e0f4e72002-11-13 22:01:27 +000063 p.dump(arg)
64 f.seek(0)
65 return f.read()
66
67 def loads(self, buf):
68 class PersUnpickler(pickle.Unpickler):
69 def persistent_load(subself, obj):
70 return self.persistent_load(obj)
71 f = StringIO(buf)
72 u = PersUnpickler(f)
73 return u.load()
74
Collin Winterf8089c72009-04-09 16:46:46 +000075class PicklerUnpicklerObjectTests(AbstractPicklerUnpicklerObjectTests):
76
77 pickler_class = pickle.Pickler
78 unpickler_class = pickle.Unpickler
79
Serhiy Storchakacdc7a912013-02-12 21:36:47 +020080class PickleBigmemPickleTests(BigmemPickleTests):
81
82 def dumps(self, arg, proto=0, fast=0):
83 # Ignore fast
84 return pickle.dumps(arg, proto)
85
86 def loads(self, buf):
87 # Ignore fast
88 return pickle.loads(buf)
89
Collin Winterf8089c72009-04-09 16:46:46 +000090
Fred Drake694ed092001-12-19 16:42:15 +000091def test_main():
Walter Dörwald21d3a322003-05-01 17:45:56 +000092 test_support.run_unittest(
93 PickleTests,
Serhiy Storchaka4d2cf552015-09-29 15:36:28 +030094 UnpicklerTests,
Walter Dörwald21d3a322003-05-01 17:45:56 +000095 PicklerTests,
Collin Winterf8089c72009-04-09 16:46:46 +000096 PersPicklerTests,
97 PicklerUnpicklerObjectTests,
Serhiy Storchakacdc7a912013-02-12 21:36:47 +020098 PickleBigmemPickleTests,
Walter Dörwald21d3a322003-05-01 17:45:56 +000099 )
Tim Peterse14295c2003-01-30 21:27:37 +0000100 test_support.run_doctest(pickle)
Fred Drake694ed092001-12-19 16:42:15 +0000101
Jeremy Hylton66426532001-10-15 21:38:56 +0000102if __name__ == "__main__":
Fred Drake694ed092001-12-19 16:42:15 +0000103 test_main()