Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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]);
            }
        }
Exemple #5
0
        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]);
            }
        }
Exemple #6
0
        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]);
            }
        }
Exemple #7
0
        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);
        }
Exemple #8
0
        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);
            }
        }