3 from cStringIO
import StringIO
4 from pickletester
import AbstractPickleTests
, AbstractPickleModuleTests
5 from test
import test_support
7 class cPickleTests(AbstractPickleTests
, AbstractPickleModuleTests
):
10 self
.dumps
= cPickle
.dumps
11 self
.loads
= cPickle
.loads
13 error
= cPickle
.BadPickleGet
16 class cPicklePicklerTests(AbstractPickleTests
):
18 def dumps(self
, arg
, proto
=0):
20 p
= cPickle
.Pickler(f
, proto
)
27 p
= cPickle
.Unpickler(f
)
30 error
= cPickle
.BadPickleGet
32 class cPickleListPicklerTests(AbstractPickleTests
):
34 def dumps(self
, arg
, proto
=0):
35 p
= cPickle
.Pickler(proto
)
39 def loads(self
, *args
):
41 p
= cPickle
.Unpickler(f
)
44 error
= cPickle
.BadPickleGet
46 class cPickleFastPicklerTests(AbstractPickleTests
):
48 def dumps(self
, arg
, proto
=0):
50 p
= cPickle
.Pickler(f
, proto
)
56 def loads(self
, *args
):
58 p
= cPickle
.Unpickler(f
)
61 error
= cPickle
.BadPickleGet
63 def test_recursive_list(self
):
64 self
.assertRaises(ValueError,
65 AbstractPickleTests
.test_recursive_list
,
68 def test_recursive_inst(self
):
69 self
.assertRaises(ValueError,
70 AbstractPickleTests
.test_recursive_inst
,
73 def test_recursive_dict(self
):
74 self
.assertRaises(ValueError,
75 AbstractPickleTests
.test_recursive_dict
,
78 def test_recursive_multi(self
):
79 self
.assertRaises(ValueError,
80 AbstractPickleTests
.test_recursive_multi
,
83 def test_nonrecursive_deep(self
):
84 # If it's not cyclic, it should pickle OK even if the nesting
85 # depth exceeds PY_CPICKLE_FAST_LIMIT. That happens to be
86 # 50 today. Jack Jansen reported stack overflow on Mac OS 9
91 b
= self
.loads(self
.dumps(a
))
92 self
.assertEqual(a
, b
)
95 test_support
.run_unittest(
98 cPickleListPicklerTests
,
99 cPickleFastPicklerTests
102 if __name__
== "__main__":