Esempio n. 1
0
    def test_performAction(self):
        """
        Tests the performAction method of WildUnoCard.
        """
        card = unocard.WildUnoCard(0)
        gameState = UnoGameState()

        # The perform action should have been a no-op.
        card.performAction(gameState)
        self.assertEqual(0, gameState.nextPlayer)
        self.assertEqual(False, gameState.isReversed)
        self.assertEqual(0, gameState.numExtraCardDraw)
Esempio n. 2
0
    def test_suggestACard(self):
        """
        Tests the suggestACard method of RankThenSuitAiPlayer.
        """
        p = player.RankThenSuitAiPlayer("Test Player")
        c_8ofDiamonds = unocard.UnoCard(1, 8)
        c_7ofHearts = unocard.UnoCard(2, 7)
        c_KofDiamonds = unocard.WildUnoCard(1)
        c_AofDiamonds = unocard.WildDrawFourActionCard(1)
        p.setStartingHand([c_8ofDiamonds, c_7ofHearts])

        # Tests than any card is suggested when there is none in the pile.
        card = p.suggestACard(None, 5)
        self.assertTrue(card != None)
        self.assertEqual(2, len(p.hand))  # Card should not have been removed.

        # This matches two cards, but should favor the matching rank.
        topCard = Card(alt="7D")  # 7 of Diamonds
        card = p.suggestACard(topCard, 5)
        self.assertEqual(c_7ofHearts, card)  # Should be 7 of Hearts
        self.assertEqual(2, len(p.hand))  # Card should not have been removed.

        # This matches three cards, but should favor one non-wild.
        p.setStartingHand(
            [c_KofDiamonds, c_AofDiamonds, c_8ofDiamonds, c_7ofHearts])
        topCard = Card(alt="5D")  # 5 of Diamonds
        card = p.suggestACard(topCard, 5)
        self.assertEqual(c_8ofDiamonds, card)  # Should be 8 of Diamonds
        self.assertEqual(4, len(p.hand))  # Card should not have been removed.

        # This matches only the wild card.
        p.setStartingHand([c_8ofDiamonds, c_KofDiamonds, c_7ofHearts])
        topCard = Card(alt="2C")  # 2 of Clubs
        card = p.suggestACard(topCard, 5)
        self.assertEqual(c_KofDiamonds, card)  # Should be K of Diamonds
        self.assertEqual(3, len(p.hand))  # Card should not have been removed.

        # This matches only the wild draw four card.
        p.setStartingHand([c_8ofDiamonds, c_AofDiamonds, c_7ofHearts])
        topCard = Card(alt="2C")  # 2 of Clubs
        card = p.suggestACard(topCard, 5)
        self.assertEqual(c_AofDiamonds, card)  # Should be A of Diamonds
        self.assertEqual(3, len(p.hand))  # Card should not have been removed.

        # This matches nothing, but some card should be suggested.
        p.setStartingHand([c_8ofDiamonds, c_7ofHearts])
        topCard = Card(alt="2C")  # 2 of Clubs
        card = p.suggestACard(topCard, 5)
        self.assertTrue(card != None)
        self.assertEqual(2, len(p.hand))  # Card should not have been removed.
Esempio n. 3
0
    def test_isPlaceableOnTop(self):
        """
        Test the isPlaceableOnTop method of WildDrawFourActionCard.
        """
        card = unocard.WildUnoCard(0)  # Wild clubs
        gameState = UnoGameState()

        # Is placeable on top of miss-matching suit.
        topCard = Card(alt="KD")
        self.assertTrue(card.isPlaceableOnTop(topCard))

        # Is placeable on top of miss-matching rank.
        topCard = Card(alt="3C")
        self.assertTrue(card.isPlaceableOnTop(topCard))

        # Is placeable on top of matching suit and rank.
        topCard = Card(alt="KC")
        self.assertTrue(card.isPlaceableOnTop(topCard))
Esempio n. 4
0
 def test_init(self):
     """
     Tests the init method of WildUnoCard.
     """
     card = unocard.WildUnoCard(0)
     self.assert_unocard_init(card, 0, 13, "Wild")