Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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]
Exemplo n.º 6
0
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"
Exemplo n.º 7
0
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
Exemplo n.º 8
0
 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
Exemplo n.º 9
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"),
Exemplo n.º 10
0
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
Exemplo n.º 11
0
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"
Exemplo n.º 12
0
def test_basic_card_invalid_attribute():
    with pytest.raises(InvalidCardSuitError):
        card = Card("None", "King")

    with pytest.raises(InvalidCardRankError):
        card = Card("Spades", "None")
Exemplo n.º 13
0
def test_basic_card_null_create():
    with pytest.raises(TypeError):
        card = Card()

    with pytest.raises(TypeError):
        card = Card("Hearts")