| # -*- coding: utf-8 -*- |
| |
| import os |
| import unittest |
| from StringIO import StringIO |
| import textwrap |
| |
| import stringtemplate3 |
| |
| from antlr3.dottreegen import toDOT |
| from antlr3.treewizard import TreeWizard |
| from antlr3.tree import CommonTreeAdaptor |
| |
| |
| class TestToDOT(unittest.TestCase): |
| """Test case for the toDOT function.""" |
| |
| def setUp(self): |
| self.adaptor = CommonTreeAdaptor() |
| self.tokens = [ |
| "", "", "", "", "", "A", "B", "C", "D", "E", "ID", "VAR" |
| ] |
| self.wiz = TreeWizard(self.adaptor, self.tokens) |
| |
| |
| def testNone(self): |
| """toDOT()""" |
| |
| treeST = stringtemplate3.StringTemplate( |
| template=( |
| "digraph {\n" + |
| " $nodes$\n" + |
| " $edges$\n" + |
| "}\n") |
| ) |
| |
| edgeST = stringtemplate3.StringTemplate( |
| template="$parent$ -> $child$\n" |
| ) |
| |
| tree = self.wiz.create("(A B (B C C) (B (C D D)))") |
| st = toDOT(tree, self.adaptor, treeST, edgeST) |
| |
| result = st.toString() |
| expected = textwrap.dedent( |
| '''\ |
| digraph { |
| n0 [label="A"]; |
| n1 [label="B"]; |
| n2 [label="B"]; |
| n3 [label="C"]; |
| n4 [label="C"]; |
| n5 [label="B"]; |
| n6 [label="C"]; |
| n7 [label="D"]; |
| n8 [label="D"]; |
| |
| n0 -> n1 |
| n0 -> n2 |
| n2 -> n3 |
| n2 -> n4 |
| n0 -> n5 |
| n5 -> n6 |
| n6 -> n7 |
| n6 -> n8 |
| |
| } |
| ''' |
| ) |
| self.assertEqual(result, expected) |
| |
| |
| if __name__ == "__main__": |
| unittest.main(testRunner=unittest.TextTestRunner(verbosity=2)) |