Source code for ewokscore.tests.test_variable_namespaces
import pytest
from ewokscore import missing_data
from ewokscore.variable import MutableVariableContainer
from ewokscore.variable import VariableContainerNamespace
from ewokscore.variable import ReadOnlyVariableContainerNamespace
from ewokscore.variable import VariableContainerMissingNamespace
from ewokscore.variable import MissingVariableError
from ewokscore.variable import ReadOnlyVariableError
[docs]
def test_namespace():
variables = MutableVariableContainer(
value={"a": None, 0: 1, "c": missing_data.MISSING_DATA}
)
namespace = VariableContainerNamespace(variables)
assert namespace.a is None
assert namespace["a"] is None
assert namespace[0] == 1
assert namespace.c is missing_data.MISSING_DATA
assert namespace["c"] is missing_data.MISSING_DATA
with pytest.raises(MissingVariableError):
namespace.wrong
with pytest.raises(MissingVariableError):
namespace["wrong"]
namespace.a = 10
assert namespace.a == 10
namespace["a"] = 20
assert namespace["a"] == 20
[docs]
def test_readonly_namespace():
variables = MutableVariableContainer(
value={"a": None, 0: 1, "c": missing_data.MISSING_DATA}
)
namespace = ReadOnlyVariableContainerNamespace(variables)
assert namespace.a is None
assert namespace["a"] is None
assert namespace[0] == 1
assert namespace.c is missing_data.MISSING_DATA
assert namespace["c"] is missing_data.MISSING_DATA
with pytest.raises(MissingVariableError):
namespace.wrong
with pytest.raises(MissingVariableError):
namespace["wrong"]
with pytest.raises(ReadOnlyVariableError):
namespace.a = 10
with pytest.raises(ReadOnlyVariableError):
namespace["a"] = 10
[docs]
def test_missing_namespace():
variables = MutableVariableContainer(
value={"a": None, 0: 1, "c": missing_data.MISSING_DATA}
)
namespace = VariableContainerMissingNamespace(variables)
assert namespace.a is False
assert namespace["a"] is False
assert namespace[0] is False
assert namespace.c is True
assert namespace["c"] is True
with pytest.raises(MissingVariableError):
namespace.wrong
with pytest.raises(MissingVariableError):
namespace["wrong"]
with pytest.raises(ReadOnlyVariableError):
namespace.a = True
with pytest.raises(ReadOnlyVariableError):
namespace["a"] = True