blob: 0c34cda743ca8d49d1f909b911d554eb8763f699 [file] [log] [blame]
Guido van Rossumaa3828a1999-03-25 22:38:49 +00001import cPickle
Fred Drake694ed092001-12-19 16:42:15 +00002import unittest
Jeremy Hylton66426532001-10-15 21:38:56 +00003from cStringIO import StringIO
4from pickletester import AbstractPickleTests, AbstractPickleModuleTests
Barry Warsaw04f357c2002-07-23 19:04:11 +00005from test import test_support
Jeremy Hylton66426532001-10-15 21:38:56 +00006
7class cPickleTests(AbstractPickleTests, AbstractPickleModuleTests):
Tim Peterse0c446b2001-10-18 21:57:37 +00008
Jeremy Hylton66426532001-10-15 21:38:56 +00009 def setUp(self):
10 self.dumps = cPickle.dumps
11 self.loads = cPickle.loads
12
13 error = cPickle.BadPickleGet
14 module = cPickle
15
16class cPicklePicklerTests(AbstractPickleTests):
17
18 def dumps(self, arg, bin=0):
19 f = StringIO()
20 p = cPickle.Pickler(f, bin)
21 p.dump(arg)
22 f.seek(0)
23 return f.read()
24
25 def loads(self, buf):
26 f = StringIO(buf)
27 p = cPickle.Unpickler(f)
28 return p.load()
29
30 error = cPickle.BadPickleGet
31
32class cPickleListPicklerTests(AbstractPickleTests):
33
34 def dumps(self, arg, bin=0):
35 p = cPickle.Pickler(bin)
36 p.dump(arg)
37 return p.getvalue()
38
39 def loads(self, *args):
40 f = StringIO(args[0])
41 p = cPickle.Unpickler(f)
42 return p.load()
43
44 error = cPickle.BadPickleGet
45
46class cPickleFastPicklerTests(AbstractPickleTests):
47
48 def dumps(self, arg, bin=0):
49 f = StringIO()
50 p = cPickle.Pickler(f, bin)
51 p.fast = 1
52 p.dump(arg)
53 f.seek(0)
54 return f.read()
55
56 def loads(self, *args):
57 f = StringIO(args[0])
58 p = cPickle.Unpickler(f)
59 return p.load()
60
61 error = cPickle.BadPickleGet
62
63 def test_recursive_list(self):
64 self.assertRaises(ValueError,
65 AbstractPickleTests.test_recursive_list,
66 self)
67
68 def test_recursive_inst(self):
69 self.assertRaises(ValueError,
70 AbstractPickleTests.test_recursive_inst,
71 self)
72
73 def test_recursive_dict(self):
74 self.assertRaises(ValueError,
75 AbstractPickleTests.test_recursive_dict,
76 self)
77
78 def test_recursive_multi(self):
79 self.assertRaises(ValueError,
80 AbstractPickleTests.test_recursive_multi,
81 self)
82
Barry Warsaw52acb492001-12-21 20:04:22 +000083 def test_nonrecursive_deep(self):
84 a = []
85 for i in range(100):
86 a = [a]
87 b = self.loads(self.dumps(a))
88 self.assertEqual(a, b)
89
Fred Drake694ed092001-12-19 16:42:15 +000090def test_main():
91 loader = unittest.TestLoader()
92 suite = unittest.TestSuite()
93 suite.addTest(loader.loadTestsFromTestCase(cPickleTests))
94 suite.addTest(loader.loadTestsFromTestCase(cPicklePicklerTests))
95 suite.addTest(loader.loadTestsFromTestCase(cPickleListPicklerTests))
96 suite.addTest(loader.loadTestsFromTestCase(cPickleFastPicklerTests))
97 test_support.run_suite(suite)
98
Jeremy Hylton66426532001-10-15 21:38:56 +000099if __name__ == "__main__":
Fred Drake694ed092001-12-19 16:42:15 +0000100 test_main()