def test_pop(self): ''' pop(). - The normal pop() behavior applies to all types of superdicts. - Calls to pop() should remove the attr and the key. ''' # Superdict: sd = Superdict(a = 11, b = 22) # - regular attribute. aEq(sd.pop('a'), 11) aEq(sd.get('a'), None) aEq(getattr(sd, 'a', None), None) aEq(sd.pop('z', 777), 777) # - protected attribute. sd.pop = 33 aEq(sd.pop('pop'), 33) aEq(sd.get('pop'), None) self.assertIsInstance(getattr(sd, 'pop', None), types.MethodType) # - attributes that do not exist. aEq(sd.pop('update', 1234), 1234) with aRaz(KERR): sd.pop('update') with aRaz(KERR): sd.pop('z') # - wrong N of args. with aRaz(TERR): sd.pop() with aRaz(TERR): sd.pop('z', 1234, 567) # StrictSuperdict: sd = StrictSuperdict('ab', a = 11, b = 22) # - regular attribute. aEq(sd.pop('a'), 11) aEq(sd.pop('a', 99), 99) # - non-approved attribute. with aRaz(KERR): sd.pop('update') with aRaz(KERR): sd.pop('z') # RelaxedSuperdict: overridden = 'get setdefault'.split() sd = RelaxedSuperdict(overridden, a = 11, b = 22) # - regular attribute. aEq(sd.pop('a'), 11) aEq(sd.pop('a', 99), 99) # - overridden attribute. sd.setdefault = 1234 aEq(sd.pop('setdefault'), 1234)
def test_get(self): ''' get(). - The normal get() behavior applies to all types of superdicts. ''' # Regular. sd = Superdict(a = 11, b = 22) aEq(sd.get('a'), 11) aEq(sd.get('z'), None) aEq(sd.get('update'), None) # Strict. sd = StrictSuperdict('ab', a = 11, b = 22) aEq(sd.get('a'), 11) aEq(sd.get('z'), None) aEq(sd.get('update'), None) # Relaxed. sd = RelaxedSuperdict('pop'.split(), a = 11, b = 22, pop = 333) aEq(sd.get('a'), 11) aEq(sd.get('z'), None) aEq(sd.get('update'), None) aEq(sd.get('pop'), 333)