def test_valid_command(self): '''This test ensures that a valid command is correctly checked''' deck = Deck(1) player_1 = Player(0) player_2 = Player(1) players = [player_1] layouts = Layouts(1) deck.shuffle() deck.deal(players) seven_suits = [c.suit for c in player_1.hand if c.rank == 7] test_suit = seven_suits[0] card_cmd_str = "7" + test_suit layout_dict = { "C": "L0", "D": "L1", "H": "L2", "S": "L3" } layout_cmd_str = layout_dict[test_suit] cmd_str = card_cmd_str + layout_cmd_str cmd = Command(cmd_str, layouts) self.assertTrue(cmd.is_valid(player_1.hand))
def test_draw_cards(self): mock_game = Mock() deck = Deck(mock_game) card1 = Card('Sample Card', Suit.FOX) card2 = Card('Sample Card 2', Suit.FOX) deck.cards = [card1, card2] self.assertEqual(deck.draw_cards(2), [card2, card1])
def test_draw_card_empty_deck(self): mock_game = Mock() deck = Deck(mock_game) card = Card('Sample Card', Suit.FOX) deck.cards = [] deck.discard_pile = [card] self.assertEqual(deck.draw_card(), card)
def test_draw_cards_partially_empty_deck_empty_discard_pile(self): mock_game = Mock() deck = Deck(mock_game) card1 = Card('Sample Card', Suit.FOX) card2 = Card('Sample Card 2', Suit.FOX) deck.cards = [card1, card2] deck.discard_pile = [] self.assertEqual(deck.draw_cards(3), [card2, card1])
def test_draw_cards_empty_deck(self, mock_random): mock_game = Mock() deck = Deck(mock_game) card1 = Card('Sample Card', Suit.FOX) card2 = Card('Sample Card 2', Suit.FOX) deck.cards = [] deck.discard_pile = [card1, card2] self.assertEqual(deck.draw_cards(2), [card2, card1])
def test_hand_storing(): deck = Deck() hand = Hand() for i in range(4): hand.receive(deck.deal()) sorted_hand = hand.sorted() for i in range(1, len(hand)): assert sorted_hand[i] >= sorted_hand[i - 1]
def test_hand_picking(): deck = Deck() original_size = len(deck) hand = Hand() card = deck.deal() hand.receive(card) assert deck.dealed[0] == hand[0] assert len(hand) == 1 assert len(deck) == original_size - 1
def test_deck_burned_dealed_are_correct_size(): deck = Deck() original_size = len(deck) card1 = deck.deal() card2 = deck.deal() deck.replace(card1) deck.replace(card2) assert len(deck) == 48 assert len(deck) + deck.burned_size() + deck.dealed_size() == original_size
def test_reshuffle_discard_pile_into_deck(self): mock_game = Mock() deck = Deck(mock_game) card = Card('Sample Card', Suit.FOX) deck.cards = [] deck.discard_pile = [card] deck.reshuffle_discard_pile_into_deck() self.assertEqual(deck.cards, [card]) self.assertEqual(deck.discard_pile, [])
def test_replace_card_remain_at_same_place(): deck = Deck() card1 = deck.deal() card2 = deck.deal() card3 = deck.deal() new_card = deck.replace(card2) assert new_card != card2 assert card1 == deck.dealed[0] assert new_card == deck.dealed[1] assert card3 == deck.dealed[2]
def test_deck_has_unique_cards(): deck = Deck() i = 0 while i < len(deck): j = 0 while j < len(deck): if i != j: assert deck[i] != deck[j] j += 1 i += 1
def test_round_end(self): '''This test check that a winner is found''' test_input = { 'decks': 1, 'rounds': 2, 'players': 1, 'human players': 1, 'comp_levels': {} } state = GameState(test_input) state.start_new_round() player_obj = state.players.get_player_by_id(state.current_player) player_obj.hand = Deck(1).cards state.print_round_state_to_cli() test_cmd_strs_1 = [ str(i) + s + "L" + str(suit_layout_dict[s]) for s in suit_layout_dict.keys() for i in range(7, 15) ] test_cmd_strs_2 = [ str(i) + s + "L" + str(suit_layout_dict[s]) for s in suit_layout_dict.keys() for i in range(2, 7) ] test_cmd_strs_2.reverse() test_cmd_strs = test_cmd_strs_1 + test_cmd_strs_2 test_commands = [Command(c, state.layouts) for c in test_cmd_strs] player_obj = state.players.get_player_by_id(state.current_player) while not state.check_round_winner(): for test_command in test_commands: state.current_command = test_command state.update() state.print_round_state_to_cli() state.start_new_round() self.assertEqual(state.round_number, 2) self.assertEqual(state.dealer_id, 0) while not state.check_round_winner(): for test_command in test_commands: state.current_command = test_command state.update() state.print_round_state_to_cli() print("Total rounds: ", state.total_rounds) print("round_number: ", state.round_number) self.assertTrue(state.check_game_end())
def test_replaced_card(): deck = Deck() original_size = len(deck) card = deck.deal() new_card = deck.replace(card) assert len(deck) == original_size - 2 assert len(deck.dealed) == 1 assert len(deck.burned) == 1 assert card != new_card assert deck.dealed[0] == new_card assert deck.burned[0] == card
def test_discard_card(): deck = Deck() original_size = len(deck) card1 = deck.deal() card2 = deck.deal() card3 = deck.deal() deck.discard(card2) assert len(deck) == original_size - 3 assert len(deck.burned) == 1 assert len(deck.dealed) == 2 assert deck.dealed[0] == card1 assert deck.dealed[1] == card3
def __init__(self, players): self.deck = Deck() self.numPlayers = players self.cards = [] for i in range(players): self.cards.append(self.deck.deal(1)[0]) for i in range(players): self.cards[i].append(self.deck.deal(1)[0]) print(self.cards)
def __init__(self, num_agents, min_buy_in, max_buy_in, buy_ins): """ Used to set environment variables """ self.deck = Deck() self.deck.shuffle() self.player_count = num_agents self.players = [] self.minBuyIn = min_buy_in self.maxBuyIn = max_buy_in for i in range(num_agents): players.append(TexasPlayer(buy_ins[i], i + 1))
def test_player(self): ''' Ensures that both players have 26 cards in their hand after dealing 1 deck. ''' deck = Deck(1) player_1 = Player(0) player_2 = Player(1) players = [player_1, player_2] deck.shuffle() deck.deal(players) self.assertEqual(len(player_1.hand), 26)
def test_doubledeck(self): ''' Ensures that both players have 52 cards in their hand after dealing 2 decks. ''' deck = Deck(2) player_1 = Player(0) player_2 = Player(1) players = [player_1, player_2] deck.shuffle() deck.deal(players) self.assertEqual(len(player_1.hand), 52)
def test_card_ten(self): '''This test check that a card can be played with a double digit rank''' test_input = { 'decks': 1, 'rounds': 1, 'players': 1, 'human players': 1, 'comp_levels': {} } state = GameState(test_input) state.start_new_round() player_obj = state.players.get_player_by_id(state.current_player) player_obj.hand = [c for c in Deck(1)] state.print_round_state_to_cli() test_commands = [] test_commands.append(Command("7CL0", state.layouts)) test_commands.append(Command("8CL0", state.layouts)) test_commands.append(Command("9CL0", state.layouts)) test_commands.append(Command("10CL0", state.layouts)) test_commands.append(Command("JCL0", state.layouts)) test_commands.append(Command("QCL0", state.layouts)) test_commands.append(Command("KCL0", state.layouts)) test_commands.append(Command("ACL0", state.layouts)) test_commands.append(Command("6CL0", state.layouts)) test_commands.append(Command("5CL0", state.layouts)) test_commands.append(Command("4CL0", state.layouts)) test_commands.append(Command("3CL0", state.layouts)) test_commands.append(Command("2CL0", state.layouts)) for test_command in test_commands: state.current_command = test_command state.update() state.print_round_state_to_cli() extra_command = Command("7HL2", state.layouts) state.current_command = extra_command state.update() state.print_round_state_to_cli()
def start_new_round(self): '''Updates class variable to start a new round.''' # Notify user of new round print("\nRound number '{}' starting ...".format(self.round_number)) # Clear players cards self.players.clear_hands() # Create deck self.game_deck = Deck(self.deck_num) # Shuffle deck self.game_deck.shuffle() # Deal deck to players self.game_deck.deal(self.players) # Create layouts self.layouts = Layouts(self.deck_num)
def test_hand_cannot_be_greater_than_5(): deck = Deck() hand = Hand() with pytest.raises(HandFullException): for i in range(10): hand.receive(deck.deal())
def test_draw_cards_empty_deck_and_discard_pile(self): mock_game = Mock() deck = Deck(mock_game) deck.cards = [] deck.discard_pile = [] self.assertEqual(deck.draw_cards(2), [])
def test_deal_card(): deck = Deck() original_size = len(deck) card = deck.deal() assert len(deck) == original_size - 1 assert deck.dealed[0] == card
def test_deck_has_52_cards(): deck = Deck() assert len(deck) == 52
def test_shuffed_deck_is_not_ordered(): deck = Deck() deck.shuffle() assert not deck.is_ordered()
def test_new_deck_is_ordered(): deck = Deck() assert deck.is_ordered()
def reset(self): self.hand = Hand() self.deck = Deck() self.deck.shuffle() self.bet = 0
def test_draw_card_empty_deck_and_discard_pile(self): mock_game = Mock() deck = Deck(mock_game) deck.cards = [] deck.discard_pile = [] self.assertIsNone(deck.draw_card())