public void Run(string dotSource) { // These functions create vertices and edges from raw graph data. // Implement new ones if in need. var vertexFun = DotParserAdapter.VertexFunctions.Name; var edgeFun = DotParserAdapter.EdgeFunctions <string> .VerticesOnly; try { _graph = BidirectionalGraph <string, SEdge <string> > .LoadDot(dotSource, vertexFun, edgeFun); _steps = new Stack <BidirectionalGraph <string, SEdge <string> > >(); var message = $"{_graph.VertexCount} vertices."; if (_countSymbolsCheckBox.Checked) { message = $"{message} {dotSource.Length} symbols read."; } MessageBox.Show(message); _hasStarted = true; _hasFinished = false; } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public void SingleNode() { var str = "graph { a }"; var g1 = BidirectionalGraph <string, SUndirectedEdge <string> > .LoadDot(str, f, f2); Assert.AreEqual(0, g1.EdgeCount); Assert.AreEqual(1, g1.VertexCount); }
public void TestMethod3() { var str = "strict graph t { 1 \n 1 -- 1 \n 1 -- 1 \n 1 -- 1; \n 1 -- 1 \n }"; var g1 = BidirectionalGraph <string, SUndirectedEdge <string> > .LoadDot(str, f, f2); Assert.AreEqual(4, g1.EdgeCount); Assert.AreEqual(1, g1.VertexCount); }
public void Attributes() { var str = "graph { 3 \n NodE [color=red] \n 2 [\"node\"=second] \n 1 -- 2 \n edge [color=yellow] \n 2 -- 3 \n edge [size=5] \n node [size=4] \n 1 -- 4 \n }"; var g = BidirectionalGraph <string, SUndirectedEdge <string> > .LoadDot(str, f, f2); Assert.AreEqual(4, g.VertexCount); Assert.AreEqual(3, g.EdgeCount); }
public void TestMethod8() { var str = "strict digraph \"my graph\" { 1 -- 2 [weight=9] \n 1 -- 2 [weight=10] \n 2 -- 1[weight=11]; \n 2 -- 1[weight=12] \n 1 [label=\"v1\"] \n 2 [label=\"v2\"] \n }"; var g1 = BidirectionalGraph <string, SUndirectedEdge <string> > .LoadDot(str, f, f2); Assert.AreEqual(4, g1.EdgeCount); Assert.AreEqual(2, g1.VertexCount); }
public void LoadGraphFromDot() { const string dotSource = "digraph { a -> b }"; var vertexFunc = DotParserAdapter.VertexFactory.Name; var edgeFunc = DotParserAdapter.EdgeFactory <string> .VerticesOnly; var graph = BidirectionalGraph <string, SEdge <string> > .LoadDot(dotSource, vertexFunc, edgeFunc); Assert.IsNotNull(graph); }
public void TestMethod5() { var str = "strict graph t { 9 \n }"; var g1 = BidirectionalGraph <string, SUndirectedEdge <string> > .LoadDot(str, f, f2); Assert.AreEqual(0, g1.EdgeCount); Assert.AreEqual(1, g1.VertexCount); Assert.IsTrue(g1.ContainsVertex("9")); Assert.IsFalse(g1.ContainsEdge("9", "9")); }
public void SingleLine() { var str = "strict graph t { a b c d }"; Func <string, Tuple <string, string>[], string> f = (v, attrs) => v; Func <string, string, Tuple <string, string>[], SUndirectedEdge <string> > f2 = (v1, v2, attrs) => new SUndirectedEdge <string>(v1, v2); var g1 = BidirectionalGraph <string, SUndirectedEdge <string> > .LoadDot(str, f, f2); //Assert.AreEqual(0, g1.EdgeCount); Assert.AreEqual(4, g1.VertexCount); }
public void TestMethod6() { var str = "strict graph t { 8 \n 3 -> 6 \n 6 -> 1 \n 9 -> 10; \n }"; var g1 = BidirectionalGraph <string, SUndirectedEdge <string> > .LoadDot(str, f, f2); Assert.AreEqual(3, g1.EdgeCount); Assert.AreEqual(6, g1.VertexCount); Assert.IsTrue(g1.ContainsVertex("8")); Assert.IsTrue(g1.ContainsEdge("3", "6")); Assert.IsTrue(g1.ContainsEdge("6", "1")); Assert.IsTrue(g1.ContainsEdge("9", "10")); }
public void TestMethod4() { var str = "strict graph t { 1 2 \n 3 \n 4 \n 5 \n }"; var g1 = BidirectionalGraph <string, SUndirectedEdge <string> > .LoadDot(str, f, f2); Assert.AreEqual(0, g1.EdgeCount); Assert.AreEqual(5, g1.VertexCount); Assert.IsFalse(g1.ContainsEdge("1", "2")); Assert.IsFalse(g1.ContainsEdge("2", "3")); Assert.IsFalse(g1.ContainsEdge("3", "4")); Assert.IsFalse(g1.ContainsEdge("4", "5")); }
public void TestMethod1() { var str = "strict graph t { 6 [label = \"v1\", yo = \"yo;!\" ] \n 1 -- 2 -- 3 \n 2 -- 1 \n 1 -- 1 \n 3 -- 4 \n }"; var g1 = BidirectionalGraph <string, SUndirectedEdge <string> > .LoadDot(str, f, f2); Assert.AreEqual(5, g1.EdgeCount); Assert.AreEqual(5, g1.VertexCount); Assert.IsTrue(g1.ContainsEdge("1", "2")); Assert.IsTrue(g1.ContainsEdge("2", "3")); Assert.IsTrue(g1.ContainsEdge("1", "1")); Assert.IsTrue(g1.ContainsEdge("3", "4")); Assert.IsTrue(g1.ContainsVertex("6")); }
public void TestMethod7() { var str = "strict graph t { 1 -- 2 -- 3 -- 4 -- 6 -- 7 \n 2 -- 1 \n }"; var g1 = BidirectionalGraph <string, SUndirectedEdge <string> > .LoadDot(str, f, f2); Assert.AreEqual(6, g1.EdgeCount); Assert.AreEqual(6, g1.VertexCount); Assert.IsTrue(g1.ContainsEdge("1", "2")); Assert.IsTrue(g1.ContainsEdge("2", "3")); Assert.IsTrue(g1.ContainsEdge("3", "4")); Assert.IsTrue(g1.ContainsEdge("4", "6")); Assert.IsTrue(g1.ContainsEdge("6", "7")); }