#!/usr/bin/env python3 import copy import json from pathlib import Path from check_graph import check_graph ROOT = Path(__file__).resolve().parent def main(): graph = json.loads((ROOT / "sample-flow.json").read_text(encoding="utf-8")) result = check_graph(graph) assert result == json.loads((ROOT / "expected.json").read_text(encoding="utf-8")) assert check_graph({"flow_data": graph}) == result broken = copy.deepcopy(graph) broken[1]["wires"] = [["missing-node"]] assert check_graph(broken)["errors"] broken = copy.deepcopy(graph) broken[1]["z"] = "missing-tab" assert check_graph(broken)["errors"] broken = copy.deepcopy(graph) broken[1]["wires"] = ["result"] assert check_graph(broken)["errors"] assert check_graph(graph + [graph[1]])["errors"] cyclic = copy.deepcopy(graph) cyclic[2]["wires"] = [["input"]] assert not check_graph(cyclic)["errors"], "циклы сами по себе допустимы" print("PASS: array/envelope, missing node, missing tab, wires shape, duplicate id, valid cycle") if __name__ == "__main__": main()