예제 #1
0
def test_game_board_has_empty_spaces():
    board = Board()

    for row in range(2, 6):
        board_row = board.board[row]
        for cell in board_row:
            assert '' == str(cell)
예제 #2
0
def create_game():
    # form values
    player_one_value = get_arg("playerOneId")
    player_one_id = player_one_value.split(":")[0]
    player_one = None  # load player with player_dao

    player_two_value = get_arg("playerTwoId")
    player_two_id = player_two_value.split(":")[0]
    player_two = None  # load player with player_dao

    name = get_arg("name")

    # default values
    board = Board()
    board_id = board_dao.create(board)
    board = board_dao.find_by_id(board_id)

    start_date = datetime.now()
    game_data = {'move_count': 0, 'player_one_move_count': 0, 'player_two_move_count': 0, 'turn': 'player_one'}
    status = "New"

    game = Game(player_one=player_one, player_two=player_two, board=board, game_data=game_data, start_date=start_date,
                status=status, name=name)
    game_id = game_dao.create(game)

    _games = game_dao.find_all()
    return render_template('games.html', game_id=game_id, games=_games)
예제 #3
0
def test_cant_castle_king_move():
    board = Board()

    board.board[7][3].piece.has_moved = True

    board.board[7][1].piece = None
    board.board[7][2].piece = None
    board.board[7][4].piece = None
    board.board[7][5].piece = None
    board.board[7][6].piece = None
    """ board
    wr0 wh0 wb0 wk0 wq0 wb0 wh0 wr0
    wp0 wp0 wp0 wp0 wp0 wp0 wp0 wp0
    ### ### ### ### ### ### ### ###
    ### ### ### ### ### ### ### ###
    ### ### ### ### ### ### ### ###
    ### ### ### ### ### ### ### ###
    bp0 bp0 bp0 bp0 bp0 bp0 bp0 bp0
    br0 ### ### bk1 ### ### ### br0
    """

    expected_hints = [[8, 5], [8, 6], [8, 7]]
    rook = board.board[7][7].piece

    hints = rook.hints(board.board)

    assert_lists_equivalent(expected_hints, hints)
예제 #4
0
def board():
    board = Board()

    board.board[4][4].piece = King()
    board.board[4][5].piece = Pawn(is_white=False)

    board.board[6][5].piece = None
    board.board[7][1].piece = None
    board.board[7][2].piece = None
    board.board[7][3].piece = None
    board.board[7][5].piece = None
    board.board[7][6].piece = None

    """ board
    wr0 wh0 wb0 wk0 wq0 wb0 wh0 wr0
    wp0 wp0 wp0 wp0 wp0 wp0 wp0 wp0
    ### ### ### ### ### ### ### ###
    ### ### ### ### ### ### ### ###
    ### ### ### ### wk0 bp0 ### ###
    ### ### ### ### ### ### ### ###
    bp0 bp0 bp0 bp0 bp0 ### bp0 bp0
    br0 ### ### ### bq0 ### ### br0
    """

    return board
예제 #5
0
def chess():
    board = Board()
    board_id = board_dao.create(board)
    player_one = get_arg('user')

    # pass board id into variable
    return render_template('chess.html', board=board, player_one=player_one, board_id=board_id)
예제 #6
0
def test_game_board_has_pawns():
    board = Board()

    board_white_pawn_row = board.board[1]
    for cell in board_white_pawn_row:
        assert 'wp0' == str(cell)

    board_black_pawn_row = board.board[6]
    for cell in board_black_pawn_row:
        assert 'bp0' == str(cell)
예제 #7
0
def test_game_board_has_black_pieces():
    expected_black_pieces = [
        "br0", "bh0", "bb0", "bk0", "bq0", "bb0", "bh0", "br0"
    ]

    board = Board()
    black_row = board.board[7]

    for index, cell in enumerate(black_row):
        assert str(cell) == expected_black_pieces[index]
예제 #8
0
def test_game_board_has_white_pieces():
    expected_white_pieces = [
        "wr0", "wh0", "wb0", "wk0", "wq0", "wb0", "wh0", "wr0"
    ]

    board = Board()
    white_row = board.board[0]

    for index, cell in enumerate(white_row):
        assert str(cell) == expected_white_pieces[index]
예제 #9
0
def test_dao_create_and_find_boards(mongo_database):
    board = Board()
    board_dao = BoardDao(mongo_database)

    board_dao.create(board)
    board_id = board_dao.create(board)
    loaded_boards = board_dao.find_all()

    assert len(loaded_boards) > 1
    assert len(
        [board for board in loaded_boards if board_id == str(board['_id'])])
예제 #10
0
def test_dao_update_board(mongo_database):
    original_board = Board()
    board_dao = BoardDao(mongo_database)
    board_id = board_dao.create(original_board)

    updated_board = board()
    board_dao.update(board_id, updated_board)
    loaded_board = board_dao.find_by_id(board_id)

    for row_index, row in enumerate(loaded_board.board):
        for cell_index, cell in enumerate(row):
            assert str(updated_board.board[row_index][cell_index]) == str(cell)
예제 #11
0
def test_dao_create_and_find_board(mongo_database):
    board = Board()
    board_dao = BoardDao(mongo_database)

    board_id = board_dao.create(board)
    loaded_board = board_dao.find_by_id(board_id)

    assert 8 == len(loaded_board.board)
    assert 8 == len(loaded_board.board[0])

    for row_index, row in enumerate(loaded_board.board):
        for cell_index, cell in enumerate(row):
            assert str(board.board[row_index][cell_index]) == str(cell)
예제 #12
0
def board():
    board = Board()

    # single move only
    board.board[1][1].piece = None
    board.board[2][1].piece = Pawn()
    board.board[2][1].piece.has_moved = True

    # piece block and attack black and not attack white
    board.board[1][3].piece = None
    board.board[3][3].piece = Pawn()
    board.board[3][3].piece.has_moved = True

    board.board[1][2].piece = None
    board.board[4][2].piece = Pawn()
    board.board[4][2].piece.has_moved = True

    board.board[6][3].piece = None
    board.board[4][3].piece = Pawn(is_white=False)
    board.board[4][3].piece.has_moved = True

    board.board[6][4].piece = None
    board.board[4][4].piece = Pawn(is_white=False)
    board.board[4][4].piece.has_moved = True

    board.board[6][5].piece = None
    board.board[2][5].piece = Pawn(is_white=False)
    board.board[2][5].piece.has_moved = True

    board.board[6][6].piece = None
    board.board[5][6].piece = Pawn(is_white=False)
    board.board[5][6].piece.has_moved = True

    board.board[6][7].piece = None
    board.board[2][7].piece = Pawn(is_white=False)
    board.board[2][7].piece.has_moved = True
    """ board
    wr0 wh0 wb0 wk0 wq0 wb0 wh0 wr0
    wp0 ### ### ### wp0 wp0 wp0 wp0
    ### wp1 ### ### ### bp1 ### bp1
    ### ### ### wp1 ### ### ### ###
    ### ### wp1 bp1 bp1 ### ### ###
    ### ### ### ### ### ### bp1 ###
    bp0 bp0 bp0 ### ### ### ### ###
    br0 bh0 bb0 bk0 bq0 bb0 bh0 br0
    """

    return board
예제 #13
0
def board():
    board = Board()

    board.board[0][1].piece = None
    board.board[4][3].piece = Knight()
    """ board
    wr0 ### wb0 wk0 wq0 wb0 wh0 wr0
    wp0 wp0 wp0 wp0 wp0 wp0 wp0 wp0
    ### ### ### ### ### ### ### ###
    ### ### ### ### ### ### ### ###
    ### ### ### wh0 ### ### ### ###
    ### ### ### ### ### ### ### ###
    bp0 bp0 bp0 bp0 bp0 bp0 bp0 bp0
    br0 bh0 bb0 bk0 bq0 bb0 bh0 br0
    """

    return board
예제 #14
0
def board():
    board = Board()

    board.board[4][4].piece = Queen()

    """ board
    wr0 wh0 wb0 wk0 wq0 wb0 wh0 wr0
    wp0 wp0 wp0 wp0 wp0 wp0 wp0 wp0
    ### ### ### ### ### ### ### ###
    ### ### ### ### ### ### ### ###
    ### ### ### ### wq0 ### ### ###
    ### ### ### ### ### ### ### ###
    bp0 bp0 bp0 bp0 bp0 bp0 bp0 bp0
    br0 bh0 bb0 bk0 bq0 bb0 bh0 br0
    """

    return board
예제 #15
0
def board():
    board = Board()

    board.board[0][5].piece = None
    board.board[4][4].piece = Bishop()
    board.board[4][4].piece.has_moved = True
    """ board
    wr0 wh0 wb0 wk0 wq0 ### wh0 wr0
    wp0 wp0 wp0 wp0 wp0 wp0 wp0 wp0
    ### ### ### ### ### ### ### ###
    ### ### ### ### ### ### ### ###
    ### ### ### ### wb1 ### ### ###
    ### ### ### ### ### ### ### ###
    bp0 bp0 bp0 bp0 bp0 bp0 bp0 bp0
    br0 bh0 bb0 bk0 bq0 bb0 bh0 br0
    """

    return board
예제 #16
0
def board():
    board = Board()

    board.board[0][7].piece = None
    board.board[4][4].piece = Rook()

    board.board[7][1].piece = None
    board.board[7][2].piece = None
    board.board[7][4].piece = None
    board.board[7][5].piece = None
    board.board[7][6].piece = None
    """ board
    wr0 wh0 wb0 wk0 wq0 wb0 wh0 ###
    wp0 wp0 wp0 wp0 wp0 wp0 wp0 wp0
    ### ### ### ### ### ### ### ###
    ### ### ### ### ### ### ### ###
    ### ### ### ### wr0 ### ### ###
    ### ### ### ### ### ### ### ###
    bp0 bp0 bp0 bp0 bp0 bp0 bp0 bp0
    br0 ### ### bk0 ### ### ### br0
    """

    return board
예제 #17
0
def test_move():
    board = Board()

    board.board[3][3].piece = King()

    """ board
    wr0 wh0 wb0 wk0 wq0 wb0 wh0 wr0
    wp0 wp0 wp0 wp0 wp0 wp0 wp0 wp0
    ### ### ### ### ### ### ### ###
    ### ### ### wk0 ### ### ### ###
    ### ### ### ### ### ### ### ###
    ### ### ### ### ### ### ### ###
    bp0 bp0 bp0 bp0 bp0 bp0 bp0 bp0
    br0 bh0 bb0 bk0 bq0 bb0 bh0 br0
    """

    expected_hints = [
        [3, 3], [3, 4], [3, 5], [4, 3], [4, 5], [5, 3], [5, 4], [5, 5]
    ]
    king = board.board[3][3].piece

    hints = king.hints(board.board)

    assert_lists_equivalent(expected_hints, hints)
예제 #18
0
 def find_by_id(self, board_id):
     board_model = self._mongo_database.get(self._collection, board_id)
     board = Board.build_board(board_model['board'])
     board._id = board_model['_id']
     return board
예제 #19
0
def test_castle_top():
    board = Board()

    board.board[0][1].piece = None
    board.board[0][2].piece = None
    board.board[0][4].piece = None
    board.board[0][5].piece = None
    board.board[0][6].piece = None

    board.board[7][0].piece.has_moved = True
    board.board[7][1].piece = None
    board.board[7][2].piece = None
    board.board[7][4].piece = None
    board.board[7][5].piece = None
    board.board[7][6].piece = None
    board.board[7][7].piece.has_moved = True
    """ board
    wr0 ### ### wk0 ### ### ### wr0
    wp0 wp0 wp0 wp0 wp0 wp0 wp0 wp0
    ### ### ### ### ### ### ### ###
    ### ### ### ### ### ### ### ###
    ### ### ### ### ### ### ### ###
    ### ### ### ### ### ### ### ###
    bp0 bp0 bp0 bp0 bp0 bp0 bp0 bp0
    br1 ### ### bk0 ### ### ### br1
    """

    # top left
    expected_hints = [[1, 2], [1, 3], [1, 4]]
    rook = board.board[0][0].piece

    hints = rook.hints(board.board)

    assert_lists_equivalent(expected_hints, hints)

    # top right
    expected_hints = [[1, 4], [1, 5], [1, 6], [1, 7]]
    rook = board.board[0][7].piece

    hints = rook.hints(board.board)

    assert_lists_equivalent(expected_hints, hints)

    # bottom left
    expected_hints = [[8, 2], [8, 3]]
    rook = board.board[7][0].piece

    hints = rook.hints(board.board)

    assert_lists_equivalent(expected_hints, hints)

    # bottom right
    expected_hints = [[8, 5], [8, 6], [8, 7]]
    rook = board.board[7][7].piece

    hints = rook.hints(board.board)

    assert_lists_equivalent(expected_hints, hints)

    board.board[7][0].piece.has_moved = False
    board.board[7][7].piece.has_moved = False
    board.board[7][3].piece.has_moved = True  # king
예제 #20
0
def test_board_init():
    board = Board()
    assert 8 == len(board.board)
    for row in board.board:
        assert 8 == len(row)