Exemple #1
0
    def move_range(self):
        """Get a move range for king."""
        hor = horizontal(self, 2)
        ver = vertical(self, 2)
        diag = diagonal(self, 4)

        return list(hor) + list(ver) + list(diag)
Exemple #2
0
def test_queen_ranges(coords, queen):  # noqa: D103
    queen.position = Position(*coords)

    exp_ranges = chain(diagonal(queen), horizontal(queen), vertical(queen))

    assert sorted(queen.move_range) == sorted(queen.attack_range)
    assert sorted(exp_ranges) == sorted(queen.move_range)
Exemple #3
0
def test_rook_ranges(coords, rook):  # noqa: D103
    rook.move(coords)
    rook.grid.add_piece(rook)

    assert sorted(rook.move_range) == sorted(rook.attack_range)

    test_range = chain(horizontal(rook), vertical(rook))
    assert sorted(test_range) == sorted(rook.move_range)
Exemple #4
0
def test_king_ranges(coords, king):  # noqa: D103
    king.position = Position(*coords)

    exp_ranges = chain(diagonal(king, 4), horizontal(king, 2),
                       vertical(king, 2))

    assert sorted(king.move_range) == sorted(king.attack_range)
    assert sorted(exp_ranges) == sorted(king.move_range)
Exemple #5
0
def test_horizontal_center(piece):  # noqa: D103
    start_pos = piece.position
    hor = horizontal(piece)
    p1 = Position(*next(hor))
    assert p1.rank == start_pos.rank

    p2 = Position(*next(hor))
    assert p2.rank == start_pos.rank
    expected = [start_pos.file - 1, start_pos.file + 1]
    assert sorted((p1.file, p2.file)) == expected
Exemple #6
0
def test_horizontal_edge(p_file, piece):  # noqa: D103
    piece.position = Position(piece.position.rank, p_file)
    start_pos = piece.position
    hor = horizontal(piece)
    p1 = Position(*next(hor))
    diff = 1 if p_file == MIN_POS else -1

    assert p1.file == start_pos.file + diff
    assert p1.rank == start_pos.rank

    p2 = Position(*next(hor))
    assert p2.file == start_pos.file + diff * 2
    assert p2.rank == start_pos.rank
Exemple #7
0
 def move_range(self):
     """Get a range for rook."""
     rng = list(horizontal(self)) + list(vertical(self))
     return rng + super(Rook, self).move_range