Exemplo n.º 1
0
        public void WriteNode_No_Items()
        {
            var stringBuilder = new StringBuilder();
            var writer        = new DotWriter(new StringWriter(stringBuilder));

            writer.WriteNode("1", "header");

            stringBuilder.ToString().Should().BeIgnoringLineEndings("1 [shape=record label=\"{header}\"]\r\n");
        }
Exemplo n.º 2
0
        public void WriteNode_With_Encoding()
        {
            var stringBuilder = new StringBuilder();
            var writer        = new DotWriter(new StringWriter(stringBuilder));

            writer.WriteNode("1", "header", "\r", "\n", "{", "}", "<", ">", "|", "\"");

            stringBuilder.ToString().Should().BeIgnoringLineEndings(@"1 [shape=record label=""{header||\n|\{|\}|\<|\>|\||\""}""]" + "\r\n");
        }
Exemplo n.º 3
0
            public void Visit(string methodName, UCFG ucfg)
            {
                writer.WriteGraphStart(methodName);

                writer.WriteNode(EntryBlockId, EntryBlockId, ucfg.Parameters.ToArray());

                foreach (var entry in ucfg.Entries)
                {
                    writer.WriteEdge(EntryBlockId, entry, string.Empty);
                }

                foreach (var block in ucfg.BasicBlocks)
                {
                    Visit(block);
                }

                writer.WriteNode(ExitBlockId, ExitBlockId);

                writer.WriteGraphEnd();
            }
Exemplo n.º 4
0
            private void WriteNode(Block block, SyntaxNode terminator = null)
            {
                var header = block.GetType().Name.SplitCamelCaseToWords().First().ToUpperInvariant();

                if (terminator != null)
                {
                    // shorten the text
                    var terminatorType = terminator.Kind().ToString().Replace("Syntax", string.Empty);

                    header += ":" + terminatorType;
                }
                writer.WriteNode(blockId.Get(block), header, block.Instructions.Select(i => i.ToString()).ToArray());
            }