Skip to content

Commit 86380c3

Browse files
meatballsmarcharper
authored andcommitted
Add tests for graph init
1 parent f477457 commit 86380c3

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

axelrod/tests/unit/test_graph.py

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,91 @@
11
import unittest
2+
from collections import defaultdict
23

34
from axelrod import graph
45

56

67
class TestGraph(unittest.TestCase):
78

9+
def test_init(self):
10+
# Undirected graph with not vertices
11+
g = graph.Graph()
12+
self.assertFalse(g.directed)
13+
self.assertIsInstance(g.out_mapping, defaultdict)
14+
self.assertIsInstance(g.in_mapping, defaultdict)
15+
self.assertFalse(g._edges)
16+
17+
# Directed graph with no vertices
18+
g = graph.Graph(directed=True)
19+
self.assertTrue(g.directed)
20+
self.assertIsInstance(g.out_mapping, defaultdict)
21+
self.assertIsInstance(g.in_mapping, defaultdict)
22+
self.assertFalse(g._edges)
23+
24+
# Undirected graph with vertices and unweighted edges
25+
g = graph.Graph(edges=[[1, 2], [2, 3]])
26+
expected_edges = [(1, 2), (2, 1), (2, 3), (3, 2)]
27+
expected_out_mapping = {
28+
1: {2: None},
29+
2: {1: None, 3: None},
30+
3: {2: None}
31+
}
32+
expected_in_mapping = {
33+
1: {2: None},
34+
2: {1: None, 3: None},
35+
3: {2: None}
36+
}
37+
38+
self.assertFalse(g.directed)
39+
self.assertEqual(len(g.out_mapping), len(expected_out_mapping))
40+
for node in expected_out_mapping:
41+
self.assertEqual(g.out_mapping[node], expected_out_mapping[node])
42+
self.assertEqual(len(g.in_mapping), len(expected_in_mapping))
43+
for node in expected_in_mapping:
44+
self.assertEqual(g.in_mapping[node], expected_in_mapping[node])
45+
self.assertEqual(g._edges, expected_edges)
46+
47+
# Undirected graph with vertices and weighted edges
48+
g = graph.Graph(edges=[[1, 2, 10], [2, 3, 5]])
49+
expected_edges = [(1, 2), (2, 1), (2, 3), (3, 2)]
50+
expected_out_mapping = {
51+
1: {2: 10},
52+
2: {1: 10, 3: 5},
53+
3: {2: 5}
54+
}
55+
expected_in_mapping = {
56+
1: {2: 10},
57+
2: {1: 10, 3: 5},
58+
3: {2: 5}
59+
}
60+
self.assertFalse(g.directed)
61+
self.assertEqual(len(g.out_mapping), len(expected_out_mapping))
62+
for node in expected_out_mapping:
63+
self.assertEqual(g.out_mapping[node], expected_out_mapping[node])
64+
self.assertEqual(len(g.in_mapping), len(expected_in_mapping))
65+
for node in expected_in_mapping:
66+
self.assertEqual(g.in_mapping[node], expected_in_mapping[node])
67+
self.assertEqual(g._edges, expected_edges)
68+
69+
# Directed graph with vertices and weighted edges
70+
g = graph.Graph(edges=[[1, 2, 10], [2, 3, 5]], directed=True)
71+
expected_edges = [(1, 2), (2, 3)]
72+
expected_out_mapping = {
73+
1: {2: 10},
74+
2: {3: 5},
75+
}
76+
expected_in_mapping = {
77+
2: {1: 10},
78+
3: {2: 5}
79+
}
80+
self.assertTrue(g.directed)
81+
self.assertEqual(len(g.out_mapping), len(expected_out_mapping))
82+
for node in expected_out_mapping:
83+
self.assertEqual(g.out_mapping[node], expected_out_mapping[node])
84+
self.assertEqual(len(g.in_mapping), len(expected_in_mapping))
85+
for node in expected_in_mapping:
86+
self.assertEqual(g.in_mapping[node], expected_in_mapping[node])
87+
self.assertEqual(g._edges, expected_edges)
88+
889
def test_cycle(self):
990
g = graph.cycle(1, directed=False)
1091
self.assertEqual(g.vertices(), [0])

0 commit comments

Comments
 (0)