Ejemplo n.º 1
0
    def test__mark_causes_win__should_return_true_if_horizontal_win(self):
        game = Game('test-grid', uuid.uuid4(), PLAYER_X, PLAYER_O)
        game.cells = [
            Mark(0, 0, X_MARK),
            Mark(2, 0, X_MARK)
        ]

        win = game.mark_causes_win(Mark(1, 0, X_MARK))

        assert win
Ejemplo n.º 2
0
    def test__get_cell_by_coordinates__returns_mark_at_coordinates(self):
        existing_mark_1 = Mark(0, 0, X_MARK)
        existing_mark_2 = Mark(1, 1, O_MARK)
        game = Game('test-game', uuid.uuid4(), PLAYER_X, PLAYER_O)
        game.cells.append(existing_mark_1)
        game.cells.append(existing_mark_2)

        actual_mark = game.get_cell_by_coordinates(1, 1)

        assert actual_mark == existing_mark_2
Ejemplo n.º 3
0
    def test__mark_causes_win__should_return_true_if_positive_slope_diagonal_win(self):
        game = Game('test-grid', uuid.uuid4(), PLAYER_X, PLAYER_O)
        game.cells = [
            Mark(0, 2, X_MARK),
            Mark(2, 0, X_MARK)
        ]

        win = game.mark_causes_win(Mark(1, 1, X_MARK))

        assert win
Ejemplo n.º 4
0
def _post_fake_x_wins(url, game):
    moves = [
        Mark(0, 0, X_MARK),
        Mark(0, 1, O_MARK),
        Mark(1, 0, X_MARK),
        Mark(1, 1, O_MARK),
        Mark(2, 0, X_MARK)
    ]

    if game.state == GAME_COMPLETED:
        return {'x': -1, 'y': -1}

    next_move = moves[len(game.cells)]
    return {'x': next_move.x, 'y': next_move.y}
Ejemplo n.º 5
0
    def test__get_cell_by_coordinates__returns_none_if_coordinates_are_empty(self):
        existing_mark_1 = Mark(0, 0, X_MARK)
        game = Game('test-grid', uuid.uuid4(), PLAYER_X, PLAYER_O)
        game.cells.append(existing_mark_1)

        actual_mark = game.get_cell_by_coordinates(1, 1)

        assert not actual_mark
Ejemplo n.º 6
0
 def mark_cell_by_coordinates(self, x, y, mark):
     if not self.get_cell_by_coordinates(x, y):
         mark_obj = Mark(x, y, mark)
         self.cells.append(mark_obj)
         if self.mark_causes_win(mark_obj):
             self.state = GAME_COMPLETED
             return True
         return False
     else:
         raise CellInUseException