Esempio n. 1
0
 def testRemovePointEmptyPointListShouldBeNone(self):
     frontier = GreedyFrontier()
     frontier.set_goal(Point(1, 2))
     self.assertEqual([], frontier._points)
     self.assertEqual(0, len(frontier._points))
     point = frontier.remove_point()
     self.assertEqual(None, point)
     self.assertEqual([], frontier._points)
     self.assertEqual(0, len(frontier._points))
Esempio n. 2
0
 def testRemovePointMultiplePointsShouldBeSecondPoint(self):
     frontier = GreedyFrontier()
     frontier.set_goal(Point(2, 3))
     frontier.add_point(Point(1, 1))
     frontier.add_point(Point(3, 3))
     frontier.add_point(Point(5, 5))
     self.assertEqual([Point(1, 1), Point(3, 3), Point(5, 5)], frontier._points)
     self.assertEqual(3, len(frontier._points))
     point = frontier.remove_point()
     self.assertEqual(Point(3, 3), point)
     self.assertEqual([Point(1, 1), Point(5, 5)], frontier._points)
     self.assertEqual(2, len(frontier._points))
Esempio n. 3
0
 def testSolveMazeGreedyVeryShortMazeShouldHaveTwoExploredTiles(self):
     maze = Maze('mazes/very_short_maze.txt', GreedyFrontier())
     maze._solve_maze()
     expected_maze = [['#', '#', '#'], ['#', 'B', '#'], ['#', 'O', '#'],
                      ['#', 'A', '#'], ['#', '#', '#']]
     self.assertEqual(expected_maze, maze._maze)
     self.assertEqual(2, maze._number_explored_tiles)
Esempio n. 4
0
 def testSolveMazeGreedyShortestPossibleMazeShouldHaveOneExploredTile(self):
     maze = Maze('mazes/shortest_possible_maze.txt', GreedyFrontier())
     maze._solve_maze()
     expected_maze = [['#', '#', '#'], ['#', 'B', '#'], ['#', 'A', '#'],
                      ['#', '#', '#']]
     self.assertEqual(expected_maze, maze._maze)
     self.assertEqual(1, maze._number_explored_tiles)
Esempio n. 5
0
 def testSolveMazeGreedyLinearMazeShouldHaveFourExploredTiles(self):
     maze = Maze('mazes/linear_maze.txt', GreedyFrontier())
     maze._solve_maze()
     expected_maze = [['#', '#', '#'], ['#', 'B', '#'], ['#', 'O', '#'],
                      ['#', 'O', '#'], ['#', 'O', '#'], ['#', 'A', '#'],
                      ['#', '#', '#']]
     self.assertEqual(expected_maze, maze._maze)
     self.assertEqual(4, maze._number_explored_tiles)
Esempio n. 6
0
 def testSolveMazeGreedyMazeWithDeadEndShouldHaveSixExploredTiles(self):
     maze = Maze('mazes/maze_with_dead_end.txt', GreedyFrontier())
     maze._solve_maze()
     expected_maze = [['#', '#', '#', '#', '#'], ['#', ' ', '#', 'B', '#'],
                      ['#', ' ', '#', 'O', '#'], ['#', ' ', 'O', 'O', '#'],
                      ['#', '#', 'O', '#', '#'], ['#', '#', 'O', '#', '#'],
                      ['#', '#', 'A', '#', '#'], ['#', '#', '#', '#', '#']]
     self.assertEqual(expected_maze, maze._maze)
     self.assertEqual(6, maze._number_explored_tiles)
Esempio n. 7
0
 def testSolveMazeGreedyMazeWithTurnShouldHaveEightExploredTiles(self):
     maze = Maze('mazes/maze_with_turn.txt', GreedyFrontier())
     maze._solve_maze()
     expected_maze = [['#', '#', '#', '#', '#'], ['#', '#', '#', 'B', '#'],
                      ['#', '#', '#', 'O', '#'], ['#', '#', '#', 'O', '#'],
                      ['#', 'O', 'O', 'O', '#'], ['#', 'O', '#', '#', '#'],
                      ['#', 'O', '#', '#', '#'], ['#', 'A', '#', '#', '#'],
                      ['#', '#', '#', '#', '#']]
     self.assertEqual(expected_maze, maze._maze)
     self.assertEqual(8, maze._number_explored_tiles)
Esempio n. 8
0
 def testSolveMazeGreedyMazeWithMultipleSolutionsShouldHaveFiveExploredTiles(
         self):
     maze = Maze('mazes/maze_with_multiple_solutions.txt', GreedyFrontier())
     maze._solve_maze()
     expected_maze = [['#', '#', '#', '#', '#'], ['#', ' ', ' ', ' ', '#'],
                      ['#', ' ', '#', 'B', '#'], ['#', ' ', '#', 'O', '#'],
                      ['#', ' ', 'O', 'O', '#'], ['#', '#', 'O', '#', '#'],
                      ['#', '#', 'A', '#', '#'], ['#', '#', '#', '#', '#']]
     self.assertEqual(expected_maze, maze._maze)
     self.assertEqual(5, maze._number_explored_tiles)
def generate_frontier(frontier_choice):
    if frontier_choice == STACK_FRONTIER:
        return StackFrontier()
    elif frontier_choice == QUEUE_FRONTIER:
        return QueueFrontier()
    elif frontier_choice == GREEDY_FRONTIER:
        return GreedyFrontier()
    elif frontier_choice == ASTAR_FRONTIER:
        return AStarFrontier()
    else:
        print('ERROR -- Invalid frontier!')
        exit()
Esempio n. 10
0
 def testRemovePointOnlyOnePointShouldBeOnlyPoint(self):
     frontier = GreedyFrontier()
     frontier.set_goal(Point(1, 2))
     frontier.add_point(Point(1, 1))
     self.assertEqual([Point(1, 1)], frontier._points)
     self.assertEqual(1, len(frontier._points))
     point = frontier.remove_point()
     self.assertEqual(Point(1, 1), point)
     self.assertEqual([], frontier._points)
     self.assertEqual(0, len(frontier._points))
Esempio n. 11
0
 def testCalculateCartesanDistanceFromGoalXValueIsOffByNegativeOneYValueIsOffByOneShouldBeTwo(self):
     frontier = GreedyFrontier()
     frontier.set_goal(Point(5, 5))
     self.assertEqual(2, frontier._calculate_cartesan_distance_from_goal(Point(4, 6)))
Esempio n. 12
0
 def testCalculateCartesanDistanceFromGoalIsGoalShouldBeZero(self):
     frontier = GreedyFrontier()
     frontier.set_goal(Point(1, 2))
     self.assertEqual(0, frontier._calculate_cartesan_distance_from_goal(Point(1, 2)))