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)
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)
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)
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)
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
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
def move_range(self): """Get a range for rook.""" rng = list(horizontal(self)) + list(vertical(self)) return rng + super(Rook, self).move_range