Esempio n. 1
0
        public void ToGraphvizWithInit()
        {
            var wrappedGraph = new AdjacencyGraph <int, Edge <int> >();

            wrappedGraph.AddVerticesAndEdgeRange(new[]
            {
                new Edge <int>(1, 2),
                new Edge <int>(1, 3),
                new Edge <int>(2, 4)
            });
            wrappedGraph.AddVertex(5);
            var clusteredGraph = new ClusteredAdjacencyGraph <int, Edge <int> >(wrappedGraph);
            ClusteredAdjacencyGraph <int, Edge <int> > subGraph1 = clusteredGraph.AddCluster();

            subGraph1.AddVerticesAndEdgeRange(new[]
            {
                new Edge <int>(6, 7),
                new Edge <int>(7, 8)
            });
            ClusteredAdjacencyGraph <int, Edge <int> > subGraph2 = clusteredGraph.AddCluster();

            subGraph2.AddVerticesAndEdge(new Edge <int>(9, 10));
            subGraph2.AddVertex(11);

            string expectedDot =
                "digraph G {" + Environment.NewLine
                + "node [shape=diamond];" + Environment.NewLine
                + "edge [tooltip=\"Test Edge\"];" + Environment.NewLine
                + "subgraph cluster1 {" + Environment.NewLine
                + "5 [label=\"Test Vertex 6\"];" + Environment.NewLine
                + "6 [label=\"Test Vertex 7\"];" + Environment.NewLine
                + "7 [label=\"Test Vertex 8\"];" + Environment.NewLine
                + "5 -> 6;" + Environment.NewLine
                + "6 -> 7;" + Environment.NewLine
                + "}" + Environment.NewLine
                + "subgraph cluster2 {" + Environment.NewLine
                + "8 [label=\"Test Vertex 9\"];" + Environment.NewLine
                + "9 [label=\"Test Vertex 10\"];" + Environment.NewLine
                + "10 [label=\"Test Vertex 11\"];" + Environment.NewLine
                + "8 -> 9;" + Environment.NewLine
                + "}" + Environment.NewLine
                + "0 [label=\"Test Vertex 1\"];" + Environment.NewLine
                + "1 [label=\"Test Vertex 2\"];" + Environment.NewLine
                + "2 [label=\"Test Vertex 3\"];" + Environment.NewLine
                + "3 [label=\"Test Vertex 4\"];" + Environment.NewLine
                + "4 [label=\"Test Vertex 5\"];" + Environment.NewLine
                + "0 -> 1;" + Environment.NewLine
                + "0 -> 2;" + Environment.NewLine
                + "1 -> 3;" + Environment.NewLine
                + "}";
            string dotGraph = clusteredGraph.ToGraphviz(algorithm =>
            {
                algorithm.CommonVertexFormat.Shape = GraphvizVertexShape.Diamond;
                algorithm.CommonEdgeFormat.ToolTip = "Test Edge";
                algorithm.FormatVertex            += (sender, args) =>
                {
                    args.VertexFormat.Label = $"Test Vertex {args.Vertex}";
                };
            });

            Assert.AreEqual(expectedDot, dotGraph);
        }