예제 #1
0
        public void QueueTest()
        {
            PriorityQueue <AStarWorkingNode> q = new PriorityQueue <AStarWorkingNode>();

            AStarWorkingNode node1 = new AStarWorkingNode(new PathNode())
            {
                GScore = 1.0f, HScore = 5.0f
            };
            AStarWorkingNode node2 = new AStarWorkingNode(new PathNode())
            {
                GScore = 0.2f, HScore = 4.5f
            };
            AStarWorkingNode node3 = new AStarWorkingNode(new PathNode())
            {
                GScore = 0.5f, HScore = 5.0f
            };

            q.Enqueue(node1);
            q.Enqueue(node2);
            q.Enqueue(node3);

            AStarWorkingNode node;

            node = q.Dequeue();
            Assert.AreEqual(4.7f, node.FScore);

            node = q.Dequeue();
            Assert.AreEqual(5.5f, node.FScore);

            node = q.Dequeue();
            Assert.AreEqual(6.0f, node.FScore);
        }
예제 #2
0
        public void WorkingNodeEquallityTest()
        {
            PathNode pNode1 = new PathNode();
            PathNode pNode2 = new PathNode();

            AStarWorkingNode wNode1 = new AStarWorkingNode(pNode1);
            AStarWorkingNode wNode2 = new AStarWorkingNode(pNode1);

            AStarWorkingNode wNode3 = new AStarWorkingNode(pNode2);

            Assert.AreEqual(true, wNode1.Equals(wNode2));
            Assert.AreEqual(false, wNode1.Equals(wNode3));

            // Test Hash Set
            HashSet <AStarWorkingNode> set = new HashSet <AStarWorkingNode>();

            set.Add(wNode1);

            Assert.AreEqual(true, set.Contains(wNode2));
            Assert.AreEqual(false, set.Contains(wNode3));
        }