import pytest from tjnetwork import * class TestApi: def enter(self, p): if is_project_open(p): close_project(p) if have_project(p): delete_project(p) create_project(p) open_project(p) def leave(self, p): close_project(p) delete_project(p) def test_title(self): p = "test_title" self.enter(p) assert get_title(p) == "" set_title(p, "title") assert get_title(p) == "title" set_title(p, "test") assert get_title(p) == "test" self.leave(p) def test_junction(self): p = "test_junction" self.enter(p) 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]['id'] == "j0" coord = get_junction_coord(p, 'j0') assert coord['x'] == 0.0 assert coord['y'] == 10.0 z = get_junction_elevation(p, 'j0') assert z == 20.0 assert get_junction_demand(p, 'j') == None 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]['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]['id'] == "j1" nodes = get_nodes(p) assert len(nodes) == 2 assert nodes[0] == "j0" assert nodes[1] == "j1" change_set = delete_junction(p, 'j1') assert len(change_set.deleted) == 1 assert change_set.deleted[0]['type'] == JUNCTION assert change_set.deleted[0]['id'] == "j1" nodes = get_nodes(p) assert len(nodes) == 1 assert nodes[0] == "j0" change_set = delete_junction(p, 'j0') assert len(change_set.deleted) == 1 assert change_set.deleted[0]['type'] == JUNCTION assert change_set.deleted[0]['id'] == "j0" nodes = get_nodes(p) assert len(nodes) == 0 self.leave(p) def test_reservoir(self): 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 def test_pipe(self): pass def test_pump(self): pass def test_valve(self): pass def test_coordinate(self): pass if __name__ == '__main__': pytest.main()