def testSerialization(): for i in range(2, 3): puzzle = Npuzzle(size=i) solver = GeneralSolver(puzzle=puzzle) solver.solve() new_puzzle = Npuzzle.deserialize(puzzle.serialize()) assert hash(puzzle) == hash(new_puzzle)
def testSolver(): """Tests the solver functionality of the Puzzle""" puzzle = Hanoi() solver = GeneralSolver(puzzle) solver.solve() assert solver.getRemoteness(Hanoi.fromString('7-0-0')) == 7
def testSolver(): """Tests the solver functionality of the Puzzle""" puzzle = p_cls() solver = GeneralSolver(puzzle) solver.solve() assert solver.getRemoteness(p_cls.fromString("R_A_2_2_----")) == 4
def testSolver(): """Tests the solver functionality of the Puzzle""" puzzle = NQueens() solver = GeneralSolver(puzzle) solver.solve() assert solver.getRemoteness( NQueens.fromString('R_A_4_4_--q--q----q--q--')) == 2
def testSolutionsError(): record_sol = GraphPuzzle(0, value=PuzzleValue.SOLVABLE) missed_sol = GraphPuzzle(1, value=PuzzleValue.SOLVABLE) not_a_solu = GraphPuzzle(2) record_sol.setMove(missed_sol, movetype="bi") record_sol.setMove(not_a_solu, movetype="bi") # Two solutions, but only one is called in generateSolutions record_sol.solutions.remove(missed_sol) try: solver = GeneralSolver(record_sol) solver.solve() except AssertionError: pass # generateSolutions also includes a state that is not a solution record_sol.solutions.update(set([record_sol, missed_sol, not_a_solu])) try: solver = GeneralSolver(record_sol) solver.solve() except AssertionError: pass
def testRemotenessSanity(): for i in range(2, 3): puzzle = Npuzzle(size=i) solver = GeneralSolver(puzzle=puzzle) solver.solve() assert solver.getValue(puzzle) == PuzzleValue.SOLVABLE assert solver.getRemoteness(puzzle) == 1
def testBestMove(): p1 = GraphPuzzle("0", value=PuzzleValue.UNDECIDED) p2 = GraphPuzzle("1", value=PuzzleValue.UNDECIDED) p3 = GraphPuzzle("2", value=PuzzleValue.UNDECIDED) p4 = GraphPuzzle("3", value=PuzzleValue.SOLVABLE) p1.setMove(p2, movetype="for") p2.setMove(p3, movetype="for") p3.setMove(p4, movetype="for") solver = GeneralSolver(p1) player = TUI(p1, solver, debug=True) input_mock = mock.Mock(return_value=0) with mock.patch('puzzlesolver.players.tui.input', input_mock): player.play() assert input_mock.call_count == 3