def test_deck_constructor(self):
        deck = a2.Deck()
        self.assertEqual(deck.get_cards(), [],
                         "A Deck with no starting cards should be empty")

        deck = a2.Deck(starting_cards=None)
        self.assertEqual(deck.get_cards(), [],
                         "A Deck with no starting cards should be empty")

        deck1 = a2.Deck()
        deck2 = a2.Deck()
        card = a2.Card(1, a2_support.CardColour.blue)
        deck1.add_card(card)
        self.assertEqual(
            deck2.get_cards(), [],
            "List should not be used for default value for starting_cards (should be None)"
        )
Beispiel #2
0
 def test_deck_cards_amount(self):
     cards = [
         a2.Card(1, a2_support.CardColour.blue),
         a2.Card(3, a2_support.CardColour.red),
         a2.Card(2, a2_support.CardColour.green)
     ]
     deck = a2.Deck(starting_cards=cards)
     self.assertListEqual(deck.get_cards(), cards,
                          "starting_cards parameter should be used to populate deck")
     self.assertEqual(deck.get_amount(), 3)
    def test_deck_top(self):
        cards = [
            a2.Card(1, a2_support.CardColour.blue),
            a2.Card(3, a2_support.CardColour.red),
            a2.Card(2, a2_support.CardColour.green),
            a2.Card(4, a2_support.CardColour.yellow),
            a2.Card(6, a2_support.CardColour.yellow),
            a2.Card(10, a2_support.CardColour.blue)
        ]
        deck = a2.Deck(starting_cards=cards.copy())

        self.assertEqual(cards[-1], deck.top(), "Deck.top returns wrong card")
        deck.pick()
Beispiel #4
0
    def test_deck_shuffle(self):
        cards = [
            a2.Card(1, a2_support.CardColour.blue),
            a2.Card(3, a2_support.CardColour.red),
            a2.Card(2, a2_support.CardColour.green)
        ]
        deck = a2.Deck(starting_cards=cards.copy())

        found_different = False
        for _ in range(30):
            deck.shuffle()
            if deck.get_cards() != cards:
                found_different = True
                break

        self.assertIs(found_different, True, "Deck.shuffle should randomise order")
Beispiel #5
0
    def test_deck_add_cards(self):
        cards1 = [
            a2.Card(1, a2_support.CardColour.blue),
            a2.Card(3, a2_support.CardColour.red)
        ]
        deck = a2.Deck()
        deck.add_cards(cards1)

        self.assertListEqual(deck.get_cards(), cards1, "Deck's cards are invalid after adding a list of cards")

        cards2 = [
            a2.Card(4, a2_support.CardColour.yellow),
            a2.Card(6, a2_support.CardColour.yellow)
        ]
        deck.add_cards(cards2)

        self.assertListEqual(deck.get_cards(), cards1 + cards2, "Deck's cards are invalid after adding a second list of cards")
Beispiel #6
0
    def test_player_pick_card(self):
        deck = a2.Deck()
        deck.add_cards([
            a2.Card(1, a2_support.CardColour.blue),
            a2.Card(3, a2_support.CardColour.red),
            a2.Card(2, a2_support.CardColour.green),
            a2.Card(4, a2_support.CardColour.yellow),
            a2.Card(6, a2_support.CardColour.yellow),
            a2.Card(10, a2_support.CardColour.blue)
        ])

        with self.assertRaises(NotImplementedError):
            a2.Player("Test Player").pick_card(deck)

        player = a2.HumanPlayer("Test Player")
        player.get_deck().add_cards(deck.get_cards().copy())

        self.assertIsNone(player.pick_card(deck), 'HumanPlayer.pick_card should return None')
Beispiel #7
0
    def test_deck_add_card(self):
        cards = [
            a2.Card(1, a2_support.CardColour.blue),
            a2.Card(3, a2_support.CardColour.red),
            a2.Card(2, a2_support.CardColour.green),
            a2.Card(4, a2_support.CardColour.yellow),
            a2.Card(6, a2_support.CardColour.yellow),
            a2.Card(10, a2_support.CardColour.blue)
        ]
        deck = a2.Deck()
        deck.add_card(cards[0])
        deck.add_card(cards[1])
        deck.add_card(cards[2])
        deck.add_card(cards[3])
        deck.add_card(cards[4])
        deck.add_card(cards[5])

        self.assertListEqual(deck.get_cards(), cards, "Deck.get_cards returns incorrectly")
    def test_deck_pick(self):
        cards = [
            a2.Card(1, a2_support.CardColour.blue),
            a2.Card(3, a2_support.CardColour.red),
            a2.Card(2, a2_support.CardColour.green),
            a2.Card(4, a2_support.CardColour.yellow),
            a2.Card(6, a2_support.CardColour.yellow),
            a2.Card(10, a2_support.CardColour.blue)
        ]
        deck = a2.Deck(starting_cards=cards)

        self.assertListEqual(cards[-1:], deck.pick())
        expected_cards = cards[-3:]
        actual_cards = deck.pick(amount=3)
        self.assertEqual(len(expected_cards), len(actual_cards),
                         "Deck.pick returns incorrect amount of cards")
        for card in actual_cards:
            self.assertIn(card, expected_cards,
                          "Deck.pick returns unexpected card")