2323### _ChainMap (helper class for configparser)
2424################################################################################
2525
26+ ChainMap = _ChainMap # rename to keep test code in sync with 3.3 version
27+
2628class TestChainMap (unittest .TestCase ):
2729
2830 def test_basics (self ):
29- c = _ChainMap ()
31+ c = ChainMap ()
3032 c ['a' ] = 1
3133 c ['b' ] = 2
3234 d = c .new_child ()
@@ -71,19 +73,25 @@ def test_basics(self):
7173 for m1 , m2 in zip (d .maps , e .maps ):
7274 self .assertIsNot (m1 , m2 , e )
7375
74- d = d .new_child ()
75- d ['b' ] = 5
76- self .assertEqual (d .maps , [{'b' : 5 }, {'c' :30 }, {'a' :1 , 'b' :2 }])
77- self .assertEqual (d .parents .maps , [{'c' :30 }, {'a' :1 , 'b' :2 }]) # check parents
78- self .assertEqual (d ['b' ], 5 ) # find first in chain
79- self .assertEqual (d .parents ['b' ], 2 ) # look beyond maps[0]
76+ f = d .new_child ()
77+ f ['b' ] = 5
78+ self .assertEqual (f .maps , [{'b' : 5 }, {'c' :30 }, {'a' :1 , 'b' :2 }])
79+ self .assertEqual (f .parents .maps , [{'c' :30 }, {'a' :1 , 'b' :2 }]) # check parents
80+ self .assertEqual (f ['b' ], 5 ) # find first in chain
81+ self .assertEqual (f .parents ['b' ], 2 ) # look beyond maps[0]
8082
8183 def test_contructor (self ):
82- self .assertEqual (_ChainMap ().maps , [{}]) # no-args --> one new dict
83- self .assertEqual (_ChainMap ({1 :2 }).maps , [{1 :2 }]) # 1 arg --> list
84+ self .assertEqual (ChainMap ().maps , [{}]) # no-args --> one new dict
85+ self .assertEqual (ChainMap ({1 :2 }).maps , [{1 :2 }]) # 1 arg --> list
86+
87+ def test_bool (self ):
88+ self .assertFalse (ChainMap ())
89+ self .assertFalse (ChainMap ({}, {}))
90+ self .assertTrue (ChainMap ({1 :2 }, {}))
91+ self .assertTrue (ChainMap ({}, {1 :2 }))
8492
8593 def test_missing (self ):
86- class DefaultChainMap (_ChainMap ):
94+ class DefaultChainMap (ChainMap ):
8795 def __missing__ (self , key ):
8896 return 999
8997 d = DefaultChainMap (dict (a = 1 , b = 2 ), dict (b = 20 , c = 30 ))
@@ -100,7 +108,7 @@ def __missing__(self, key):
100108 d .popitem ()
101109
102110 def test_dict_coercion (self ):
103- d = _ChainMap (dict (a = 1 , b = 2 ), dict (b = 20 , c = 30 ))
111+ d = ChainMap (dict (a = 1 , b = 2 ), dict (b = 20 , c = 30 ))
104112 self .assertEqual (dict (d ), dict (a = 1 , b = 2 , c = 30 ))
105113 self .assertEqual (dict (d .items ()), dict (a = 1 , b = 2 , c = 30 ))
106114
0 commit comments