def test_build_move_map():
    """Check that the move map is being built correctly.
    """
    board = Board()

    # Player 0
    moves = board.get_legal_moves(player=0)
    assert len(board.move_map_player_0) == len(moves)
    assert all([type(v) == int for v in board.move_map_player_0.values()])
    assert all([type(k) == tuple for k in board.move_map_player_0.keys()])

    # Player 1
    moves = board.get_legal_moves(player=1)
    assert len(board.move_map_player_1) == len(moves)
    assert all([type(v) == int for v in board.move_map_player_1.values()])
    assert all([type(k) == tuple for k in board.move_map_player_1.keys()])
def test_get_legal_moves():
    """Check that the function generates all possible moves when the board is
    empty.
    """
    board = Board()

    empty_spaces = board.get_empty_spaces()
    legal_moves = board.get_legal_moves(player=0)

    for space in empty_spaces:
        q, r = space
        assert ((q, r, 1), ()) in legal_moves
        assert ((q, r, 2), ()) in legal_moves

    for (space1, space2) in permutations(empty_spaces, r=2):
        assert ((space1[0], space1[1], 1), (space2[0], space2[1],
                                            2)) in legal_moves