예제 #1
0
    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))
예제 #2
0
 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])
예제 #3
0
 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)
예제 #4
0
 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])
예제 #5
0
 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])
예제 #6
0
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]
예제 #7
0
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
예제 #8
0
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
예제 #9
0
 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, [])
예제 #10
0
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]
예제 #11
0
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
예제 #12
0
    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())
예제 #13
0
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
예제 #14
0
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
예제 #15
0
	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)
예제 #16
0
파일: texas.py 프로젝트: vrishank97/CardRL
    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))
예제 #17
0
    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)
예제 #18
0
    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)
예제 #19
0
    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()
예제 #20
0
    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)
예제 #21
0
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())
예제 #22
0
 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), [])
예제 #23
0
def test_deal_card():
    deck = Deck()
    original_size = len(deck)
    card = deck.deal()
    assert len(deck) == original_size - 1
    assert deck.dealed[0] == card
예제 #24
0
def test_deck_has_52_cards():
    deck = Deck()
    assert len(deck) == 52
예제 #25
0
def test_shuffed_deck_is_not_ordered():
    deck = Deck()
    deck.shuffle()
    assert not deck.is_ordered()
예제 #26
0
def test_new_deck_is_ordered():
    deck = Deck()
    assert deck.is_ordered()
예제 #27
0
 def reset(self):
     self.hand = Hand()
     self.deck = Deck()
     self.deck.shuffle()
     self.bet = 0
예제 #28
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())