initialise repo
[debian/digraphtools.git] / digraphtools / test / test_digraphtools.py
1 #! /usr/bin/env python
2
3 '''unit tests for digraphtools'''
4
5 import unittest2 as unittest
6 import digraphtools
7
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)
32                 gg[2].remove(3)
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))
56
57 if __name__ == '__main__':
58         unittest.main()