예제 #1
0
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)
예제 #2
0
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
예제 #4
0
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
예제 #6
0
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
예제 #7
0
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