def validate_run(cards):
    """
    a run is 3 to 10 consecutive cards of the same suit
    :param cards: list of Card objects
    :return: Boolean
    """
    if len(cards) < 3 or len(cards) > 10:
        return False
    if not all(card.suit == cards[0].suit for card in cards):
        return False

    ranks = sorted([card.rank for card in cards])
    prev_rank = ranks[0]
    for rank in ranks[1:]:
        if rank - prev_rank != 1:
            return False
        prev_rank = rank

    return True