diff --git a/api/s7_valves.py b/api/s7_valves.py index 3a8bace..74d3fb4 100644 --- a/api/s7_valves.py +++ b/api/s7_valves.py @@ -19,6 +19,8 @@ def add_valve(name: str, id: str, node1: str, node2: str, diameter: float = 0, t return ChangeSet() if node1 == node2: return ChangeSet() + if type != VALVES_TYPE_PRV and type != VALVES_TYPE_PSV and type != VALVES_TYPE_PBV and type != VALVES_TYPE_FCV and type != VALVES_TYPE_TCV and type != VALVES_TYPE_GPV: + return ChangeSet() sql = f"insert into valves (id, node1, node2, diameter, type, setting, minor_loss) values ('{id}', '{node1}', '{node2}', {diameter}, '{type}', {setting}, {minor_loss});" undo_sql = f'delete from valves where id = "{id}";' diff --git a/test_tjnetwork.py b/test_tjnetwork.py index 6bdf309..7ef7a28 100644 --- a/test_tjnetwork.py +++ b/test_tjnetwork.py @@ -449,10 +449,126 @@ class TestApi: assert change_set.deleted[0]['id'] == "p2" self.leave(p) - pass def test_valve(self): - pass + p = "test_valve" + self.enter(p) + + change_set = add_valve(p, 'v1', 'j1', 'j2', 10.0, VALVES_TYPE_FCV, 10.0, 10.0) + assert len(change_set.added) == 0 + + add_junction(p, 'j1', 0.0, 0.0, 0.0) + add_junction(p, 'j2', 10.0, 10.0, 0.0) + add_junction(p, 'j3', 0.0, 0.0, 0.0) + add_junction(p, 'j4', 10.0, 10.0, 0.0) + assert is_junction(p, 'j1') + assert is_junction(p, 'j2') + assert is_junction(p, 'j3') + assert is_junction(p, 'j4') + + assert not is_link(p, 'v1') + + change_set = add_valve(p, 'v1', 'j1', 'j2', 10.0, "xxx", 10.0, 10.0) + assert len(change_set.added) == 0 + + change_set = add_valve(p, 'v1', 'j1', 'j1', 10.0, VALVES_TYPE_FCV, 10.0, 10.0) + assert len(change_set.added) == 0 + + change_set = add_valve(p, 'v1', 'j1', 'j2', 10.0, VALVES_TYPE_FCV, 10.0, 10.0) + assert len(change_set.added) == 1 + assert change_set.added[0]['type'] == VALVE + assert change_set.added[0]['id'] == "v1" + + change_set = add_valve(p, 'v1', 'j1', 'j2', 10.0, VALVES_TYPE_FCV, 10.0, 10.0) + assert len(change_set.added) == 0 + + valves = get_links(p) + assert len(valves) == 1 + + assert get_valve_node1(p, 'v1') == 'j1' + assert get_valve_node2(p, 'v1') == 'j2' + assert get_valve_diameter(p, 'v1') == 10.0 + assert get_valve_type(p, 'v1') == VALVES_TYPE_FCV + assert get_valve_setting(p, 'v1') == 10.0 + assert get_valve_minor_loss(p, 'v1') == 10.0 + + change_set = set_valve_node1(p, 'v1', 'j2') + assert len(change_set.updated) == 0 + change_set = set_valve_node2(p, 'v1', 'j1') + assert len(change_set.updated) == 0 + change_set = set_valve_type(p, 'v1', "XXX") + assert len(change_set.updated) == 0 + + change_set = set_valve_node1(p, 'v1', 'j3') + assert len(change_set.updated) == 1 + assert change_set.updated[0]['type'] == VALVE + assert change_set.updated[0]['id'] == 'v1' + assert change_set.updated[0]['property'] == 'node1' + + change_set = set_valve_node2(p, 'v1', 'j4') + assert len(change_set.updated) == 1 + assert change_set.updated[0]['type'] == VALVE + assert change_set.updated[0]['id'] == 'v1' + assert change_set.updated[0]['property'] == 'node2' + + change_set = set_valve_diameter(p, 'v1', 100.0) + assert len(change_set.updated) == 1 + assert change_set.updated[0]['type'] == VALVE + assert change_set.updated[0]['id'] == 'v1' + assert change_set.updated[0]['property'] == 'diameter' + + change_set = set_valve_type(p, 'v1', VALVES_TYPE_GPV) + assert len(change_set.updated) == 1 + assert change_set.updated[0]['type'] == VALVE + assert change_set.updated[0]['id'] == 'v1' + assert change_set.updated[0]['property'] == 'type' + + change_set = set_valve_setting(p, 'v1', 100.0) + assert len(change_set.updated) == 1 + assert change_set.updated[0]['type'] == VALVE + assert change_set.updated[0]['id'] == 'v1' + assert change_set.updated[0]['property'] == 'setting' + + change_set = set_valve_minor_loss(p, 'v1', 100.0) + assert len(change_set.updated) == 1 + assert change_set.updated[0]['type'] == VALVE + assert change_set.updated[0]['id'] == 'v1' + assert change_set.updated[0]['property'] == 'minor_loss' + + assert get_valve_node1(p, 'v1') == 'j3' + assert get_valve_node2(p, 'v1') == 'j4' + assert get_valve_diameter(p, 'v1') == 100.0 + assert get_valve_type(p, 'v1') == VALVES_TYPE_GPV + assert get_valve_setting(p, 'v1') == 100.0 + assert get_valve_minor_loss(p, 'v1') == 100.0 + + change_set = add_valve(p, 'v2', 'j1', 'j2', 10.0, VALVES_TYPE_FCV, 10.0, 10.0) + assert len(change_set.added) == 1 + assert change_set.added[0]['type'] == VALVE + assert change_set.added[0]['id'] == "v2" + + valves = get_links(p) + assert len(valves) == 2 + + change_set = delete_valve(p, 'v') + assert len(change_set.deleted) == 0 + + assert is_valve(p, 'v1') + + change_set = delete_valve(p, 'v1') + assert len(change_set.deleted) == 1 + assert change_set.deleted[0]['type'] == VALVE + assert change_set.deleted[0]['id'] == "v1" + + valves = get_links(p) + assert len(valves) == 1 + + change_set = delete_valve(p, 'v2') + assert len(change_set.deleted) == 1 + assert change_set.deleted[0]['type'] == VALVE + assert change_set.deleted[0]['id'] == "v2" + + self.leave(p) def test_coordinate(self): pass diff --git a/tjnetwork.py b/tjnetwork.py index 9d8cddb..7e65944 100644 --- a/tjnetwork.py +++ b/tjnetwork.py @@ -369,7 +369,7 @@ def get_valve_node1(name: str, valve_id: str) -> str | None: return api.get_valve_node1(name, valve_id) def get_valve_node2(name: str, valve_id: str) -> str | None: - return api.get_valve_node1(name, valve_id) + return api.get_valve_node2(name, valve_id) def get_valve_diameter(name: str, valve_id: str) -> float | None: return api.get_valve_diameter(name, valve_id)