public void LoadOneNode(string dot) { DotGraph g = DotLoader.Load(dot); Assert.Contains("Welcome", g.Nodes); Assert.Equal(1, g.Nodes.Count); }
public void DotToBifrostGraph() { DotGraph g = DotLoader.Load(@"digraph { graph [bb=""0, 0, 54, 108""]; node[label = ""\N""]; a[height = 0.5, pos = ""27,90"", width = 0.75]; b[height = 0.5, pos = ""27,18"", width = 0.75]; a->b[pos = ""e,27,36.104 27,71.697 27,63.983 27,54.712 27,46.112""]; }"); Graph graph = DotGraphConverter.ToGraph(g); Assert.Equal(2, graph.Nodes.Count); var nodes = graph.Nodes.ToList(); var nodeA = nodes[0]; Assert.Equal("a", nodeA.NodeName); Assert.Equal(new Point(27, 18), nodeA.Position); var nodeB = nodes[1]; Assert.Equal("b", nodeB.NodeName); Assert.Equal(new Point(27, 90), nodeB.Position); List <Edge> edges = graph.Edges.ToList(); Assert.Equal(nodeA, graph.FindNode(edges[0].StartId)); Assert.Equal(nodeB, graph.FindNode(edges[0].EndId)); }
public void LoadEmptyGraph(string dot) { DotGraph g = DotLoader.Load(dot); Assert.Empty(g.Nodes); Assert.False(g.IsDirected); Assert.False(g.IsStrict); }
public void LoadDotString(string dotContent) { DotGraph dg = DotLoader.Load(dotContent); if (!dg.GraphAttributes.ContainsKey("bb")) { dg = GraphVizWrapper.LayoutNodes(dg); } Graph gr = DotGraphConverter.ToGraph(dg); adjustNodesToCenterOfViewport(gr, GraphAreaZoom.Viewport); LoadGraph(gr); }
public void DotToBifrostGraphSingleNode() { DotGraph g = DotLoader.Load(@"graph {a}"); Graph graph = DotGraphConverter.ToGraph(g); Assert.Equal(1, graph.Nodes.Count); var nodes = graph.Nodes.ToList(); var nodeA = nodes[0]; Assert.Equal("a", nodeA.Id); Assert.Equal("a", nodeA.NodeName); Assert.Equal(new Point(0, 0), nodeA.Position); }
public void LoadMultipleNodes(string dot, string[] keys) { DotGraph g = DotLoader.Load(dot); foreach (var key in keys) { Assert.Contains(key, g.Nodes); } foreach (var key in g.Nodes.Keys) { Assert.Contains(key, keys); } Assert.Equal(keys.Length, g.Nodes.Count); }
public void DotToBifrostGraphUseLabelForName() { DotGraph g = DotLoader.Load(@"digraph { a[label=""good name""]; }"); Graph graph = DotGraphConverter.ToGraph(g); Assert.Equal(1, graph.Nodes.Count); var nodes = graph.Nodes.ToList(); var nodeA = nodes[0]; Assert.Equal("a", nodeA.Id); Assert.Equal("good name", nodeA.NodeName); }
public void LoadGraphEdges(string dot, string[] edgeNodes) { DotGraph g = DotLoader.Load(dot); var edgePairs = toTupleList(edgeNodes); foreach (var edge in edgePairs) { Assert.Contains(edge, g.Edges); } foreach (var key in g.Edges.Keys) { Assert.Contains(key, edgePairs); } Assert.Equal(edgePairs.Count, g.Edges.Count); }
public static DotGraph LayoutNodes(DotGraph dg) { // call graphviz dot to layout the nodes string dotFile = DotFileGenerator.Serialize(dg); string resultDot = ""; string errorOutput = ""; using (Process proc = new Process()) { // TODO: We will need to give a full path to the dot.exe, for now it should be in the path proc.StartInfo.FileName = "dot.exe"; proc.StartInfo.UseShellExecute = false; proc.StartInfo.RedirectStandardInput = true; proc.StartInfo.RedirectStandardOutput = true; proc.StartInfo.RedirectStandardError = true; proc.OutputDataReceived += new DataReceivedEventHandler((sender, e) => { resultDot += e.Data; }); proc.ErrorDataReceived += new DataReceivedEventHandler((sender, e) => { errorOutput += e.Data; }); proc.Start(); proc.BeginOutputReadLine(); proc.BeginErrorReadLine(); proc.StandardInput.Write(dotFile + "\n"); while (!resultDot.TrimEnd().EndsWith("}")) { System.Threading.Thread.Sleep(10); } proc.Kill(); } if (errorOutput != "") { Debug.WriteLine(errorOutput); } return(DotLoader.Load(resultDot)); }
public void LoadStrictGraph(string dot) { DotGraph g = DotLoader.Load(dot); Assert.True(g.IsStrict); }
public void LoadEmptyDirectedGraph(string dot) { DotGraph g = DotLoader.Load(dot); Assert.True(g.IsDirected); }
public void LoadGraphMultiEdges() { DotGraph g = DotLoader.Load(@"graph test {a -- b[color=red]; a--b}"); Assert.Equal(2, g.Edges[("a", "b")].Count);