1 /* 2 * [The "BSD licence"] 3 * Copyright (c) 2005-2008 Terence Parr 4 * All rights reserved. 5 * 6 * Conversion to C#: 7 * Copyright (c) 2008-2009 Sam Harwell, Pixel Mine, Inc. 8 * All rights reserved. 9 * 10 * Redistribution and use in source and binary forms, with or without 11 * modification, are permitted provided that the following conditions 12 * are met: 13 * 1. Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * 2. Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in the 17 * documentation and/or other materials provided with the distribution. 18 * 3. The name of the author may not be used to endorse or promote products 19 * derived from this software without specific prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 22 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 23 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 24 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 25 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 26 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 30 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33 namespace Antlr3.Runtime.Test 34 { 35 using System; 36 using Antlr.Runtime; 37 using Antlr.Runtime.Tree; 38 using Microsoft.VisualStudio.TestTools.UnitTesting; 39 40 [TestClass] 41 public class TestDotTreeGenerator 42 { 43 [TestMethod] TestCreateDot()44 public void TestCreateDot() 45 { 46 ANTLRStringStream input = new ANTLRStringStream( "3 * x" ); 47 SimpleExpressionLexer lexer = new SimpleExpressionLexer( input ); 48 CommonTokenStream tokens = new CommonTokenStream( lexer ); 49 SimpleExpressionParser parser = new SimpleExpressionParser( tokens ); 50 var result = parser.expression(); 51 52 var tree = result.Tree; 53 var adaptor = parser.TreeAdaptor; 54 55 DotTreeGenerator gen = new DotTreeGenerator(); 56 string output = gen.ToDot( tree, adaptor ); 57 string newline = Environment.NewLine; 58 string expected = 59 @"digraph {" + newline 60 + newline 61 + @" ordering=out;" + newline 62 + @" ranksep=.4;" + newline 63 + @" bgcolor=""lightgrey""; node [shape=box, fixedsize=false, fontsize=12, fontname=""Helvetica-bold"", fontcolor=""blue""" + newline 64 + @" width=.25, height=.25, color=""black"", fillcolor=""white"", style=""filled, solid, bold""];" + newline 65 + @" edge [arrowsize=.5, color=""black"", style=""bold""]" + newline 66 + newline 67 + @" n0 [label=""""];" + newline 68 + @" n1 [label=""*""];" + newline 69 + @" n1 [label=""*""];" + newline 70 + @" n2 [label=""3""];" + newline 71 + @" n3 [label=""x""];" + newline 72 + @" n4 [label=""""];" + newline 73 + newline 74 + @" n0 -> n1 // """" -> ""*""" + newline 75 + @" n1 -> n2 // ""*"" -> ""3""" + newline 76 + @" n1 -> n3 // ""*"" -> ""x""" + newline 77 + @" n0 -> n4 // """" -> """"" + newline 78 + newline 79 + @"}" + newline 80 + @""; 81 82 Assert.AreEqual( expected, output ); 83 } 84 } 85 } 86