Esempio n. 1
0
 def test_check_next_node_adds_next_states_to_fringe(self):
     solver = BfsSolver(self.board_with_middle_empty_slot)
     solver.check_next_node()
     self.assertEqual([Node([1, 0, 3, 4, 2, 5, 6, 7, 8], Moves.UP, 2),
                       Node([1, 2, 3, 4, 7, 5, 6, 0, 8], Moves.DOWN, 2),
                       Node([1, 2, 3, 0, 4, 5, 6, 7, 8], Moves.LEFT, 2),
                       Node([1, 2, 3, 4, 5, 0, 6, 7, 8], Moves.RIGHT, 2)],
                      solver.fringe)
Esempio n. 2
0
 def test_check_next_node_sets_solution_found(self):
     solver = BfsSolver(self.solved_board)
     solver.fringe.add_all([Node(self.solved_board),
                            Node(swap(self.solved_board, Moves.RIGHT)),
                            Node(swap(self.solved_board, Moves.DOWN))])
     solver.solution_found = False
     solver.check_next_node()
     self.assertTrue(solver.solution_found)
Esempio n. 3
0
 def __init__(self, strategy, starting_state):
     tiles = [int(i) for i in starting_state.replace(',', '')]
     starting_board = tiles
     if strategy == 'bfs':
         self.solver = BfsSolver(starting_board)
     if strategy == 'dfs':
         self.solver = DfsSolver(starting_board)
     if strategy == 'ast':
         self.solver = AstSolver(starting_board)
Esempio n. 4
0
 def test_fringe_add_all(self):
     solver = BfsSolver(self.solved_board)
     solver.fringe.add_all([Node(self.board_with_middle_empty_slot)])
     self.assertEqual([Node(self.solved_board), Node(self.board_with_middle_empty_slot)], solver.fringe)
     self.assertEqual({876543210, 876504321}, solver.fringe.hashes)
Esempio n. 5
0
 def test_fringe_add_board(self):
     solver = BfsSolver(self.solved_board)
     solver.fringe.add(Node(self.board_with_middle_empty_slot))
     self.assertEqual([Node(self.solved_board), Node(self.board_with_middle_empty_slot)], solver.fringe)
Esempio n. 6
0
 def test_should_not_add_to_fringe_when_node_is_visited(self):
     solver = BfsSolver(self.solved_board)
     next_node = Node(self.board_with_middle_empty_slot)
     solver.add_to_visited(next_node)
     self.assertFalse(solver.should_add_to_fringe(next_node))
Esempio n. 7
0
 def test_should_not_add_to_fringe_when_node_is_in_fringe(self):
     solver = BfsSolver(self.solved_board)
     next_node = Node(self.solved_board)
     self.assertEqual([next_node], solver.fringe)
     self.assertFalse(solver.should_add_to_fringe(next_node))
Esempio n. 8
0
 def test_should_add_to_fringe_when_node_is_not_in_fringe_or_visited(self):
     solver = BfsSolver(self.solved_board)
     self.assertEqual([Node(self.solved_board)], solver.fringe)
     self.assertTrue(solver.should_add_to_fringe(Node(self.board_with_middle_empty_slot)))
Esempio n. 9
0
 def test_run_computes_result_when_board_is_solved(self):
     solver = BfsSolver(self.solved_board)
     result = solver.run()
     self.assertEqual([], result.path_to_goal)
     self.assertEqual(0, result.nodes_expanded)
     self.assertEqual(0, result.search_depth)
Esempio n. 10
0
 def check_next_node_adds_to_visited_set(self):
     solver = BfsSolver(self.solved_board)
     solver.check_next_node()
     self.assertEqual(set([Node(self.solved_board)]), solver.visited)
Esempio n. 11
0
 def test_init(self):
     solver = BfsSolver(self.solved_board)
     self.assertEqual(set(), solver.visited)
     self.assertTrue(Node(self.solved_board) in solver.fringe)
     self.assertEqual([Node(self.solved_board)], solver.fringe)