def setUp(self): self.deck = Deck() self.cards = [Card('red', 1), Card('green', 3)] self.smDeck = Deck(self.cards) self.emptyDeck = Deck([]) # new_deck contains cards with all color and number in order self.new_deck = Deck([Card(color, number) for color in \ CONSTANTS.COLORS for number in \ range(1, CONSTANTS.NUM_CARDS_EACH_COLOR_IN_DECK + 1)])
def test_compare_cards_when_cards_not_equal(self): player = Player(0) cards1 = [[Card(0, 'A')], []] cards2 = [[], [Card(1, 'K')]] mock = Mock(return_value=0) player._check_count = mock player._check_sequence = mock self.assertEqual(player._compare_cards(cards1, cards2), 1) card_param1 = [['A'], []] card_param2 = [[], ['K']] calls = [call(card_param1, card_param2, 3), call( card_param1, card_param2), call(card_param1, card_param2, 2)] mock.assert_has_calls(calls)
def test_compare_cards_when_equal_cards(self): player = Player(0) cards = [[Card(0, 'A')]] player._check_count = MagicMock() player._check_sequence = MagicMock() self.assertEqual(player._compare_cards(cards, cards), 0) player._check_count.assert_not_called() player._check_sequence.assert_not_called()
def test_has_better_cards(self): player1 = Player(0) player2 = Player(0) card = Card(0, 'A') player1.add_card(card) player1._compare_cards = MagicMock() player1.has_better_cards(player2) player1._compare_cards.assert_called_with([[card], [], [], [], [], [], [], [], [ ], [], [], []], [[], [], [], [], [], [], [], [], [], [], [], []])
def testsort(self): for i in range(52): self.deck.get_card() deck2 = deepcopy(self.deck) self.deck.add_card(Card(suit=0, rank=2)) self.deck.add_card(Card(suit=2, rank=5)) self.deck.add_card(Card(suit=3, rank=8)) self.deck.add_card(Card(suit=1, rank=6)) print(self.deck) print('sort array after sorting') self.deck.sort() print(self.deck) deck2.add_card(Card(suit=0, rank=2)) deck2.add_card(Card(suit=1, rank=6)) deck2.add_card(Card(suit=2, rank=5)) deck2.add_card(Card(suit=3, rank=8)) self.assertTrue(str(self.deck) == str(deck2) )
def test_reset_card(self): player = Player(0) init_cards = player.get_cards() player.add_card(Card(0, 'A')) player.reset_card() self.assertEqual(player.get_cards(), init_cards)
def test_add_card(self): player = Player(0) init_count = len(player.get_cards()[0]) player.add_card(Card(0, 'A')) self.assertEqual(len(player.get_cards()[0]), init_count + 1)
def test_init(self): """Test Card initial instance variables. """ card = Card(0, 'A') self.assertEqual(card.get_id(), 0) self.assertEqual(card.get_text(), 'A')
def setUp(self): self.game = Game() self.new_deck = Deck([Card(color, number) for color in \ CONSTANTS.COLORS for number in \ range(1, CONSTANTS.NUM_CARDS_EACH_COLOR_IN_DECK + 1)])
def setUp(self): self.player = Player() self.cards = [Card('red', 1), Card('green', 3)] self.deck = Deck(self.cards) self.emptyDeck = Deck([]) self.player_with_cards = Player(self.cards)
def setUp(self): self.card = Card('red', 12)
def testGetWininingValue(self): self.player.add_card(Card(suit=0, rank=2)) self.player.add_card(Card(suit=2, rank=5)) self.player.add_card(Card(suit=3, rank=8)) self.player.add_card(Card(suit=2, rank=6)) self.assertTrue(self.player.get_winining_value() ==38)
def playTrick(self, start): shift = 0 if self.trickNum == 0: startPlayer = self.players[start] addCard = startPlayer.play(option="play", c='2c') startPlayer.removeCard(addCard) self.currentTrick.addCard(addCard, start) shift = 1 # alert game that first player has already played # have each player take their turn for i in range(start + shift, start + len(self.players)): self.printCurrentTrick() curPlayerIndex = i % len(self.players) self.printPlayer(curPlayerIndex) curPlayer = self.players[curPlayerIndex] addCard = None while addCard is None: # wait until a valid card is passed addCard = curPlayer.play(suit=self.currentTrick.suit.iden, auto=auto) # change auto to False to play manually # the rules for what cards can be played # card set to None if it is found to be invalid if addCard is not None: # if it is not the first trick and no cards have been played, # set the first card played as the trick suit if it is not a heart # or if hearts have been broken if self.trickNum != 0 and self.currentTrick.cardsInTrick == 0: if addCard.suit == Suit(HEARTS) and not self.heartsBroken: # if player only has hearts but hearts have not been broken, # player can play hearts if not curPlayer.hasOnlyHearts(): print(curPlayer.hasOnlyHearts()) print(curPlayer.hand.__str__()) print("Hearts have not been broken.") addCard = None else: self.currentTrick.setTrickSuit(addCard) else: self.currentTrick.setTrickSuit(addCard) # player tries to play off suit but has trick suit #if addCard is not None and addCard.suit != self.currentTrick.suit: if addCard is not None: #if curPlayer.hasSuit(self.currentTrick.suit): # print("Must play the suit of the current trick.") # addCard = None #elif addCard.suit == Suit(hearts): if addCard.suit == Suit(HEARTS): self.heartsBroken = True if self.trickNum == 0: if addCard is not None: if addCard.suit == Suit(HEARTS): print("Hearts cannot be broken on the first hand.") self.heartsBroken = False addCard = None elif addCard.suit == Suit(SPADES) and addCard.rank == Rank(QUEEN): print("The queen of spades cannot be played on the first hand.") addCard = None if addCard is not None and self.currentTrick.suit == Suit(UNDEFINED): if addCard.suit == Suit(HEARTS) and not self.heartsBroken: print("Hearts not yet broken.") addCard = None if addCard is not None: if addCard == Card(Rank(QUEEN), Suit(SPADES)): self.heartsBroken = True curPlayer.removeCard(addCard) self.currentTrick.addCard(addCard, curPlayerIndex) self.evaluateTrick() self.trickNum += 1