public void InitializeQuickestPathResults_HappyDays_HasAddedThreeEntriesToPathDictionary() { //Arrange Network dummyNetwork = DummyCreator.CreateDummyNetworkOfThreeNodesWithNoConnections(); //Has nodes "A", "B", "C" PathFinder sut = new PathFinder(dummyNetwork); //Act sut.InitializeQuickestPathResults("A"); //Assert Assert.IsTrue(sut.QuickestPathResults.Count == 3); }
public void UsingPathFinderOnSameNetworkManyTimesWithNewPath_GivesRightResult() { //ARRANGE Network dummy = DummyCreator.CreateDummyNetworkOfTenNodesWithConnectionsOption1(); PathFinder sut = new PathFinder(dummy); //Original quickest path sut.FindQuickestPath("A", "J"); Assert.AreEqual(18d, sut.QuickestPathResults["J"].QuickestTimeFromStart); sut.FindQuickestPath("A", "E"); //ASSERT that new quickest path has changed Assert.AreEqual(6d, sut.QuickestPathResults["E"].QuickestTimeFromStart); }
public void ChangingConnectionValuesExampleOne_UpdatesQuickestPathCorrectly() { //ARRANGE Network dummy = DummyCreator.CreateDummyNetworkOfTenNodesWithConnectionsOption1(); PathFinder sut = new PathFinder(dummy); //Original quickest path sut.FindQuickestPath("A", "J"); Assert.AreEqual(18d, sut.QuickestPathResults["J"].QuickestTimeFromStart); //ACT, Changing quickest path by adding direct connection dummy.AddConnection("A", "J", 1); sut.FindQuickestPath("A", "J"); //ASSERT that new quickest path has changed Assert.AreEqual(1d, sut.QuickestPathResults["J"].QuickestTimeFromStart); }
public void FindQuickestPath_NOTStoppingAtEndNode_NodesVisitedForNodeJAreCorrect() { //ARRANGE Network dummy = DummyCreator.CreateDummyNetworkOfTenNodesWithConnectionsOption1(); PathFinder sut = new PathFinder(dummy); List <string> expectedNodesVisited = new List <string> { "A", "C", "F", "E", "D", "J" }; //ACT sut.FindQuickestPath("A", "E", false); List <string> actualNodesVisited = sut.QuickestPathResults["J"].NodesVisited; //ASSERT for (int i = 0; i < expectedNodesVisited.Count; i++) { Assert.AreEqual(expectedNodesVisited[i], actualNodesVisited[i]); } }
public void FindQuickestPath_FindsTwoEqualPaths_SticksWithTheFirstFoundOne() { //ARRANGE Network dummy = DummyCreator.CreateDummyNetworkOfTenNodesWithConnectionsOption2(); PathFinder sut = new PathFinder(dummy); double expectedQuickestPath = 10d; List <string> expectedNodesVisited = new List <string> { "A", "B" }; //ACT sut.FindQuickestPath("A", "B"); double actualQuickestPath = sut.QuickestPathResults["B"].QuickestTimeFromStart; List <string> actualNodesVisited = sut.QuickestPathResults["B"].NodesVisited; //ASSERT Assert.AreEqual(expectedQuickestPath, actualQuickestPath); for (int i = 0; i < expectedNodesVisited.Count; i++) { Assert.AreEqual(expectedNodesVisited[i], actualNodesVisited[i]); } }
public void FindQuickestPath_HappyDaysScenarioFive_GivesRightResult() { //ARRANGE Network dummy = DummyCreator.CreateDummyNetworkOfTenNodesWithConnectionsOption2(); PathFinder sut = new PathFinder(dummy); double expectedQuickestPath = 25d; List <string> expectedNodesVisited = new List <string> { "A", "B", "J", "D", "I", "H" }; //ACT sut.FindQuickestPath("A", "H"); double actualQuickestPath = sut.QuickestPathResults["H"].QuickestTimeFromStart; List <string> actualNodesVisited = sut.QuickestPathResults["H"].NodesVisited; //ASSERT Assert.AreEqual(expectedQuickestPath, actualQuickestPath); for (int i = 0; i < expectedNodesVisited.Count; i++) { Assert.AreEqual(expectedNodesVisited[i], actualNodesVisited[i]); } }
public void FindQuickestPath_StoppingAtEndNode_RightPathsShouldBeExploredAndNotExplored() { //ARRANGE Network dummy = DummyCreator.CreateDummyNetworkOfTenNodesWithConnectionsOption2(); PathFinder sut = new PathFinder(dummy); //ACT sut.FindQuickestPath("J", "D"); //ASSERT //Should be explored Assert.AreEqual(15, sut.QuickestPathResults["A"].QuickestTimeFromStart); Assert.AreEqual(5, sut.QuickestPathResults["B"].QuickestTimeFromStart); Assert.AreEqual(13, sut.QuickestPathResults["C"].QuickestTimeFromStart); Assert.AreEqual(7, sut.QuickestPathResults["D"].QuickestTimeFromStart); Assert.AreEqual(9, sut.QuickestPathResults["I"].QuickestTimeFromStart); Assert.AreEqual(0, sut.QuickestPathResults["J"].QuickestTimeFromStart); //Should not be explored Assert.AreEqual(double.PositiveInfinity, sut.QuickestPathResults["E"].QuickestTimeFromStart); Assert.AreEqual(double.PositiveInfinity, sut.QuickestPathResults["F"].QuickestTimeFromStart); Assert.AreEqual(double.PositiveInfinity, sut.QuickestPathResults["G"].QuickestTimeFromStart); Assert.AreEqual(double.PositiveInfinity, sut.QuickestPathResults["H"].QuickestTimeFromStart); }
public void PathFinderHasBeenUsedPreviously_DoesResetQuickestPathResultsBeforeCalculatingNewQuickestPath() { //ARRANGE Network network = DummyCreator.CreateDummyNetworkOfTenNodesWithConnectionsOption1(); PathFinder sut = new PathFinder(network); sut.FindQuickestPath("A", "D"); //ACT sut.InitializeQuickestPathResults("A"); //ASSERT foreach (var path in sut.QuickestPathResults) { if (path.Key != "A") { Assert.IsTrue(double.IsPositiveInfinity(path.Value.QuickestTimeFromStart)); } } foreach (var node in network.Nodes) { Assert.IsTrue(node.Value.visited == false); } }