def test_proxy_dir(self): p_obj = dict() p = Proxy(p_obj) assert p._resolve() == p_obj # Dir p should contain at least the objects of dir assert set(dir(p)) >= set(dir(p_obj))
def test_proxy_setattr(self): class TT(object): foo = 'foo' tt = Proxy(TT()) tt.foo = 'bar' assert tt.__getattr__('foo') == 'bar'
def test_proxy_call(self): class _test_proxy(object): calls = 0 def __call__(self, *args, **kwargs): _test_proxy.calls += 1 return _test_proxy.calls p = Proxy(_test_proxy()) p_arg_obj = object() assert p(p_arg_obj) == 1 assert p._resolve()() == 2
def test_proxy_items(self): p_obj = dict() p = Proxy(p_obj) assert p._resolve() == p_obj assert not ('key' in p) p['key'] = 'foo' assert 'key' in p assert p._resolve()['key'] == 'foo' assert p['key'] == 'foo' del p['key'] assert not ('key' in p)
def test_proxy_iter(self): p_iters = 0 p_obj = dict(key='foo') p = Proxy(p_obj) for x in p: p_iters += 1 assert x == 'key' assert len(p) == 1 assert p_iters == 1
def test_proxy_attr(self): p = Proxy() p._set_resolver_obj(self) assert p._resolve() == self assert hasattr(p, 'foo') == False p.foo = 'foo' assert hasattr(p, 'foo') assert p.foo == 'foo' del p.foo assert hasattr(p, 'foo') == False
def test_proxy_callable_obj(self): p_stack = [] p = Proxy() assert p._resolve() is None def p_func(arg): p_stack.append(arg) return arg p._set_resolver_obj(p_func) assert p._resolve() == p_func p_arg_obj = object() assert p(p_arg_obj) == p_arg_obj assert p_stack.pop() == p_arg_obj
def test_proxy_len(self): p_obj = dict(key='foo') p = Proxy(p_obj) assert p._resolve() == p_obj assert len(p) == 1
def test_proxy_contains(self): p_obj = dict(key='foo') p = Proxy(p_obj) assert p._resolve() == p_obj assert 'key' in p
def test_proxy_str(self): p_obj = dict(foo='bar') p = Proxy(p_obj) assert p._resolve() == p_obj assert "{'foo': 'bar'}" in str(p)
def test_proxy_init_with_arg(self): p_obj = dict() p = Proxy(p_obj) assert p._resolve() == p_obj
def test_proxy_init_no_arg(self): p = Proxy() assert p._resolve() is None