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

1from graphable.graph import Graph, Graphable 

2from graphable.parsers.csv import load_graph_csv 

3from graphable.views.csv import create_topology_csv 

4 

5 

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) 

14 

15 csv_str = create_topology_csv(g) 

16 

17 loaded_g = load_graph_csv(csv_str) 

18 

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 

25 

26 

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 

36 

37 

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") 

41 

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