[Python-checkins] r88633 - in python/branches/py3k/Lib: collections/__init__.py test/test_collections.py

raymond.hettinger python-checkins at python.org
Sat Feb 26 07:53:58 CET 2011


Author: raymond.hettinger
Date: Sat Feb 26 07:53:58 2011
New Revision: 88633

Log:
Add __bool__ method. Add tests. Fix-up broken test.

Modified:
   python/branches/py3k/Lib/collections/__init__.py
   python/branches/py3k/Lib/test/test_collections.py

Modified: python/branches/py3k/Lib/collections/__init__.py
==============================================================================
--- python/branches/py3k/Lib/collections/__init__.py	(original)
+++ python/branches/py3k/Lib/collections/__init__.py	Sat Feb 26 07:53:58 2011
@@ -679,6 +679,9 @@
     def __contains__(self, key):
         return any(key in m for m in self.maps)
 
+    def __bool__(self):
+        return any(self.maps)
+
     @_recursive_repr()
     def __repr__(self):
         return '{0.__class__.__name__}({1})'.format(

Modified: python/branches/py3k/Lib/test/test_collections.py
==============================================================================
--- python/branches/py3k/Lib/test/test_collections.py	(original)
+++ python/branches/py3k/Lib/test/test_collections.py	Sat Feb 26 07:53:58 2011
@@ -72,17 +72,23 @@
             for m1, m2 in zip(d.maps, e.maps):
                 self.assertIsNot(m1, m2, e)
 
-        d.new_child()
-        d['b'] = 5
-        self.assertEqual(d.maps, [{'b': 5}, {'c':30}, {'a':1, 'b':2}])
-        self.assertEqual(d.parents.maps, [{'c':30}, {'a':1, 'b':2}])   # check parents
-        self.assertEqual(d['b'], 5)                                    # find first in chain
-        self.assertEqual(d.parents['b'], 2)                            # look beyond maps[0]
+        f = d.new_child()
+        f['b'] = 5
+        self.assertEqual(f.maps, [{'b': 5}, {'c':30}, {'a':1, 'b':2}])
+        self.assertEqual(f.parents.maps, [{'c':30}, {'a':1, 'b':2}])   # check parents
+        self.assertEqual(f['b'], 5)                                    # find first in chain
+        self.assertEqual(f.parents['b'], 2)                            # look beyond maps[0]
 
     def test_contructor(self):
-        self.assertEqual(ChainedContext().maps, [{}])                  # no-args --> one new dict
+        self.assertEqual(ChainMap().maps, [{}])                        # no-args --> one new dict
         self.assertEqual(ChainMap({1:2}).maps, [{1:2}])                # 1 arg --> list
 
+    def test_bool(self):
+        self.assertFalse(ChainMap())
+        self.assertFalse(ChainMap({}, {}))
+        self.assertTrue(ChainMap({1:2}, {}))
+        self.assertTrue(ChainMap({}, {1:2}))
+
     def test_missing(self):
         class DefaultChainMap(ChainMap):
             def __missing__(self, key):
@@ -1182,7 +1188,7 @@
 def test_main(verbose=None):
     NamedTupleDocs = doctest.DocTestSuite(module=collections)
     test_classes = [TestNamedTuple, NamedTupleDocs, TestOneTrickPonyABCs,
-                    TestCollectionABCs, TestCounter,
+                    TestCollectionABCs, TestCounter, TestChainMap,
                     TestOrderedDict, GeneralMappingTests, SubclassMappingTests]
     support.run_unittest(*test_classes)
     support.run_doctest(collections, verbose)


More information about the Python-checkins mailing list