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 } # TODO: pattern 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): p = "test_tank" self.enter(p) change_set = add_tank(p, "t0", 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0) assert len(change_set.added) == 1 assert change_set.added[0]['type'] == TANK assert change_set.added[0]['id'] == "t0" change_set = add_tank(p, "t1", 0.0, 10.0, 20.0) assert len(change_set.added) == 1 assert change_set.added[0]['type'] == TANK assert change_set.added[0]['id'] == "t1" tanks = get_nodes(p) assert len(tanks) == 2 assert tanks[0] == 't0' assert tanks[1] == 't1' assert get_tank_elevation(p, 't0') == 10.0 change_set = set_tank_elevation(p, 't0', 100.0) assert len(change_set.updated) == 1 assert change_set.updated[0]['type'] == TANK assert change_set.updated[0]['id'] == "t0" assert change_set.updated[0]['property'] == 'elevation' assert get_tank_elevation(p, 't0') == 100.0 assert get_tank_init_level(p, 't0') == 10.0 change_set = set_tank_init_level(p, 't0', 100.0) assert len(change_set.updated) == 1 assert change_set.updated[0]['type'] == TANK assert change_set.updated[0]['id'] == "t0" assert change_set.updated[0]['property'] == 'init_level' assert get_tank_init_level(p, 't0') == 100.0 assert get_tank_min_level(p, 't0') == 10.0 change_set = set_tank_min_level(p, 't0', 100.0) assert len(change_set.updated) == 1 assert change_set.updated[0]['type'] == TANK assert change_set.updated[0]['id'] == "t0" assert change_set.updated[0]['property'] == 'min_level' assert get_tank_min_level(p, 't0') == 100.0 assert get_tank_max_level(p, 't0') == 10.0 change_set = set_tank_max_level(p, 't0', 100.0) assert len(change_set.updated) == 1 assert change_set.updated[0]['type'] == TANK assert change_set.updated[0]['id'] == "t0" assert change_set.updated[0]['property'] == 'max_level' assert get_tank_max_level(p, 't0') == 100.0 assert get_tank_diameter(p, 't0') == 10.0 change_set = set_tank_diameter(p, 't0', 100.0) assert len(change_set.updated) == 1 assert change_set.updated[0]['type'] == TANK assert change_set.updated[0]['id'] == "t0" assert change_set.updated[0]['property'] == 'diameter' assert get_tank_diameter(p, 't0') == 100.0 assert get_tank_min_vol(p, 't0') == 10.0 change_set = set_tank_min_vol(p, 't0', 100.0) assert len(change_set.updated) == 1 assert change_set.updated[0]['type'] == TANK assert change_set.updated[0]['id'] == "t0" assert change_set.updated[0]['property'] == 'min_vol' assert get_tank_min_vol(p, 't0') == 100.0 # TODO: vol_curve assert get_tank_overflow(p, 't') == None assert get_tank_overflow(p, 't0') == 'NULL' change_set = set_tank_overflow(p, 't0', "XXX") assert len(change_set.updated) == 0 change_set = set_tank_overflow(p, 't0', OVERFLOW_YES) assert len(change_set.updated) == 1 assert change_set.updated[0]['type'] == TANK assert change_set.updated[0]['id'] == "t0" assert change_set.updated[0]['property'] == 'overflow' assert get_tank_overflow(p, 't0') == OVERFLOW_YES change_set = delete_tank(p, "t0") assert len(change_set.deleted) == 1 assert change_set.deleted[0]['type'] == TANK assert change_set.deleted[0]['id'] == "t0" tanks = get_nodes(p) assert len(tanks) == 1 change_set = delete_tank(p, "t1") assert len(change_set.deleted) == 1 assert change_set.deleted[0]['type'] == TANK assert change_set.deleted[0]['id'] == "t1" tanks = get_nodes(p) assert len(tanks) == 0 self.leave(p) 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()