[Python-checkins] python/dist/src/Lib/test test_deque.py,1.18,1.19

rhettinger at users.sourceforge.net rhettinger at users.sourceforge.net
Fri Mar 18 22:20:52 CET 2005


Update of /cvsroot/python/python/dist/src/Lib/test
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27128/Lib/test

Modified Files:
	test_deque.py 
Log Message:
Add a remove() method to collections.deque objects.

Index: test_deque.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_deque.py,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- test_deque.py	9 Nov 2004 07:27:35 -0000	1.18
+++ test_deque.py	18 Mar 2005 21:20:19 -0000	1.19
@@ -14,6 +14,17 @@
     raise SyntaxError
     yield 1
 
+class BadCmp:
+    def __eq__(self, other):
+        raise RuntimeError
+
+class MutateCmp:
+    def __init__(self, deque):
+        self.deque = deque
+    def __eq__(self, other):
+        self.deque.clear()
+        return True
+
 class TestBasic(unittest.TestCase):
 
     def test_basics(self):
@@ -197,6 +208,30 @@
         d.clear()               # clear an emtpy deque
         self.assertEqual(list(d), [])
 
+    def test_remove(self):
+        d = deque('abcdefghcij')
+        d.remove('c')
+        self.assertEqual(d, deque('abdefghcij'))
+        d.remove('c')
+        self.assertEqual(d, deque('abdefghij'))
+        self.assertRaises(ValueError, d.remove, 'c')
+        self.assertEqual(d, deque('abdefghij'))
+
+        # Handle comparision errors
+        d = deque(['a', 'b', BadCmp(), 'c'])
+        e = deque(d)
+        self.assertRaises(RuntimeError, d.remove, 'c')
+        for x, y in zip(d, e):
+            # verify that original order and values are retained.
+            self.assert_(x is y)
+
+        # Handle evil mutator
+        d = deque(['ab'])
+        d.extend([MutateCmp(d), 'c'])
+        e = deque(d)
+        self.assertRaises(IndexError, d.remove, 'c')
+        self.assertEqual(d, deque())
+
     def test_repr(self):
         d = deque(xrange(200))
         e = eval(repr(d))



More information about the Python-checkins mailing list