def test_poker_hand():
    # Creates a poker table with 5 cards
    card1 = cardlib.NumberedCard(5, cardlib.Suits.Hearts)
    card2 = cardlib.NumberedCard(5, cardlib.Suits.Hearts)
    card3 = cardlib.AceCard(cardlib.Suits.Spades)
    card4 = cardlib.KingCard(cardlib.Suits.Clubs)
    card5 = cardlib.QueenCard(cardlib.Suits.Diamonds)

    poker_table = cardlib.Hand()
    poker_table.cards = [card1, card2, card3, card4, card5]

    # Creates two hands with two cards
    hand1 = cardlib.Hand()
    hand2 = cardlib.Hand()

    hand1.cards = [cardlib.NumberedCard(10, cardlib.Suits.Diamonds), cardlib.JackCard(cardlib.Suits.Hearts)]
    hand2.cards = [cardlib.NumberedCard(5, cardlib.Suits.Clubs), cardlib.NumberedCard(4, cardlib.Suits.Diamonds)]


    # Create two pokerhands using the hands cards and the poker_table cards
    pokerhand1 = hand1.best_poker_hand(poker_table.cards)   # Should return poker hand 'Straight'
    pokerhand2 = hand2.best_poker_hand(poker_table.cards)   # Should return poker hand 'Three of a kind'

    assert pokerhand1.poker_hand.name == 'Straight'
    assert pokerhand2.poker_hand.name == 'Threeofakind'

    # Testing < operand for the pokerhand comparison
    assert pokerhand2 < pokerhand1
예제 #2
0
def test_cards():
    #  Testing so that the card functions give the correct values
    assert cl.NumberedCard(cl.Rank(2), cl.Suit(0)).card[0].value == 2
    assert cl.NumberedCard(cl.Rank(2), cl.Suit(0)).card[0].name == "Two"
    assert cl.NumberedCard(cl.Rank(2), cl.Suit(0)).card[1].value == 0
    assert cl.NumberedCard(cl.Rank(2), cl.Suit(0)).card[1].name == "Clubs"
    assert cl.JackCard(cl.Suit(0)).give_value().value == 11
    assert cl.QueenCard(cl.Suit(0)).give_value().value == 12
    assert cl.KingCard(cl.Suit(0)).give_value().value == 13
    assert cl.AceCard(cl.Suit(0)).give_value().value == 14
예제 #3
0
def test_queencard_creates_playingcard():
    '''
        Test to verify that the queencard method creates a
        Playing card with value 12
        '''
    QUEEN_VALUE = 12
    for suit in cardlib.Suit:
        card = cardlib.QueenCard(suit)
        assert type(card.get_value()) == int
        assert card.get_value() == QUEEN_VALUE
예제 #4
0
def test_drop_cards_drop_correct_card_from_hand():
    hand = cardlib.Hand()
    hand.add_new_card(cardlib.QueenCard(cardlib.Suit.DIAMONDS))
    hand.add_new_card(cardlib.KingCard(cardlib.Suit.SPADES))
    hand.add_new_card(cardlib.JackCard(cardlib.Suit.HEARTS))
    dropped_cards = [hand.cards[0], hand.cards[1]]  # copy topcard of deck
    hand.drop_cards([0, 1])

    assert (dropped_cards[0] and dropped_cards[1]) not in hand.cards
    assert hand.cards[0] == cardlib.JackCard(cardlib.Suit.HEARTS)
예제 #5
0
def test_cards():
    card_1 = num_card(2, cardlib.Suit.clubs)
    assert card_1.get_value() == 2
    assert card_1.get_suit() == 0

    card_2 = cardlib.JackCard(cardlib.Suit.diamonds)
    assert card_2.get_value() == 11
    assert card_2.get_suit() == 1

    card_3 = cardlib.QueenCard(cardlib.Suit.spades)
    assert card_3.get_value() == 12
    assert card_3.get_suit() == 2

    card_4 = cardlib.KingCard(cardlib.Suit.diamonds)
    assert card_4.get_value() == 13
    assert card_4.get_suit() == 1

    card_5 = cardlib.AceCard(cardlib.Suit.diamonds)
    assert card_5.get_value() == 14
    assert card_5.get_suit() == 1
예제 #6
0
def test_less_and_greater_than_of_playingcards():
    '''
        Test the __lt__ and __gt__ methods between two playing cards
        (less than & greater than)
        '''
    suit = cardlib.Suit.SPADES

    ace = cardlib.AceCard(suit)
    king = cardlib.KingCard(suit)
    queen = cardlib.QueenCard(suit)
    jack = cardlib.JackCard(suit)

    for value in range(2, 11):
        numberedcard = cardlib.NumberedCard(value, suit)
        assert ace > numberedcard
        assert king > numberedcard
        assert queen > numberedcard
        assert jack > numberedcard

        assert numberedcard < ace
        assert numberedcard < king
        assert numberedcard < queen
        assert numberedcard < jack

    assert ace > king
    assert ace > queen
    assert ace > jack

    assert king < ace
    assert king > queen
    assert king > jack

    assert queen < ace
    assert queen < king
    assert queen > jack

    assert jack < ace
    assert jack < king
    assert jack < queen