| /* |
| * [The "BSD licence"] |
| * Copyright (c) 2005-2008 Terence Parr |
| * All rights reserved. |
| * |
| * Conversion to C#: |
| * Copyright (c) 2008-2009 Sam Harwell, Pixel Mine, Inc. |
| * All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * 2. Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in the |
| * documentation and/or other materials provided with the distribution. |
| * 3. The name of the author may not be used to endorse or promote products |
| * derived from this software without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
| * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
| * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
| * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
| * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
| * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| namespace Antlr3.Runtime.Test |
| { |
| using System; |
| using Antlr.Runtime; |
| using Antlr.Runtime.Tree; |
| using Microsoft.VisualStudio.TestTools.UnitTesting; |
| |
| [TestClass] |
| public class TestDotTreeGenerator |
| { |
| [TestMethod] |
| public void TestCreateDot() |
| { |
| ANTLRStringStream input = new ANTLRStringStream( "3 * x" ); |
| SimpleExpressionLexer lexer = new SimpleExpressionLexer( input ); |
| CommonTokenStream tokens = new CommonTokenStream( lexer ); |
| SimpleExpressionParser parser = new SimpleExpressionParser( tokens ); |
| var result = parser.expression(); |
| |
| var tree = result.Tree; |
| var adaptor = parser.TreeAdaptor; |
| |
| DotTreeGenerator gen = new DotTreeGenerator(); |
| string output = gen.ToDot( tree, adaptor ); |
| string newline = Environment.NewLine; |
| string expected = |
| @"digraph {" + newline |
| + newline |
| + @" ordering=out;" + newline |
| + @" ranksep=.4;" + newline |
| + @" bgcolor=""lightgrey""; node [shape=box, fixedsize=false, fontsize=12, fontname=""Helvetica-bold"", fontcolor=""blue""" + newline |
| + @" width=.25, height=.25, color=""black"", fillcolor=""white"", style=""filled, solid, bold""];" + newline |
| + @" edge [arrowsize=.5, color=""black"", style=""bold""]" + newline |
| + newline |
| + @" n0 [label=""""];" + newline |
| + @" n1 [label=""*""];" + newline |
| + @" n1 [label=""*""];" + newline |
| + @" n2 [label=""3""];" + newline |
| + @" n3 [label=""x""];" + newline |
| + @" n4 [label=""""];" + newline |
| + newline |
| + @" n0 -> n1 // """" -> ""*""" + newline |
| + @" n1 -> n2 // ""*"" -> ""3""" + newline |
| + @" n1 -> n3 // ""*"" -> ""x""" + newline |
| + @" n0 -> n4 // """" -> """"" + newline |
| + newline |
| + @"}" + newline |
| + @""; |
| |
| Assert.AreEqual( expected, output ); |
| } |
| } |
| } |