Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 5
0
def test_vertical_center(piece):  # noqa: D103
    start_pos = piece.position
    ver = vertical(piece)
    p1 = Position(*next(ver))
    assert p1.file == start_pos.file

    p2 = Position(*next(ver))
    assert p2.file == start_pos.file
    expected = [start_pos.rank - 1, start_pos.rank + 1]
    assert sorted((p1.rank, p2.rank)) == expected
Exemplo n.º 6
0
def test_vertical_edge(p_rank, piece):  # noqa: D103
    piece.position = Position(p_rank, piece.position.file)
    start_pos = piece.position
    ver = vertical(piece)
    p1 = Position(*next(ver))
    diff = 1 if p_rank == MIN_POS else -1

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

    p2 = Position(*next(ver))
    assert p2.file == start_pos.file
    assert p2.rank == start_pos.rank + diff * 2
Exemplo n.º 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