You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.6 KiB
66 lines
1.6 KiB
# pylint: disable=comparison-with-callable, pointless-statement
|
|
import pytest
|
|
from namespace_proxy import NamespaceProxy
|
|
|
|
|
|
def test_namespace_access():
|
|
def dummy_func(val_a):
|
|
return F"ret {val_a}"
|
|
|
|
back_dict = {'int': 1, 'str': 'string', 'func': dummy_func}
|
|
proxy = NamespaceProxy(back_dict)
|
|
assert proxy.int == 1
|
|
assert proxy.str == 'string'
|
|
assert proxy.func == dummy_func
|
|
assert proxy.func(5) == 'ret 5'
|
|
|
|
|
|
def test_namespace_errors():
|
|
back_dict = {'b': 2}
|
|
proxy = NamespaceProxy(back_dict)
|
|
|
|
with pytest.raises(KeyError):
|
|
proxy.a
|
|
|
|
with pytest.raises(TypeError, match="does not allow attributes to be modified"):
|
|
proxy.b = 3
|
|
|
|
with pytest.raises(TypeError, match="does not allow attributes to be modified"):
|
|
del proxy.b
|
|
|
|
|
|
def test_namespace_update():
|
|
back_dict = {'b': 2}
|
|
proxy = NamespaceProxy(back_dict)
|
|
with pytest.raises(KeyError):
|
|
proxy.a
|
|
back_dict['a'] = 3
|
|
assert proxy.a == 3
|
|
|
|
|
|
def test_dunder_passthrough():
|
|
back_dict = {'a': 1}
|
|
proxy = NamespaceProxy(back_dict)
|
|
d = dir(proxy)
|
|
print(d)
|
|
assert proxy.__class__ == NamespaceProxy
|
|
|
|
|
|
def test_equality():
|
|
back_dict = {'a': 1}
|
|
proxy = NamespaceProxy(back_dict)
|
|
proxy_b = NamespaceProxy(back_dict)
|
|
proxy_c = NamespaceProxy({'c': 3})
|
|
assert proxy == proxy_b
|
|
assert proxy != proxy_c
|
|
assert proxy != back_dict
|
|
assert proxy is not False
|
|
assert proxy
|
|
|
|
|
|
def test_repr():
|
|
back_dict = {'a': 1, 'b': 2}
|
|
proxy = NamespaceProxy(back_dict)
|
|
assert str(proxy) == "NamespaceProxy(a=1, b=2)"
|
|
assert repr(proxy) == "NamespaceProxy(a=1, b=2)"
|