def getter(self, name, getter=None): if not getter: method = 'field_{0}'.format(name) return (getattr(self, method) if hasattr(self, method) else lambda o: recursive_get(o, name)) return ((lambda o: recursive_get(o, getter)) if isinstance( getter, basestring) else getter)
def getter(self, name, getter=None): if not getter: method = 'field_{0}'.format(name) return (getattr(self, method) if hasattr(self, method) else lambda o: recursive_get(o, name)) return ((lambda o: recursive_get(o, getter)) if isinstance(getter, basestring) else getter)
def test_get_nested_attribute(self): class Nested(object): attr = 'value' class Tester(object): def __init__(self): self.nested = Nested() tester = Tester() assert recursive_get(tester, 'nested.attr') == 'value'
def test_nested_attribute_not_found(self): class Nested(object): attr = 'value' class Tester(object): def __init__(self): self.nested = Nested() tester = Tester() assert recursive_get(tester, 'nested.not_found') is None
def test_get_root_key(self): tester = {'key': 'value'} self.assertEqual(recursive_get(tester, 'key'), 'value')
def test_get_on_none(self): assert recursive_get(None, 'attr') is None
def test_nested_key_not_found(self): tester = {'nested': {'key': 'value'}} self.assertEqual(recursive_get(tester, 'nested.not_found'), None)
def test_get_key_none(self): tester = {'key': 'value'} self.assertEqual(recursive_get(tester, None), None) self.assertEqual(recursive_get(tester, ''), None)
def test_attr_not_found(self): class Tester(object): pass tester = Tester() self.assertEqual(recursive_get(tester, 'attr'), None)
def test_attr_not_found(self): class Tester(object): pass tester = Tester() assert recursive_get(tester, 'attr') is None
def test_get_nested_key(self): tester = {'nested': {'key': 'value'}} assert recursive_get(tester, 'nested.key') == 'value'
def test_get_root_key(self): tester = {'key': 'value'} assert recursive_get(tester, 'key') == 'value'
def test_get_root_attribute(self): class Tester(object): attr = 'value' tester = Tester() assert recursive_get(tester, 'attr') == 'value'
def test_get_on_none(self): self.assertEqual(recursive_get(None, 'attr'), None)
def test_key_not_found(self): tester = {'key': 'value'} assert recursive_get(tester, 'not-found') is None
def test_get_nested_key(self): tester = {'nested': {'key': 'value'}} self.assertEqual(recursive_get(tester, 'nested.key'), 'value')
def test_key_not_found(self): tester = {'key': 'value'} self.assertEqual(recursive_get(tester, 'not-found'), None)
def test_nested_key_not_found(self): tester = {'nested': {'key': 'value'}} assert recursive_get(tester, 'nested.not_found') is None
def test_get_key_none(self): tester = {'key': 'value'} assert recursive_get(tester, None) is None assert recursive_get(tester, '') is None
def test_get_root_attribute(self): class Tester(object): attr = 'value' tester = Tester() self.assertEqual(recursive_get(tester, 'attr'), 'value')