def test_set(self): convert = TypedDict(mydict) convert.a = 8 # works assert convert.a == 8 convert['b'] = 9.3 # works assert convert['b'] == 9 assert convert.b == convert['b']
def test_descriptor(self): venum = TypedEnum(abc) data = dict(mydict) data['enum'] = venum data = TypedDict(data) data.enum = 1 self.assertEqual(data.enum, 'b') self.assertRaises(ValueError, data.__setattr__, 'enum', 'z')
def test_set_update(self): '''Makes sure that object can set values like "update" that are also attributes (through item assignment)''' udict = deepcopy(mydict) udict['update'] = 'start' attrdict = TypedDict(udict) self.assertEqual(attrdict['update'], 'start') attrdict['update'] = 'hi' self.assertNotEqual(attrdict.update, 'hi') self.assertEqual(attrdict['update'], 'hi') attrdict.update({ 'update': 'hello' }) self.assertNotEqual(attrdict.update, 'hello') self.assertEqual(attrdict['update'], 'hello')
def test_readonly(self): frozen = TypedDict(mydict) frozen.readonly = True self.assertRaises(TypeError, setattr, frozen, 'a', 5) self.assertRaises(TypeError, setattr, frozen, 'own', TypedDict({})) self.assertRaises(TypeError, setattr, frozen, 'own', {})