def test_project_unfinished_logic_with_loop(scene: Scene, project: UpdateableCachedProject) -> None: project.upsert_logic_item(LogicItem(ac1.id, ac2.id)) project.upsert_logic_item(LogicItem(ac2.id, ac1.id)) with pytest.raises(Arcor2Exception): check_for_loops(project, ac1.id)
async def update_logic_item_cb(req: srpc.p.UpdateLogicItem.Request, ui: WsClient) -> None: assert glob.PROJECT assert glob.SCENE updated_project = copy.deepcopy(glob.PROJECT) updated_logic_item = updated_project.logic_item(req.args.logic_item_id) updated_logic_item.start = req.args.start updated_logic_item.end = req.args.end updated_logic_item.condition = req.args.condition check_logic_item(updated_project, updated_logic_item) if updated_logic_item.start != updated_logic_item.START: check_for_loops(updated_project, updated_logic_item.parse_start().start_action_id) if req.dry_run: return glob.PROJECT.upsert_logic_item(updated_logic_item) evt = sevts.p.LogicItemChanged(updated_logic_item) evt.change_type = Event.Type.UPDATE asyncio.ensure_future(notif.broadcast_event(evt)) return None
async def add_logic_item_cb(req: srpc.p.AddLogicItem.Request, ui: WsClient) -> None: assert glob.PROJECT assert glob.SCENE logic_item = common.LogicItem(req.args.start, req.args.end, req.args.condition) check_logic_item(glob.PROJECT, logic_item) if logic_item.start != logic_item.START: updated_project = copy.deepcopy(glob.PROJECT) updated_project.upsert_logic_item(logic_item) check_for_loops(updated_project, logic_item.parse_start().start_action_id) if req.dry_run: return glob.PROJECT.upsert_logic_item(logic_item) evt = sevts.p.LogicItemChanged(logic_item) evt.change_type = Event.Type.ADD asyncio.ensure_future(notif.broadcast_event(evt)) return None
def test_project_wo_loop(scene: Scene, project: UpdateableCachedProject) -> None: project.upsert_logic_item(LogicItem(LogicItem.START, ac1.id)) project.upsert_logic_item(LogicItem(ac1.id, ac2.id)) project.upsert_logic_item(LogicItem(ac2.id, ac3.id)) project.upsert_logic_item(LogicItem(ac3.id, ac4.id)) project.upsert_logic_item(LogicItem(ac4.id, LogicItem.END)) check_for_loops(project)
def test_project_wo_loop_branched_logic(scene: Scene, project: UpdateableCachedProject) -> None: project.upsert_logic_item(LogicItem(LogicItem.START, ac1.id)) project.upsert_logic_item(LogicItem(ac1.id, ac2.id, ProjectLogicIf(f"{ac1.id}/default/0", json.dumps(True)))) project.upsert_logic_item(LogicItem(ac1.id, ac3.id, ProjectLogicIf(f"{ac1.id}/default/0", json.dumps(False)))) project.upsert_logic_item(LogicItem(ac2.id, ac4.id)) project.upsert_logic_item(LogicItem(ac3.id, ac4.id)) project.upsert_logic_item(LogicItem(ac4.id, LogicItem.END)) check_for_loops(project)
def test_project_unfinished_logic_wo_loop(scene: Scene, project: UpdateableCachedProject) -> None: project.upsert_logic_item(LogicItem(ac1.id, ac2.id)) check_for_loops(project, ac1.id)