# 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)"