4
from nose.tools import *
6
from test_graph import TestGraph
8
class TestDiGraph(TestGraph):
11
self.Graph=networkx.DiGraph
13
self.k3adj={0: {1: 1, 2: 1}, 1: {0: 1, 2: 1}, 2: {0: 1, 1: 1}}
14
self.k3edges=[(0, 1), (0, 2), (1, 2)]
15
self.k3nodes=[0, 1, 2]
17
self.K3.adj=self.k3adj
18
self.K3.succ=self.k3adj
19
self.K3.pred=copy.deepcopy(self.k3adj)
22
def test_data_input(self):
23
G=self.Graph(data={1:[2],2:[1]}, name="test")
24
assert_equal(G.name,"test")
25
assert_equal(sorted(G.adj.items()),[(1, {2: 1}), (2, {1: 1})])
26
assert_equal(sorted(G.succ.items()),[(1, {2: 1}), (2, {1: 1})])
27
assert_equal(sorted(G.pred.items()),[(1, {2: 1}), (2, {1: 1})])
30
def test_add_edge(self):
33
assert_equal(G.adj,{0: {1: 1}, 1: {}})
34
assert_equal(G.succ,{0: {1: 1}, 1: {}})
35
assert_equal(G.pred,{0: {}, 1: {0:1}})
38
assert_equal(G.adj,{0: {1: 1}, 1: {}})
39
assert_equal(G.succ,{0: {1: 1}, 1: {}})
40
assert_equal(G.pred,{0: {}, 1: {0:1}})
43
def test_add_edges_from(self):
45
G.add_edges_from([(0,1)])
46
assert_equal(G.adj,{0: {1: 1}, 1: {}})
47
assert_equal(G.succ,{0: {1: 1}, 1: {}})
48
assert_equal(G.pred,{0: {}, 1: {0:1}})
51
def test_remove_edge(self):
54
assert_equal(G.succ,{0:{2:1},1:{0:1,2:1},2:{0:1,1:1}})
55
assert_equal(G.pred,{0:{1:1, 2:1}, 1:{2:1}, 2:{0:1,1: 1}})
56
assert_raises((KeyError,networkx.NetworkXError), G.remove_edge,-1,0)
59
def test_remove_edges_from(self):
61
G.remove_edges_from([(0,1)])
62
assert_equal(G.succ,{0:{2:1},1:{0:1,2:1},2:{0:1,1:1}})
63
assert_equal(G.pred,{0:{1:1, 2:1}, 1:{2:1}, 2:{0:1,1: 1}})
64
G.remove_edges_from([(0,0)]) # silent fail
70
assert_equal(G.succ,H.succ)
71
assert_equal(G.pred,H.pred)
72
H=G.__class__(G) # just copy
73
assert_equal(G.succ,H.succ)
74
assert_equal(G.pred,H.pred)
76
def test_to_directed(self):
79
assert_equal(G.pred,H.pred)
80
assert_equal(G.succ,H.succ)
82
assert_equal(G.pred,H.pred)
83
assert_equal(G.succ,H.succ)
85
def test_to_undirected(self):
86
# this test only works because it is a complete graph. need more tests.
89
assert_equal(G.adj,H.adj)
91
assert_equal(G.adj,H.adj)
93
def test_has_successor(self):
95
assert_equal(G.has_successor(0,1),True)
96
assert_equal(G.has_successor(0,-1),False)
98
def test_successors(self):
100
assert_equal(sorted(G.successors(0)),[1,2])
101
assert_raises((KeyError,networkx.NetworkXError), G.successors,-1)
103
def test_successors_iter(self):
105
assert_equal(sorted(G.successors_iter(0)),[1,2])
106
assert_raises((KeyError,networkx.NetworkXError), G.successors_iter,-1)
108
def test_has_predecessor(self):
110
assert_equal(G.has_predecessor(0,1),True)
111
assert_equal(G.has_predecessor(0,-1),False)
113
def test_predecessors(self):
115
assert_equal(sorted(G.predecessors(0)),[1,2])
116
assert_raises((KeyError,networkx.NetworkXError), G.predecessors,-1)
118
def test_predecessors_iter(self):
120
assert_equal(sorted(G.predecessors_iter(0)),[1,2])
121
assert_raises((KeyError,networkx.NetworkXError), G.predecessors_iter,-1)
124
def test_edges(self):
126
assert_equal(sorted(G.edges()),[(0,1),(0,2),(1,0),(1,2),(2,0),(2,1)])
127
assert_equal(sorted(G.edges(0)),[(0,1),(0,2)])
128
assert_raises((KeyError,networkx.NetworkXError), G.neighbors,-1)
130
def test_edges_iter(self):
132
assert_equal(sorted(G.edges()),[(0,1),(0,2),(1,0),(1,2),(2,0),(2,1)])
133
assert_equal(sorted(G.edges_iter(0)),[(0,1),(0,2)])
134
assert_raises((KeyError,networkx.NetworkXError), G.neighbors_iter,-1)
137
def test_degree(self):
139
assert_equal(G.degree(),[4,4,4])
140
assert_equal(G.degree(with_labels=True),{0:4,1:4,2:4})
141
assert_equal(G.degree(0),4)
142
assert_equal(G.degree(0,with_labels=True),{0:4})
143
assert_raises((KeyError,networkx.NetworkXError), G.degree,-1)
145
def test_degree_iter(self):
147
assert_equal(list(G.degree_iter()),[(0,4),(1,4),(2,4)])
148
assert_equal(dict(G.degree_iter()),{0:4,1:4,2:4})
149
assert_equal(list(G.degree_iter(0)),[(0,4)])
152
def test_in_degree(self):
154
assert_equal(G.in_degree(),[2,2,2])
155
assert_equal(G.in_degree(with_labels=True),{0:2,1:2,2:2})
156
assert_equal(G.in_degree(0),2)
157
assert_equal(G.in_degree(0,with_labels=True),{0:2})
158
assert_raises((KeyError,networkx.NetworkXError), G.in_degree,-1)
160
def test_in_degree_iter(self):
162
assert_equal(list(G.in_degree_iter()),[(0,2),(1,2),(2,2)])
163
assert_equal(dict(G.in_degree_iter()),{0:2,1:2,2:2})
164
assert_equal(list(G.in_degree_iter(0)),[(0,2)])
166
def test_out_degree(self):
168
assert_equal(G.out_degree(),[2,2,2])
169
assert_equal(G.out_degree(with_labels=True),{0:2,1:2,2:2})
170
assert_equal(G.out_degree(0),2)
171
assert_equal(G.out_degree(0,with_labels=True),{0:2})
172
assert_raises((KeyError,networkx.NetworkXError), G.out_degree,-1)
174
def test_out_degree_iter(self):
176
assert_equal(list(G.out_degree_iter()),[(0,2),(1,2),(2,2)])
177
assert_equal(dict(G.out_degree_iter()),{0:2,1:2,2:2})
178
assert_equal(list(G.out_degree_iter(0)),[(0,2)])
183
assert_equal(G.size(),6)
184
assert_equal(G.number_of_edges(),6)