예제 #1
0
    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)])
예제 #2
0
    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)
예제 #3
0
 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()
예제 #4
0
 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], [], [], [], [], [], [], [], [
     ], [], [], []], [[], [], [], [], [], [], [], [], [], [], [], []])
예제 #5
0
 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) )
예제 #6
0
 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)
예제 #7
0
 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)
예제 #8
0
 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')
예제 #9
0
 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)])
예제 #10
0
 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)
예제 #11
0
 def setUp(self):
     self.card = Card('red', 12)
예제 #12
0
 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)
예제 #13
0
	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