1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
import json
import pytest
import networkx as nx
from networkx.readwrite.json_graph import tree_data, tree_graph
def test_graph():
G = nx.DiGraph()
G.add_nodes_from([1, 2, 3], color="red")
G.add_edge(1, 2, foo=7)
G.add_edge(1, 3, foo=10)
G.add_edge(3, 4, foo=10)
H = tree_graph(tree_data(G, 1))
assert nx.is_isomorphic(G, H)
def test_graph_attributes():
G = nx.DiGraph()
G.add_nodes_from([1, 2, 3], color="red")
G.add_edge(1, 2, foo=7)
G.add_edge(1, 3, foo=10)
G.add_edge(3, 4, foo=10)
H = tree_graph(tree_data(G, 1))
assert H.nodes[1]["color"] == "red"
d = json.dumps(tree_data(G, 1))
H = tree_graph(json.loads(d))
assert H.nodes[1]["color"] == "red"
def test_exceptions():
with pytest.raises(TypeError, match="is not a tree."):
G = nx.complete_graph(3)
tree_data(G, 0)
with pytest.raises(TypeError, match="is not directed."):
G = nx.path_graph(3)
tree_data(G, 0)
with pytest.raises(TypeError, match="is not weakly connected."):
G = nx.path_graph(3, create_using=nx.DiGraph)
G.add_edge(2, 0)
G.add_node(3)
tree_data(G, 0)
with pytest.raises(nx.NetworkXError, match="must be different."):
G = nx.MultiDiGraph()
G.add_node(0)
tree_data(G, 0, ident="node", children="node")
|