]> granicus.if.org Git - python/commitdiff
Mentioned new clear() method of MutableSequence in its doc, and added unit tests...
authorEli Bendersky <eliben@gmail.com>
Fri, 4 Mar 2011 10:38:14 +0000 (10:38 +0000)
committerEli Bendersky <eliben@gmail.com>
Fri, 4 Mar 2011 10:38:14 +0000 (10:38 +0000)
Doc/library/collections.abc.rst
Lib/test/test_collections.py

index 6d1bedbb60c3d14d1b3501eba53972c27bb45b9a..d341c450d40f302790c0c4e05c281b9720470de3 100644 (file)
@@ -46,7 +46,7 @@ ABC                        Inherits               Abstract Methods        Mixin
 
 :class:`MutableSequence`   :class:`Sequence`      ``__setitem__``         Inherited Sequence methods and
                                                   ``__delitem__``,        ``append``, ``reverse``, ``extend``, ``pop``,
-                                                  and ``insert``          ``remove``, and ``__iadd__``
+                                                  and ``insert``          ``remove``, ``clear``, and ``__iadd__``
 
 :class:`Set`               :class:`Sized`,                                ``__le__``, ``__lt__``, ``__eq__``, ``__ne__``,
                            :class:`Iterable`,                             ``__gt__``, ``__ge__``, ``__and__``, ``__or__``,
index bb1150084efa13cfd416a55acce5e564e02a79fc..d71fb01dec805b852a24470dca5b415a1a4d9395 100644 (file)
@@ -728,6 +728,44 @@ class TestCollectionABCs(ABCTestCase):
         self.validate_abstract_methods(MutableSequence, '__contains__', '__iter__',
             '__len__', '__getitem__', '__setitem__', '__delitem__', 'insert')
 
+    def test_MutableSequence_mixins(self):
+        # Test the mixins of MutableSequence by creating a miminal concrete
+        # class inherited from it.
+        class MutableSequenceSubclass(MutableSequence):
+            def __init__(self):
+                self.lst = []
+
+            def __setitem__(self, index, value):
+                self.lst[index] = value
+
+            def __getitem__(self, index):
+                return self.lst[index]
+
+            def __len__(self):
+                return len(self.lst)
+
+            def __delitem__(self, index):
+                del self.lst[index]
+
+            def insert(self, index, value):
+                self.lst.insert(index, value)
+
+        mss = MutableSequenceSubclass()
+        mss.append(0)
+        mss.extend((1, 2, 3, 4))
+        self.assertEqual(len(mss), 5)
+        self.assertEqual(mss[3], 3)
+        mss.reverse()
+        self.assertEqual(mss[3], 1)
+        mss.pop()
+        self.assertEqual(len(mss), 4)
+        mss.remove(3)
+        self.assertEqual(len(mss), 3)
+        mss += (10, 20, 30)
+        self.assertEqual(len(mss), 6)
+        self.assertEqual(mss[-1], 30)
+        mss.clear()
+        self.assertEqual(len(mss), 0)
 
 ################################################################################
 ### Counter