private WeightedGraph <Char> MockWeightedGraph() { var graph = new WeightedGraph <Char>(); var a = new CharWeightedNode('A'); var b = new CharWeightedNode('B'); var c = new CharWeightedNode('C'); var d = new CharWeightedNode('D'); var e = new CharWeightedNode('E'); var g = new CharWeightedNode('G'); graph.AddNode(a); graph.AddNode(b); graph.AddNode(c); graph.AddNode(d); graph.AddNode(e); graph.AddNode(g); graph.AddUndirectedEdge(a, b, 20); graph.AddUndirectedEdge(a, e, 8); graph.AddUndirectedEdge(b, c, 18); graph.AddUndirectedEdge(b, d, 21); graph.AddUndirectedEdge(c, d, 15); graph.AddUndirectedEdge(c, e, 30); graph.AddUndirectedEdge(d, e, 12); return(graph); }
public void TestUndirectedUnion() { var addition = new WeightedGraph <Char>(); var a = new CharWeightedNode('A'); var c = new CharWeightedNode('C'); var f = new CharWeightedNode('F'); var h = new CharWeightedNode('H'); addition.AddNode(a); addition.AddNode(c); addition.AddNode(f); addition.AddNode(h); addition.AddUndirectedEdge(a, c, 11); addition.AddUndirectedEdge(a, h, 7); addition.AddUndirectedEdge(c, h, 14); var graph = MockWeightedGraph(); graph.UndirectedUnion(addition); var bfs = ""; graph.BFS(node => bfs += node.Content); Assert.AreEqual("ABECHDGF", bfs); var edges = graph.UndirectedEdges(); var actual = $"{edges.Length} edges"; foreach (var edge in edges) { actual += $", {edge.Item1.Content.ToString()}-{edge.Item3.ToString()}-{edge.Item2.Content.ToString()}"; } var expected = "10 edges, A-20-B, A-8-E, A-11-C, A-7-H, B-18-C, B-21-D, C-15-D, C-30-E, C-14-H, D-12-E"; Assert.AreEqual(expected, actual); }
private WeightedGraph <Char> TestCharGraph() { var graph = new WeightedGraph <Char>(); var a = new CharNode('A'); var b = new CharNode('B'); graph.AddNode(a); graph.AddNode(b); graph.AddUndirectedEdge(a, b, 10); return(graph); }
public void TestExpandingEdges() { var graph = new WeightedGraph <Char>((oldEdge, newEdge) => newEdge > oldEdge); var a = new CharWeightedNode('A'); var b = new CharWeightedNode('B'); graph.AddNode(a); graph.AddNode(b); graph.AddUndirectedEdge(a, b, 10); Assert.AreEqual(10, a.Cost(b)); graph.UpdateUndirectedEdge(a, b, 20); Assert.AreEqual(20, a.Cost(b)); graph.UpdateUndirectedEdge(a, b, 6); Assert.AreEqual(20, a.Cost(b)); }