Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d032131

Browse files
committed
Add __bool__ method. Add tests. Fix-up broken test.
1 parent cb8b944 commit d032131

2 files changed

Lines changed: 17 additions & 8 deletions

File tree

Lib/collections/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -679,6 +679,9 @@ def __iter__(self):
679679
def __contains__(self, key):
680680
return any(key in m for m in self.maps)
681681

682+
def __bool__(self):
683+
return any(self.maps)
684+
682685
@_recursive_repr()
683686
def __repr__(self):
684687
return '{0.__class__.__name__}({1})'.format(

Lib/test/test_collections.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,17 +72,23 @@ def test_basics(self):
7272
for m1, m2 in zip(d.maps, e.maps):
7373
self.assertIsNot(m1, m2, e)
7474

75-
d.new_child()
76-
d['b'] = 5
77-
self.assertEqual(d.maps, [{'b': 5}, {'c':30}, {'a':1, 'b':2}])
78-
self.assertEqual(d.parents.maps, [{'c':30}, {'a':1, 'b':2}]) # check parents
79-
self.assertEqual(d['b'], 5) # find first in chain
80-
self.assertEqual(d.parents['b'], 2) # look beyond maps[0]
75+
f = d.new_child()
76+
f['b'] = 5
77+
self.assertEqual(f.maps, [{'b': 5}, {'c':30}, {'a':1, 'b':2}])
78+
self.assertEqual(f.parents.maps, [{'c':30}, {'a':1, 'b':2}]) # check parents
79+
self.assertEqual(f['b'], 5) # find first in chain
80+
self.assertEqual(f.parents['b'], 2) # look beyond maps[0]
8181

8282
def test_contructor(self):
83-
self.assertEqual(ChainedContext().maps, [{}]) # no-args --> one new dict
83+
self.assertEqual(ChainMap().maps, [{}]) # no-args --> one new dict
8484
self.assertEqual(ChainMap({1:2}).maps, [{1:2}]) # 1 arg --> list
8585

86+
def test_bool(self):
87+
self.assertFalse(ChainMap())
88+
self.assertFalse(ChainMap({}, {}))
89+
self.assertTrue(ChainMap({1:2}, {}))
90+
self.assertTrue(ChainMap({}, {1:2}))
91+
8692
def test_missing(self):
8793
class DefaultChainMap(ChainMap):
8894
def __missing__(self, key):
@@ -1182,7 +1188,7 @@ def test_popitem(self):
11821188
def test_main(verbose=None):
11831189
NamedTupleDocs = doctest.DocTestSuite(module=collections)
11841190
test_classes = [TestNamedTuple, NamedTupleDocs, TestOneTrickPonyABCs,
1185-
TestCollectionABCs, TestCounter,
1191+
TestCollectionABCs, TestCounter, TestChainMap,
11861192
TestOrderedDict, GeneralMappingTests, SubclassMappingTests]
11871193
support.run_unittest(*test_classes)
11881194
support.run_doctest(collections, verbose)

0 commit comments

Comments
 (0)