def test_can_play_under_limit(self): """ Branch coverage """ dealer = Dealer() card1 = Card('Hearts', ('2', 2)) card2 = Card('Hearts', ('3', 3)) dealer.add_card(card1) dealer.add_card(card2) self.assertTrue(dealer.can_play())
def test_can_play_over_limit(self): """ Branch coverage """ dealer = Dealer() card1 = Card('Hearts', ('J', 10)) card2 = Card('Hearts', ('3', 3)) card3 = Card('Hearts', ('K', 10)) dealer.add_card(card1) dealer.add_card(card2) dealer.add_card(card3) self.assertFalse(dealer.can_play())
class Table: def __init__(self, name='None'): self.player = BlackJackPlayer(name) self.dealer = Dealer('Oberyn') self.deck = Deck() self.deck.create_deck() self.deck.shuffle() self.hidden_card = None self.turns = [] def play(self): """ Gets the dealers hidden card and gives each player a card before starting the while loops to let the blackjackplayer take turns and the dealer to take turns. Stops looping if the player stands and if game ends. :return: None """ self.hidden_card = self.deck.remove_card() self.give_card(self.dealer, self.deck.remove_card()) self.give_card(self.player, self.deck.remove_card()) while self.player.can_play() and self.player.get_wants_to_play() and not self.game_end(): decision = input("Enter 'h' for hit or 's' for stand: ") if decision == 'h': self.give_card(self.player, self.deck.remove_card()) elif decision == 's': self.player.stop_playing() else: print("Invalid input") if not self.game_end(): self.give_card(self.dealer, self.hidden_card) while self.dealer.can_play() and not self.game_end(): self.give_card(self.dealer, self.deck.remove_card()) self.show_winner() def give_card(self, p: Player, c: Card): """ Gives a card to the player, either dealer or blackjackplayer, and adds this to the table turns. :param p: Player, Dealer, or BlackJackPlayer :param c: Card :return: None """ self.turns.append((p, c)) p.add_card(c) print(p.get_name() + ' takes card ' + c.get_card_value() + ' for ' + str(c.get_point()[1]) + '. Total = ' + str(p.get_player_points())) def game_end(self): """ Returns true if either dealer or blackjackplayer is over or equal to 21. :return: bool """ if self.player.get_player_points() >= 21: return True elif self.dealer.get_player_points() >= 21: return True return False def show_winner(self): """ Prints which player has lost or won to the console, with their points. :return: None """ if self.player.get_player_points() > 21: print(self.player.get_name() + ' has lost. ' + str(self.player.get_player_points()) + ' > 21') elif self.dealer.get_player_points() > 21: print(self.dealer.get_name() + ' has lost. ' + str(self.dealer.get_player_points()) + ' > 21') else: winner = self.player if self.player.get_player_points() > self.dealer.get_player_points() else self.dealer print(winner.get_name() + ' has won with ' + str(winner.get_player_points()) + ' points!')
def test_can_play_on_empty(self): """ Function coverage """ dealer = Dealer() self.assertTrue(dealer.can_play())