コード例 #1
0
        public void TestNonContinuous()
        {
            List <PathNode> testPathNodes = Get5x5PathNodeList();

            testPathNodes.RemoveAll(node => node.pos.xPos == -4);

            List <PathNode> accessible = DijkstraPathfinder.CalculatePathDistance(testPathNodes, 0, 0);

            Assert.AreEqual(57, accessible.Count, "Some pathnodes were trimmed inappropriately");
        }
コード例 #2
0
        public void TestUniformCostUnbounded()
        {
            List <PathNode> testPathNodes = Get5x5PathNodeList();
            List <PathNode> accessible    = DijkstraPathfinder.CalculatePathDistance(testPathNodes, 0, 0);

            Assert.AreEqual(61, accessible.Count, "Some pathnodes were trimmed inappropriately");

            int[] distArray = new int[] { 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
            int   distIndex = 0;

            foreach (PathNode pnode in accessible)
            {
                Assert.AreEqual(distArray[distIndex++], pnode.distance, "A pathnode was not the expected distance");
            }
        }
コード例 #3
0
        public void TestCostPocket()
        {
            List <PathNode> testPathNodes = Get5x5PathNodeList();

            testPathNodes.First(node => node.pos.xPos == 1 && node.pos.yPos == 1).cost = 100;
            testPathNodes.First(node => node.pos.xPos == 1 && node.pos.yPos == 2).cost = 100;
            testPathNodes.First(node => node.pos.xPos == 2 && node.pos.yPos == 1).cost = 100;
            testPathNodes.First(node => node.pos.xPos == 3 && node.pos.yPos == 1).cost = 100;
            testPathNodes.First(node => node.pos.xPos == 3 && node.pos.yPos == 2).cost = 100;

            List <PathNode> accessible = DijkstraPathfinder.CalculatePathDistance(testPathNodes, 0, 0);

            PathNode pocketNode = accessible.First(node => node.pos.xPos == 2 && node.pos.yPos == 2);

            Assert.AreEqual(6, pocketNode.distance, "Pocket cost not accounted for");

            PathNode edgeNode1 = accessible.First(node => node.pos.xPos == 1 && node.pos.yPos == 1);

            Assert.AreEqual(101, edgeNode1.distance, "edge node cost not accounted for");

            PathNode edgeNode2 = accessible.First(node => node.pos.xPos == 3 && node.pos.yPos == 2);

            Assert.AreEqual(106, edgeNode2.distance, "edge node cost not accounted for");
        }