Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
test_property_view.py 2.89 KiB
import pytest

from property_view import PropertyView
from converter import Converter, Dependency
from open_scenario_tree import OscProperty

@pytest.mark.parametrize("node, converter, oscProperty, expected_result", [
    ("node_", Converter([], "propName", {}), [OscProperty("propName", "type", False, False, False)], "ConvertScenarioPropName(node_->GetPropName())"),
    ("node_", Converter([], "propName", {}), [OscProperty("propName", "type", True, False, False)], "ConvertScenarioPropName(node_->IsSetPropName() ? std::make_optional(node_->GetPropName()) : std::nullopt)"),
    ("node_", Converter([], "propName", {}), [OscProperty("propName", "type", False, True, False)], "ConvertScenarioPropName(node_->GetPropName())"),
    ("node_", Converter([], "propName", {}), [OscProperty("propName", "type", False, False, True)], "ConvertScenarioPropName(node_->GetPropName())"),
    ("node_", Converter([], "propName", {}), [OscProperty("propName", "type", True, True, False)], "ConvertScenarioPropName(node_->IsSetPropName() ? std::make_optional(node_->GetPropName()) : std::nullopt)"),
    ("node_", Converter([], "propName", {}), [OscProperty("propName", "type", True, False, True)], "ConvertScenarioPropName(node_->IsSetPropName() ? std::make_optional(node_->GetPropName()) : std::nullopt)"),
    ("node_", Converter([], "propName", {}), [OscProperty("propName", "type", False, True, True)], "ConvertScenarioPropName(node_->GetPropName())"),
    ("node_", Converter([], "propName", {}), [OscProperty("propName", "type", True, True, True)], "ConvertScenarioPropName(node_->IsSetPropName() ? std::make_optional(node_->GetPropName()) : std::nullopt)")
])
def test__given_property_with_converter__generates_property_views_with_converters(node, converter, oscProperty, expected_result):
    obj = PropertyView(node, converter, oscProperty)
    assert str(obj) == expected_result

def test__given_property_and_optional_property_with_converter__generates_property_views_with_ternary_operator():
    obj = PropertyView("node_", Converter([], "MyConv", {}), [OscProperty("propName1", "type", False, False, False), OscProperty("propName2", "type", True, False, False)])
    assert str(obj) == "ConvertScenarioMyConv(node_->GetPropName1(), node_->IsSetPropName2() ? std::make_optional(node_->GetPropName2()) : std::nullopt)"

def test__given_property_with_no_converters__generates_property_views_without_converters():
    obj = PropertyView("node_", None, [OscProperty("propName1", "type", False, False, False)])
    assert str(obj) == "node_->GetPropName1()"

def test__given_property_and_optional_property_with_converter__generates_property_views_with_ternary_operator213():
    dep = {"Environment": Dependency("environment", "", "")}
    obj = PropertyView("node_", Converter(dep, "MyConv", {'Dependencies': ['Environment']}), [OscProperty("propName1", "type", False, False, False)])
    assert str(obj) == "ConvertScenarioMyConv(environment, node_->GetPropName1())"