diff --git a/api/s24_coordinates.py b/api/s24_coordinates.py index 268574a..2337f09 100644 --- a/api/s24_coordinates.py +++ b/api/s24_coordinates.py @@ -23,10 +23,7 @@ def get_node_coord(name: str, id: str) -> dict[str, float] | None: return _to_point(coord) -def set_node_coord(name: str, id: str, x: float, y: float) -> ChangeSet: - if not is_junction(name, id): - return ChangeSet() - +def set_node_coord(name: str, node_type: str, id: str, x: float, y: float) -> ChangeSet: old = get_node_coord(name, id) if old == None: return ChangeSet() @@ -42,5 +39,5 @@ def set_node_coord(name: str, id: str, x: float, y: float) -> ChangeSet: add_operation(name, redo, undo) change = ChangeSet() - change.update('junction', id, 'coord', 'point', str({'x': x, 'y': y})) + change.update(node_type, id, 'coord', 'point', str({'x': x, 'y': y})) return change diff --git a/api/s2_junctions.py b/api/s2_junctions.py index 6c029c0..3e8df88 100644 --- a/api/s2_junctions.py +++ b/api/s2_junctions.py @@ -85,4 +85,7 @@ def set_junction_pattern(name: str, id: str, pattern: str) -> ChangeSet: def set_junction_coord(name: str, id: str, x: float, y: float) -> ChangeSet: - return set_node_coord(name, id, x, y) + if not is_junction(name, id): + return ChangeSet() + + return set_node_coord(name, JUNCTION, id, x, y) diff --git a/api/s3_reservoirs.py b/api/s3_reservoirs.py index 7eb58bc..7394f75 100644 --- a/api/s3_reservoirs.py +++ b/api/s3_reservoirs.py @@ -72,4 +72,7 @@ def set_reservoir_pattern(name: str, id: str, pattern: str) -> ChangeSet: def set_reservoir_coord(name: str, id: str, x: float, y: float) -> ChangeSet: - return set_node_coord(name, id, x, y) + if not is_reservoir(name, id): + return ChangeSet() + + return set_node_coord(name, RESERVOIR, id, x, y) diff --git a/api/s4_tanks.py b/api/s4_tanks.py index 1707172..6302ac9 100644 --- a/api/s4_tanks.py +++ b/api/s4_tanks.py @@ -142,4 +142,7 @@ def set_tank_overflow(name: str, id: str, overflow: str) -> ChangeSet: def set_tank_coord(name: str, id: str, x: float, y: float) -> ChangeSet: - return set_node_coord(name, id, x, y) + if not is_tank(name, id): + return ChangeSet() + + return set_node_coord(name, TANK, id, x, y) diff --git a/test_tjnetwork.py b/test_tjnetwork.py index 9f7e02a..7d47a1a 100644 --- a/test_tjnetwork.py +++ b/test_tjnetwork.py @@ -36,7 +36,7 @@ class TestApi: change_set = add_junction(p, "j0", 0.0, 10.0, 20.0) assert len(change_set.added) == 1 - assert change_set.added[0]['type'] == 'junction' + assert change_set.added[0]['type'] == JUNCTION assert change_set.added[0]['id'] == "j0" coord = get_junction_coord(p, 'j0') assert coord['x'] == 0.0 @@ -48,16 +48,18 @@ class TestApi: assert get_junction_demand(p, 'j0') == "NULL" change_set = set_junction_demand(p, 'j0', 100.0) assert len(change_set.updated) == 1 - assert change_set.updated[0]['type'] == 'junction' + assert change_set.updated[0]['type'] == JUNCTION assert change_set.updated[0]['id'] == 'j0' assert change_set.updated[0]['property'] == 'demand' assert change_set.updated[0]['property_type'] == 'float' assert change_set.updated[0]['property_value'] == str(100.0) assert get_junction_demand(p, 'j0') == 100.0 + # TODO: pattern + change_set = add_junction(p, "j1", 0.0, 10.0, 20.0) assert len(change_set.added) == 1 - assert change_set.added[0]['type'] == 'junction' + assert change_set.added[0]['type'] == JUNCTION assert change_set.added[0]['id'] == "j1" nodes = get_nodes(p) @@ -67,7 +69,7 @@ class TestApi: change_set = delete_junction(p, 'j1') assert len(change_set.deleted) == 1 - assert change_set.deleted[0]['type'] == 'junction' + assert change_set.deleted[0]['type'] == JUNCTION assert change_set.deleted[0]['id'] == "j1" nodes = get_nodes(p) @@ -76,7 +78,7 @@ class TestApi: change_set = delete_junction(p, 'j0') assert len(change_set.deleted) == 1 - assert change_set.deleted[0]['type'] == 'junction' + assert change_set.deleted[0]['type'] == JUNCTION assert change_set.deleted[0]['id'] == "j0" nodes = get_nodes(p) @@ -84,10 +86,39 @@ class TestApi: self.leave(p) - pass - def test_reservoir(self): - pass + p = "test_reservoir" + self.enter(p) + + change_set = add_reservoir(p, "r0", 0.0, 10.0, 20.0) + assert len(change_set.added) == 1 + assert change_set.added[0]['type'] == RESERVOIR + assert change_set.added[0]['id'] == "r0" + + assert get_reservoir_head(p, 'r0') == 20.0 + change_set = set_reservoir_head(p, 'r0', 100.0) + assert change_set.updated[0]['type'] == RESERVOIR + assert change_set.updated[0]['id'] == 'r0' + assert change_set.updated[0]['property'] == 'head' + assert change_set.updated[0]['property_type'] == 'float' + assert change_set.updated[0]['property_value'] == str(100.0) + assert get_reservoir_head(p, 'r0') == 100.0 + + assert get_reservoir_coord(p, 'r0') == { 'x': 0.0, 'y': 10.0 } + change_set = set_reservoir_coord(p, 'r0', 100.0, 200.0) + assert change_set.updated[0]['type'] == RESERVOIR + assert change_set.updated[0]['id'] == 'r0' + assert change_set.updated[0]['property'] == 'coord' + assert change_set.updated[0]['property_type'] == 'point' + assert change_set.updated[0]['property_value'] == str({'x': 100.0, 'y': 200.0}) + assert get_reservoir_coord(p, 'r0') == { 'x': 100.0, 'y': 200.0 } + + change_set = delete_reservoir(p, 'r0') + assert len(change_set.deleted) == 1 + assert change_set.deleted[0]['type'] == RESERVOIR + assert change_set.deleted[0]['id'] == "r0" + + self.leave(p) def test_tank(self): pass diff --git a/tjnetwork.py b/tjnetwork.py index f5b215d..9d8cddb 100644 --- a/tjnetwork.py +++ b/tjnetwork.py @@ -189,8 +189,8 @@ def set_junction_coord(name: str, junction_id: str, x: float, y: float) -> Chang # reservoir 3.[RESERVOIRS] ############################################################ -def add_reservoir(name: str, reservoir_id: str, x: float, y: float, elevation: float) -> ChangeSet: - return api.add_reservoir(name, reservoir_id, x, y, elevation) +def add_reservoir(name: str, reservoir_id: str, x: float, y: float, head: float) -> ChangeSet: + return api.add_reservoir(name, reservoir_id, x, y, head) def delete_reservoir(name: str, reservoir_id: str) -> ChangeSet: return api.delete_reservoir(name, reservoir_id) @@ -204,8 +204,8 @@ def get_reservoir_pattern(name: str, reservoir_id: str) -> str | None: def get_reservoir_coord(name: str, reservoir_id: str) -> dict[str, float] | None: return api.get_reservoir_coord(name, reservoir_id) -def set_reservoir_head(name: str, reservoir_id: str, elevation: float) -> ChangeSet: - return api.set_reservoir_head(name, reservoir_id, elevation) +def set_reservoir_head(name: str, reservoir_id: str, head: float) -> ChangeSet: + return api.set_reservoir_head(name, reservoir_id, head) def set_reservoir_pattern(name: str, reservoir_id: str, pattern: str) -> ChangeSet: return api.set_reservoir_pattern(name, reservoir_id, pattern)