]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Add list tests that ensure that remove() removes the first occurrence.
authorWalter Dörwald <walter@livinglogic.de>
Mon, 21 Mar 2005 21:31:47 +0000 (21:31 +0000)
committerWalter Dörwald <walter@livinglogic.de>
Mon, 21 Mar 2005 21:31:47 +0000 (21:31 +0000)
(Copied from test_deque.py as suggested by Jim Jewett in SF bug #1166274)

Lib/test/list_tests.py

index e616c79fb54aa7237419e13596e2595fa8cc8d5b..284edb39c3919b92ba9cf6f24c3b6f69728dbfbe 100644 (file)
@@ -309,6 +309,26 @@ class CommonTest(seq_tests.CommonTest):
         a = self.type2test([0, 1, 2, 3])
         self.assertRaises(BadExc, a.remove, BadCmp())
 
+        class BadCmp2:
+            def __eq__(self, other):
+                raise BadExc()
+
+        d = self.type2test('abcdefghcij')
+        d.remove('c')
+        self.assertEqual(d, self.type2test('abdefghcij'))
+        d.remove('c')
+        self.assertEqual(d, self.type2test('abdefghij'))
+        self.assertRaises(ValueError, d.remove, 'c')
+        self.assertEqual(d, self.type2test('abdefghij'))
+
+        # Handle comparison errors
+        d = self.type2test(['a', 'b', BadCmp2(), 'c'])
+        e = self.type2test(d)
+        self.assertRaises(BadExc, d.remove, 'c')
+        for x, y in zip(d, e):
+            # verify that original order and values are retained.
+            self.assert_(x is y)
+
     def test_count(self):
         a = self.type2test([0, 1, 2])*3
         self.assertEqual(a.count(0), 3)