from omniff.graph.planner import GraphPlanner from omniff.graph.visualizer import render_ascii, render_dot def test_render_ascii(): planner = GraphPlanner() graph = planner.plan("TEXT_SIMPLE") output = render_ascii(graph) assert "demux" in output assert "llm" in output assert "mux" in output def test_render_dot(): planner = GraphPlanner() graph = planner.plan("IMAGE_CAPTION") output = render_dot(graph) assert "digraph" in output assert "vlm" in output assert "->" in output def test_render_ascii_empty(): from omniff.graph.types import OmniGraph graph = OmniGraph(id="empty") assert render_ascii(graph) == "(empty graph)" def test_render_dot_with_chain(tmp_path): from omniff.graph.chain import load_chain chain_file = tmp_path / "test.yaml" chain_file.write_text(""" id: test nodes: - id: a type: demuxer config: {} - id: b type: llm_infer config: {} edges: - from: a to: b """) graph = load_chain(chain_file) dot = render_dot(graph) assert '"a"' in dot assert '"b"' in dot