import pytest from swarms.structs.graph_workflow import GraphWorkflow @pytest.fixture def graph_workflow(): return GraphWorkflow() def test_init(graph_workflow): assert graph_workflow.graph == {} assert graph_workflow.entry_point is None def test_add(graph_workflow): graph_workflow.add("node1", "value1") assert "node1" in graph_workflow.graph assert graph_workflow.graph["node1"]["value"] == "value1" assert graph_workflow.graph["node1"]["edges"] == {} def test_set_entry_point(graph_workflow): graph_workflow.add("node1", "value1") graph_workflow.set_entry_point("node1") assert graph_workflow.entry_point == "node1" def test_set_entry_point_nonexistent_node(graph_workflow): with pytest.raises(ValueError, match="Node does not exist in graph"): graph_workflow.set_entry_point("nonexistent") def test_add_edge(graph_workflow): graph_workflow.add("node1", "value1") graph_workflow.add("node2", "value2") graph_workflow.add_edge("node1", "node2") assert "node2" in graph_workflow.graph["node1"]["edges"] def test_add_edge_nonexistent_node(graph_workflow): graph_workflow.add("node1", "value1") with pytest.raises(ValueError, match="Node does not exist in graph"): graph_workflow.add_edge("node1", "nonexistent") def test_add_conditional_edges(graph_workflow): graph_workflow.add("node1", "value1") graph_workflow.add("node2", "value2") graph_workflow.add_conditional_edges( "node1", "condition1", {"condition_value1": "node2"} ) assert "node2" in graph_workflow.graph["node1"]["edges"] def test_add_conditional_edges_nonexistent_node(graph_workflow): graph_workflow.add("node1", "value1") with pytest.raises(ValueError, match="Node does not exist in graph"): graph_workflow.add_conditional_edges( "node1", "condition1", {"condition_value1": "nonexistent"} ) def test_run(graph_workflow): graph_workflow.add("node1", "value1") graph_workflow.set_entry_point("node1") assert graph_workflow.run() == graph_workflow.graph def test_run_no_entry_point(graph_workflow): with pytest.raises(ValueError, match="Entry point not set"): graph_workflow.run()