Coverage for tests / unit / parsers / test_csv.py: 100%
31 statements
« prev ^ index » next coverage.py v7.13.3, created at 2026-02-16 21:32 +0000
« prev ^ index » next coverage.py v7.13.3, created at 2026-02-16 21:32 +0000
1from graphable.graph import Graph, Graphable
2from graphable.parsers.csv import load_graph_csv
3from graphable.views.csv import create_topology_csv
6def test_load_graph_csv_roundtrip():
7 # A -> B, B -> C
8 a = Graphable("A")
9 b = Graphable("B")
10 c = Graphable("C")
11 g = Graph()
12 g.add_edge(a, b)
13 g.add_edge(b, c)
15 csv_str = create_topology_csv(g)
17 loaded_g = load_graph_csv(csv_str)
19 assert len(loaded_g) == 3
20 assert "A" in loaded_g
21 assert "B" in loaded_g
22 assert "C" in loaded_g
23 assert loaded_g["B"] in loaded_g["A"].dependents
24 assert loaded_g["C"] in loaded_g["B"].dependents
27def test_load_graph_csv_with_header():
28 content = """source,target
29A,B
30B,C
31"""
32 loaded_g = load_graph_csv(content)
33 assert len(loaded_g) == 3
34 assert "A" in loaded_g
35 assert "C" in loaded_g
38def test_load_graph_csv_from_file(tmp_path):
39 output_file = tmp_path / "graph.csv"
40 output_file.write_text("A,B\nC,D")
42 loaded_g = load_graph_csv(output_file)
43 assert len(loaded_g) == 4
44 assert "A" in loaded_g
45 assert loaded_g["B"] in loaded_g["A"].dependents