def test_basic_card_create(): card = Card("Spades", "9") assert card.rank.name == "9" assert card.rank.value == 9 assert card.suit.name == "Spades" assert card.suit.value == 1 assert card.score == 9 card = Card("Hearts", "King") assert card.rank.name == "King" assert card.rank.value == 13 assert card.suit.name == "Hearts" assert card.suit.value == 3 assert card.score == 39 card = Card(Card.SUIT.Spades, "9") assert card.rank.name == "9" assert card.rank.value == 9 assert card.suit.name == "Spades" assert card.suit.value == 1 assert card.score == 9 card = Card("Hearts", Card.RANK.King) assert card.rank.name == "King" assert card.rank.value == 13 assert card.suit.name == "Hearts" assert card.suit.value == 3 assert card.score == 39
def test_basic_player_3(): players = Players(["Berkelly", "Cez"]) player_1 = Player("Berkelly") player_2 = Player("Cez") assert len(players) == 2 assert players.first().tie assert player_1 in players.first().players assert player_2 in players.first().players assert str(players) == LEADERBOARD_4 players.Cez.draw_card(Card("Clubs", "3")) player_2.draw_card(Card("Clubs", "3")) assert not players.first().tie assert players.first().player == player_2 assert players.first().name == player_2.name assert players.first().score == 12 assert players.second().player == player_1 assert players.second().name == player_1.name assert players.second().score == 0 assert str(players) == LEADERBOARD_5 players.Berkelly.draw_card(Card("Hearts", "4")) player_1.draw_card(Card("Hearts", "4")) assert players.first().tie assert player_1 in players.first().players assert player_1.name in players.first().names assert player_2 in players.first().players assert player_2.name in players.first().names assert players.first().score == 12 assert str(players) == LEADERBOARD_6 players.Berkelly.draw_card(Card("Spades", "King")) player_1.draw_card(Card("Spades", "King")) assert not players.first().tie assert players.first().player == player_1 assert players.first().name == player_1.name assert players.first().score == 25 assert players.second().player == player_2 assert players.second().name == player_2.name assert players.second().score == 12 assert str(players) == LEADERBOARD_7 assert players.first(1).tie assert not players.first(2).tie assert players.first(2).player == player_1 assert players.first(2).name == player_1.name players = Players(["Berkelly", "Cez", "Tonto"]) players.Berkelly.draw_card(Card("Clubs", "Ace")) players.Tonto.draw_card(Card("Diamonds", "5")) players.Cez.draw_card(Card("Spades", "10")) assert str(players) == LEADERBOARD_8
def test_basic_player_2(): players = Players([]) assert len(players) == 0 assert not players.first().name assert not players.first(round_number=1).name with pytest.raises(StopIteration): next(players) assert str(players) == "" with pytest.raises(InvalidPlayerError): players = Players(["first"]) players = Players(["Berkelly"]) player = Player("Berkelly") assert players.Berkelly == player assert len(players) == 1 assert next(players) == player assert players[0] == player assert not players.first().tie assert players.first().player == player assert not players.second().name assert str(players) == LEADERBOARD_1 players.reset() assert players.Berkelly == player assert len(players) == 1 assert next(players) == player assert players[0] == player assert not players.first().tie assert players.first().player == player assert not players.second().name assert str(players) == LEADERBOARD_1 players.Berkelly.draw_card(Card("Clubs", "9")) player.draw_card(Card("Clubs", "9")) assert not players.first().tie assert players.first().player == player assert not players.second().name assert str(players) == LEADERBOARD_2 players.Berkelly.draw_card(Card("Hearts", "Jack")) player.draw_card(Card("Hearts", "Jack")) assert not players.first().tie assert players.first().player == player assert not players.second().name assert str(players) == LEADERBOARD_3
def test__basic_game_3(capsys, monkeypatch): monkeypatch.setattr("builtins.input", lambda x: "") rand = Random() rand.seed(1) deck = Deck(empty=True, random_instance=rand) deck.add_card(Card("Clubs", "9")) deck.shuffle() game = Game(PLAYERS_1, deck=deck, message=MESSAGE, max_rounds=2) game.play() captured = capsys.readouterr() assert captured.out == GAME_3_RESULTS
def test_basic_empty_deck(): deck = Deck(empty=True) assert len(deck) == 0 assert deck == [] assert deck.top_card is None card_1 = Card("Clubs", "9") deck.add_card(card_1) assert len(deck) == 1 assert deck == [card_1] assert deck.top_card == card_1 card_2 = Card("Spades", "King") deck.add_card(card_2) assert len(deck) == 2 assert deck == [card_1, card_2] assert deck.top_card == card_2 deck.new_deck() assert len(deck) == 52 assert deck == UNSHUFFLED_DECK assert deck.top_card == UNSHUFFLED_DECK[-1]
def test_basic_card_compare(): c_1 = Card("Spades", "9") c_2 = Card("Clubs", "Jack") assert c_1 < c_2 assert c_2 > c_1 c_1 = Card("Spades", "9") c_2 = Card("Spades", "9") assert c_1 == c_2 c_1 = Card("Spades", "9") c_2 = Card("Clubs", "9") assert c_1 != c_2 c_1 = Card("Spades", "9") c_2 = Card("Spades", "Jack") assert c_1 != c_2 c_1 = Card("Spades", "9") assert c_1 != "9 of Spades"
def test_basic_game_5(capsys, monkeypatch): monkeypatch.setattr("builtins.input", lambda x: "") cards = [ Card("Clubs", "6"), Card("Spades", "8"), Card("Diamonds", "3"), Card("Clubs", "9"), Card("Clubs", "Ace"), Card("Spades", "King"), Card("Diamonds", "5"), Card("Diamonds", "3"), Card("Spades", "10"), ] deck = Deck(empty=True) for card in cards: deck.add_card(card) game = Game(PLAYERS_2, deck=deck, message=MESSAGE) game.play() captured = capsys.readouterr() assert captured.out == GAME_5_RESULTS
def _initiate_deck(self) -> None: """Internal method to initialize a Deck to a standard deck of Cards.""" self._deck = [ Card(suit, rank) for suit in Card.SUIT for rank in Card.RANK ] self._current_card = 0
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. from random import Random import pytest from tonto.card import Card from tonto.deck import Deck from tonto.exception import DeckEmptyError, InvalidCardError UNSHUFFLED_DECK = [ Card("Spades", "2"), Card("Spades", "3"), Card("Spades", "4"), Card("Spades", "5"), Card("Spades", "6"), Card("Spades", "7"), Card("Spades", "8"), Card("Spades", "9"), Card("Spades", "10"), Card("Spades", "Jack"), Card("Spades", "Queen"), Card("Spades", "King"), Card("Spades", "Ace"), Card("Diamonds", "2"), Card("Diamonds", "3"), Card("Diamonds", "4"),
def test_basic_player_1(): with pytest.raises(TypeError): player_1 = Player() deck = Deck(empty=True) player_1 = Player("Berkelly") assert player_1.name == "Berkelly" assert player_1.hand == deck assert str(player_1.hand) == str(deck) assert player_1.score() == 0 assert not player_1.score(round_number=1) assert str(player_1) == STRING_1 card_1 = Card("Clubs", "King") deck.add_card(card_1) player_1.draw_card(card_1) assert player_1.hand == deck assert str(player_1.hand) == str(deck) assert player_1.score() == 52 assert player_1.score(round_number=1) == 52 assert str(player_1) == STRING_2 card_2 = Card("Hearts", "8") deck.add_card(card_2) player_1.draw_card(card_2) assert player_1.hand == deck assert str(player_1.hand) == str(deck) assert player_1.score() == 76 assert player_1.score(round_number=1) == 52 assert player_1.score(round_number=2) == 24 assert str(player_1) == STRING_3 assert player_1.hand == deck assert str(player_1.hand) == str(deck) assert player_1.score() == 76 assert player_1.score(round_number=1) == 52 assert player_1.score(round_number=2) == 24 assert str(player_1) == STRING_3 deck = Deck(empty=True) player_1.clear_hand() assert player_1.name == "Berkelly" assert player_1.hand == deck assert str(player_1.hand) == str(deck) assert player_1.score() == 0 assert not player_1.score(round_number=1) assert str(player_1) == STRING_1 player_1.draw_card(card_1) player_1.draw_card(card_2) player_2 = Player("Cez") assert player_1 > player_2 assert player_2 < player_1 card_1 = Card("Diamonds", "8") card_2 = Card("Clubs", "2") player_2.draw_card(card_1) player_2.draw_card(card_2) assert player_1 > player_2 assert player_2 < player_1 player_1 = Player("Cez") player_1.draw_card(card_1) player_1.draw_card(card_2) assert player_1 == player_2 player_1 = Player("Cez") player_1.draw_card(card_2) assert player_1 != player_2
def test_basic_card_string(): card = Card("Spades", "9") assert str(card) == "9 of Spades" card = Card("Clubs", "Jack") assert str(card) == "Jack of Clubs"
def test_basic_card_invalid_attribute(): with pytest.raises(InvalidCardSuitError): card = Card("None", "King") with pytest.raises(InvalidCardRankError): card = Card("Spades", "None")
def test_basic_card_null_create(): with pytest.raises(TypeError): card = Card() with pytest.raises(TypeError): card = Card("Hearts")