00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 import unittest
00035 from qt_dotgraph.pydotfactory import PydotFactory
00036 
00037 class PyDotFactoryTest(unittest.TestCase):
00038 
00039     def test_get_graph(self):
00040         fac = PydotFactory()
00041         g = fac.get_graph()
00042         self.assertEquals('same', g.get_rank())
00043         self.assertEquals('digraph', g.get_graph_type())
00044 
00045     def test_add_node(self):
00046         fac = PydotFactory()
00047         g = fac.get_graph()
00048         fac.add_node_to_graph(g, 'foo')
00049         self.assertEqual(1, len(g.get_nodes()))
00050         self.assertEqual('foo', g.get_nodes()[0].get_name())
00051         self.assertEqual('foo', g.get_nodes()[0].get_label())
00052 
00053     def test_add_node_escape_name(self):
00054         fac = PydotFactory()
00055         g = fac.get_graph()
00056         fac.add_node_to_graph(g, 'graph')
00057         self.assertEqual(1, len(g.get_nodes()))
00058         self.assertEqual('graph_', g.get_nodes()[0].get_name())
00059         self.assertEqual('graph_', g.get_nodes()[0].get_label())
00060 
00061     def test_add_edge(self):
00062         fac = PydotFactory()
00063         g = fac.get_graph()
00064         fac.add_node_to_graph(g, 'foo')
00065         fac.add_node_to_graph(g, 'bar')
00066         fac.add_edge_to_graph(g, 'foo', 'bar')
00067         self.assertEqual(2, len(g.get_nodes()))
00068         self.assertEqual(1, len(g.get_edges()))
00069         self.assertEqual('foo', g.get_edges()[0].get_source())
00070         self.assertEqual('bar', g.get_edges()[0].get_destination())
00071 
00072     def test_add_subgraph(self):
00073         fac = PydotFactory()
00074         g = fac.get_graph()
00075         fac.add_subgraph_to_graph(g, 'foo')
00076         self.assertEqual(1, len(g.get_subgraph_list()))
00077         self.assertEqual('cluster_foo', g.get_subgraph_list()[0].get_name())
00078         self.assertEqual('foo', g.get_subgraph_list()[0].get_label())
00079 
00080     def test_add_subgraph_escape_name(self):
00081         fac = PydotFactory()
00082         g = fac.get_graph()
00083         fac.add_subgraph_to_graph(g, 'graph')
00084         self.assertEqual(1, len(g.get_subgraph_list()))
00085         self.assertEqual('cluster_graph_', g.get_subgraph_list()[0].get_name())
00086         self.assertEqual('graph_', g.get_subgraph_list()[0].get_label())
00087 
00088     def test_create_dot(self):
00089         fac = PydotFactory()
00090         g = fac.get_graph()
00091         fac.add_node_to_graph(g, 'foo')
00092         fac.add_node_to_graph(g, 'edge')
00093         fac.add_edge_to_graph(g, 'foo', 'edge')
00094         fac.add_subgraph_to_graph(g, 'foo')
00095         snippets = ['digraph graphname {\n\tgraph [',
00096                     'rankdir=TB',
00097                     'compound=True',
00098                     'rank=same',
00099                     'node [label="\\N"]',
00100                     'subgraph cluster_foo {\n\t\tgraph [',
00101                     'foo\t [',
00102                     'label=foo',
00103                     'shape=box',
00104                     'pos="',
00105                     'edge_\t [',
00106                     'label=edge_',
00107                     'foo -> edge_\t [',
00108                     '"];\n}\n']
00109         result = fac.create_dot(g)
00110         for sn in snippets:
00111             self.assertTrue(sn in result, '%s \nmissing in\n %s' % (sn, result))