public void BasicAdjacencyGraph_GetPathBetweenTwoNodes_Normal() { var a = new GraphNode <string>("A"); var b = new GraphNode <string>("B"); var c = new GraphNode <string>("C"); var d = new GraphNode <string>("D"); var e = new GraphNode <string>("E"); var stringGraph = new BasicAdjacencyGraph <string>(); stringGraph.AddEdge(a, b, 6, 6); stringGraph.AddEdge(a, d, 1, 1); stringGraph.AddEdge(b, d, 2, 2); stringGraph.AddEdge(b, e, 2, 2); stringGraph.AddEdge(b, c, 5, 5); stringGraph.AddEdge(c, e, 5, 5); stringGraph.AddEdge(d, e, 1, 1); List <GraphNode <string> > nodeList = new List <GraphNode <string> >(); Assert.DoesNotThrow(() => nodeList = (List <GraphNode <string> >)stringGraph.GetPathBetweenTwoNodes(a, b)); Assert.AreEqual(3, nodeList.Count); Assert.AreEqual("A", nodeList.Last().Data); Assert.AreEqual("B", nodeList.First().Data); Assert.AreEqual("D", nodeList[1].Data); Assert.DoesNotThrow(() => nodeList = (List <GraphNode <string> >)stringGraph.GetPathBetweenTwoNodes(a, c)); Assert.AreEqual(4, nodeList.Count); var secondPath = new[] { "C", "E", "D", "A" }; for (int index = 0; index < nodeList.Count; ++index) { Assert.AreEqual(secondPath[index], nodeList[index].Data); } }
public void BasicAdjacencyGraph_MinimumCostBetweenTwoNodes_DestinationNodeNodeHasNoNeighbours() { var a = new GraphNode <string>("A"); var b = new GraphNode <string>("B"); var c = new GraphNode <string>("C"); var d = new GraphNode <string>("D"); var e = new GraphNode <string>("E"); var stringGraph = new BasicAdjacencyGraph <string>(); stringGraph.AddEdge(a, d, 1, 1); stringGraph.AddEdge(c, e, 5, 5); stringGraph.AddEdge(d, e, 1, 1); Assert.Throws <ConstraintException>(() => stringGraph.MinimumCostBetweenTwoNodes(a, b)); }
public void BasicAdjacencyGraph_GetAllGraphNodes_Normal() { var a = new GraphNode <string>("A"); var b = new GraphNode <string>("B"); var c = new GraphNode <string>("C"); var d = new GraphNode <string>("D"); var e = new GraphNode <string>("E"); var stringGraph = new BasicAdjacencyGraph <string>(); stringGraph.AddEdge(a, b, 6, 6); stringGraph.AddEdge(a, d, 1, 1); stringGraph.AddEdge(b, d, 2, 2); stringGraph.AddEdge(b, e, 2, 2); stringGraph.AddEdge(b, c, 5, 5); stringGraph.AddEdge(c, e, 5, 5); stringGraph.AddEdge(d, e, 1, 1); Assert.AreEqual(5, stringGraph.GetAllGraphNodes().Count); }
public void BasicAdjacencyGraph_MinimumCostBetweenTwoNodes_NullDestination() { var a = new GraphNode <string>("A"); var b = new GraphNode <string>("B"); var c = new GraphNode <string>("C"); var d = new GraphNode <string>("D"); var e = new GraphNode <string>("E"); var stringGraph = new BasicAdjacencyGraph <string>(); stringGraph.AddEdge(a, b, 6, 6); stringGraph.AddEdge(a, d, 1, 1); stringGraph.AddEdge(b, d, 2, 2); stringGraph.AddEdge(b, e, 2, 2); stringGraph.AddEdge(b, c, 5, 5); stringGraph.AddEdge(c, e, 5, 5); stringGraph.AddEdge(d, e, 1, 1); Assert.Throws <ArgumentNullException>(() => stringGraph.MinimumCostBetweenTwoNodes(a, null)); }
public void BasicAdjacencyGraph_FindNode_ContentNotFound() { var a = new GraphNode <string>("A"); var b = new GraphNode <string>("B"); var c = new GraphNode <string>("C"); var d = new GraphNode <string>("D"); var e = new GraphNode <string>("E"); var stringGraph = new BasicAdjacencyGraph <string>(); stringGraph.AddEdge(a, b, 6, 6); stringGraph.AddEdge(a, d, 1, 1); stringGraph.AddEdge(b, d, 2, 2); stringGraph.AddEdge(b, e, 2, 2); stringGraph.AddEdge(b, c, 5, 5); stringGraph.AddEdge(c, e, 5, 5); stringGraph.AddEdge(d, e, 1, 1); var foundNode = stringGraph.FindNode(x => x == "Fail"); Assert.Null(foundNode); }
public void BasicAdjacencyGraph_MinimumCostBetweenTwoNodes_DisconnectedGraph() { var a = new GraphNode <string>("A"); var b = new GraphNode <string>("B"); var c = new GraphNode <string>("C"); var d = new GraphNode <string>("D"); var e = new GraphNode <string>("E"); var f = new GraphNode <string>("F"); var stringGraph = new BasicAdjacencyGraph <string>(); stringGraph.AddEdge(a, b, 6, 6); stringGraph.AddEdge(a, d, 1, 1); stringGraph.AddEdge(b, d, 2, 2); stringGraph.AddEdge(b, e, 2, 2); stringGraph.AddEdge(d, e, 1, 1); stringGraph.AddEdge(c, f, 1, 1); Assert.Throws <ConstraintException>(() => stringGraph.MinimumCostBetweenTwoNodes(a, c)); }
public void BasicAdjacencyGraph_MinimumCostBetweenTwoNodes_SecondSearch() { var a = new GraphNode <string>("A"); var b = new GraphNode <string>("B"); var c = new GraphNode <string>("C"); var d = new GraphNode <string>("D"); var e = new GraphNode <string>("E"); var stringGraph = new BasicAdjacencyGraph <string>(); stringGraph.AddEdge(a, b, 6, 6); stringGraph.AddEdge(a, d, 1, 1); stringGraph.AddEdge(b, d, 2, 2); stringGraph.AddEdge(b, e, 2, 2); stringGraph.AddEdge(b, c, 5, 5); stringGraph.AddEdge(c, e, 5, 5); stringGraph.AddEdge(d, e, 1, 1); stringGraph.MinimumCostBetweenTwoNodes(a, b); // First search which builds the cache around A Assert.AreEqual(1, stringGraph.MinimumCostBetweenTwoNodes(d, e)); }
public void BasicAdjacencyGraph_MinimumCostBetweenTwoNodes_Normal() { var a = new GraphNode <string>("A"); var b = new GraphNode <string>("B"); var c = new GraphNode <string>("C"); var d = new GraphNode <string>("D"); var e = new GraphNode <string>("E"); var stringGraph = new BasicAdjacencyGraph <string>(); stringGraph.AddEdge(a, b, 6, 6); stringGraph.AddEdge(a, d, 1, 1); stringGraph.AddEdge(b, d, 2, 2); stringGraph.AddEdge(b, e, 2, 2); stringGraph.AddEdge(b, c, 5, 5); stringGraph.AddEdge(c, e, 5, 5); stringGraph.AddEdge(d, e, 1, 1); Assert.AreEqual(3, stringGraph.MinimumCostBetweenTwoNodes(a, b)); Assert.AreEqual(1, stringGraph.MinimumCostBetweenTwoNodes(a, d)); Assert.AreEqual(7, stringGraph.MinimumCostBetweenTwoNodes(a, c)); }
public void BasicAdjacencyGraph_Constructor_Normal() { _testBasicAdjacencyGraph = new BasicAdjacencyGraph <int>(); }
public void Setup() { _testBasicAdjacencyGraph = new BasicAdjacencyGraph <int>(); }