3 '''unit tests for digraphtools'''
5 import unittest2 as unittest
8 class DigraphTests(unittest.TestCase):
9 def test_graph_from_edges(self):
10 g = digraphtools.graph_from_edges([(1,2),(1,3),(2,3)])
11 self.assertEqual(set(g[1]),set([2,3]))
12 self.assertEqual(set(g[2]),set([3]))
13 self.assertEqual(set(g[3]),set())
14 def test_verify_partial_order(self):
15 g = digraphtools.graph_from_edges([(1,2),(1,3),(2,3)])
16 # Will raise an exception if incorrect
17 digraphtools.verify_partial_order(digraphtools.iter_partial_order(g), [3,2,1])
18 self.assertRaises(digraphtools.OrderViolationException,digraphtools.verify_partial_order, digraphtools.iter_partial_order(g), [3,1,2])
19 def test_iter_edges(self):
20 edges = set([(1,2),(1,3),(2,3)])
21 g = digraphtools.graph_from_edges(edges)
22 gedges = set(digraphtools.iter_edges(g))
23 self.assertEqual(edges,gedges)
24 def test_copy_graph(self):
25 edges = set([(1,2),(1,3),(2,3)])
26 g = digraphtools.graph_from_edges(edges)
27 gg = digraphtools.copy_graph(g)
28 self.assertEqual(g,gg)
29 gedges = set(digraphtools.iter_edges(g))
30 ggedges = set(digraphtools.iter_edges(gg))
31 self.assertEqual(gedges,ggedges)
33 self.assertNotEqual(g,gg)
34 gedges = set(digraphtools.iter_edges(g))
35 ggedges = set(digraphtools.iter_edges(gg))
36 self.assertNotEqual(gedges,ggedges)
37 def test_postorder_traversal(self):
38 edges = set([(1,2),(1,3),(2,3)])
39 g = digraphtools.graph_from_edges(edges)
40 po = list(digraphtools.postorder_traversal(g,1))
41 self.assertEqual([3,2,3,1],po)
42 def test_dfs_topsort_traversal(self):
43 edges = set([(1,2),(1,3),(2,3)])
44 g = digraphtools.graph_from_edges(edges)
45 po = list(digraphtools.dfs_topsort_traversal(g,1))
46 self.assertEqual([3,2,1],po)
47 def test_dfs_iter_edges(self):
48 g = digraphtools.graph_from_edges([(1,2),(1,3),(2,3)])
49 edgeiter = digraphtools.dfs_iter_edges(g,1)
50 self.assertEqual([(1,2),(2,3),(1,3)],list(edgeiter))
51 def test_get_connected_subgraph(self):
52 g = digraphtools.graph_from_edges([(1,2),(1,3),(2,3)])
53 self.assertEqual(g, digraphtools.get_connected_subgraph(g,1))
54 sg = digraphtools.graph_from_edges([(2,3)])
55 self.assertEqual(sg, digraphtools.get_connected_subgraph(g,2))
57 if __name__ == '__main__':