Exemplo n.º 1
0
def test_ScalarVariable_start(var_type, value, causality, initial,
                              variability):
    var_obj = var_type("var",
                       causality=causality,
                       description="a variable",
                       initial=initial,
                       variability=variability)

    class PySlave(Fmi2Slave):
        def __init__(self, **kwargs):
            super().__init__(**kwargs)
            setattr(self, "var", value)
            self.register_variable(var_obj)

        def do_step(self, current_time: float, step_size: float):
            return True

    slave = PySlave(instance_name="testInstance")

    xml = slave.to_xml()
    var_node = xml.find(".//ScalarVariable[@name='var']")
    assert var_node is not None

    if ScalarVariable.requires_start(var_obj):
        assert var_obj.start == value
    else:
        assert var_obj.start is None
Exemplo n.º 2
0
def test_ScalarVariable_to_xml(causality, initial, variability, name,
                               description):
    var = ScalarVariable(name, causality, description, initial, variability)
    valueReference = randint(0, 25000)
    var.value_reference = valueReference

    node = var.to_xml()
    assert node.tag == 'ScalarVariable'
    args = locals()
    for attr in SCALAR_VARIABLE_ATTRIBUTES:
        value = args[attr]
        if value is not None:
            if isinstance(value, Enum):
                assert node.attrib[attr] == value.name
            else:
                assert node.attrib[attr] == str(value)
Exemplo n.º 3
0
def test_ScalarVariable_constructor(causality, initial, variability, name,
                                    description):
    var = ScalarVariable(name, causality, description, initial, variability)

    assert var.name == name
    assert var.value_reference is None
    assert var.causality == causality
    assert var.description == description
    assert var.initial == initial
    assert var.variability == variability
Exemplo n.º 4
0
def test_ScalarVariable_reference_set_once_only():
    v = ScalarVariable('variable')
    v.value_reference = 22

    with pytest.raises(RuntimeError):
        v.value_reference = 33