def test_methods(self): self.node1 = NavNode(Point(x=0, y=0), 2, 4) self.node1.calculate_f() self.node2 = NavNode(Point(x=1, y=0), 2, 3) self.node2.calculate_f() self.node3 = NavNode(Point(x=2, y=0), 2, 2) self.node3.calculate_f() self.node4 = NavNode(Point(x=2, y=1), 2, 1) self.node4.calculate_f() self.node5 = NavNode(Point(x=2, y=0), 3, 2) # like node3 my_collection = NodePrioritySet() my_collection.add(self.node2, self.node2.f) my_collection.add(self.node1, self.node1.f) my_collection.add(self.node3, self.node3.f) self.assertFalse(my_collection.is_empty()) self.assertTrue(self.node1 in my_collection) self.assertTrue(self.node2 in my_collection) self.assertTrue(self.node3 in my_collection) self.assertFalse(self.node4 in my_collection) self.assertTrue(self.node5 in my_collection) # node5 has same position as node3 self.assertEquals(my_collection[self.node1], self.node1) self.assertEquals(my_collection[self.node5], self.node3) self.assertEquals(my_collection.pop(), self.node3) self.assertEquals(my_collection.pop(), self.node2) self.assertEquals(my_collection.pop(), self.node1) self.assertTrue(my_collection.is_empty()) self.assertFalse(self.node1 in my_collection)
def test_first_in_first_out(self): self.node1 = NavNode(Point(x=0, y=2), 2, 2) self.node2 = NavNode(Point(x=1, y=1), 2, 2) self.node3 = NavNode(Point(x=2, y=0), 2, 2) my_collection = NodePrioritySet() my_collection.add(self.node1, 4) my_collection.add(self.node2, 4) my_collection.add(self.node3, 4) self.assertEquals(my_collection.pop(), self.node3) self.assertEquals(my_collection.pop(), self.node2) self.assertEquals(my_collection.pop(), self.node1)
def test_node_extends_point(self): dimensions = Rect(0, 0, 12, 12) start = Point(x=3, y=4) goal = Point(x=8, y=11) barriers = [] NavNode.board = Board(dimensions, start, goal, barriers) position1 = Point(x=8, y=9) node1 = NavNode(position1, 0) position2 = Point(x=8, y=10) node2 = NavNode(position2, 1, None, node1) node3 = NavNode(position1, 2, None, node2) # test equals() self.assertTrue(node1.__eq__(node1)) self.assertFalse(node1.__eq__(node2)) self.assertTrue(node1.__eq__(node3)) # test as_tuple() self.assertEquals(node1.position.as_tuple(), (8, 9)) # test is_solution() goal_node = NavNode(goal, 3, None, node3) self.assertTrue(goal_node.is_solution()) # test get_ancestors() ancestors = goal_node.get_ancestors() self.assertTrue(ancestors[0].__eq__(node3)) self.assertTrue(ancestors[1].__eq__(node2)) self.assertTrue(ancestors[2].__eq__(node1))
def run(self): start_node = NavNode(position=self.board.start, g=0) a_star = AStar( draw=self.gfx.draw if not self.disable_gfx else lambda _: 0, disable_gfx=self.disable_gfx, draw_every=self.draw_every, print_path=self.print_path ) a_star.run(start_node=start_node)