[Python-checkins] python/dist/src/Lib/test test_deque.py,1.17,1.18
rhettinger at users.sourceforge.net
rhettinger at users.sourceforge.net
Tue Nov 9 08:27:37 CET 2004
Update of /cvsroot/python/python/dist/src/Lib/test
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29261/Lib/test
Modified Files:
test_deque.py
Log Message:
SF patch #1062279: deque pickling problems
(Contributed by Dima Dorfman.)
* Support pickling of dictionaries in instances of deque subclasses.
* Support pickling of recursive deques.
Index: test_deque.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_deque.py,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- test_deque.py 2 Oct 2004 13:59:34 -0000 1.17
+++ test_deque.py 9 Nov 2004 07:27:35 -0000 1.18
@@ -297,10 +297,19 @@
def test_pickle(self):
d = deque(xrange(200))
- s = pickle.dumps(d)
- e = pickle.loads(s)
- self.assertNotEqual(id(d), id(e))
- self.assertEqual(list(d), list(e))
+ for i in (0, 1, 2):
+ s = pickle.dumps(d, i)
+ e = pickle.loads(s)
+ self.assertNotEqual(id(d), id(e))
+ self.assertEqual(list(d), list(e))
+
+ def test_pickle_recursive(self):
+ d = deque('abc')
+ d.append(d)
+ for i in (0, 1, 2):
+ e = pickle.loads(pickle.dumps(d, i))
+ self.assertNotEqual(id(d), id(e))
+ self.assertEqual(id(e), id(e[-1]))
def test_deepcopy(self):
mut = [10]
@@ -430,6 +439,10 @@
class Deque(deque):
pass
+class DequeWithBadIter(deque):
+ def __iter__(self):
+ raise TypeError
+
class TestSubclass(unittest.TestCase):
def test_basics(self):
@@ -472,6 +485,25 @@
self.assertEqual(type(d), type(e))
self.assertEqual(list(d), list(e))
+ def test_pickle(self):
+ d = Deque('abc')
+ d.append(d)
+
+ e = pickle.loads(pickle.dumps(d))
+ self.assertNotEqual(id(d), id(e))
+ self.assertEqual(type(d), type(e))
+ dd = d.pop()
+ ee = e.pop()
+ self.assertEqual(id(e), id(ee))
+ self.assertEqual(d, e)
+
+ d.x = d
+ e = pickle.loads(pickle.dumps(d))
+ self.assertEqual(id(e), id(e.x))
+
+ d = DequeWithBadIter('abc')
+ self.assertRaises(TypeError, pickle.dumps, d)
+
def test_weakref(self):
d = deque('gallahad')
p = proxy(d)
More information about the Python-checkins
mailing list