def test_start_new_game_players_and_deck_cards(self): controller = GameController() controller.start_new_game() self.assertEqual(controller._trump, controller._deck[-1]) all_cards = [] all_cards.extend(controller._deck) all_cards.extend(controller._player1.cards) all_cards.extend(controller._player2.cards) self.assertItemsEqual(all_cards, DurakCard.all())
def start_new_game(self, ignore_winner=True): self._deck = list(DurakCard.all()) random.shuffle(self._deck) self._trump = self._deck[-1] self._logger.reset() if self._logger_enabled: self._logger.log_before_game( self._player1.name, self._player2.name, self._deck, self._trump ) self._player1.cards = CardSet(cards=self._deck[:6], trump=self._trump) self._player2.cards = CardSet( cards=self._deck[6:12], trump=self._trump ) self._deck = self._deck[12:] if not ignore_winner and self._winner is not None: self._to_move = self._winner else: self._to_move = self._get_first_to_move_by_trump() self._winner = None self._discarded = [] self._on_table = Table() self._state = self.States.MOVING self._no_response = False if self._logger_enabled: self._logger.log_before_move( set(self._player1.cards), set(self._player2.cards), self.to_move, self.deck_count, ) return { 'player1_cards': CardSet(self._player1.cards, trump=self._trump), 'player2_cards': CardSet(self._player2.cards, trump=self._trump), 'trump': DurakCard(self._trump), }
def _prepare_data(self): wx_bitmap = ( wx.Image(self._image_path, wx.BITMAP_TYPE_GIF).ConvertToBitmap() ) for card in DurakCard.all(): left_top_x = card.numeric_rank * self._card_width left_top_y = card.numeric_suit * self._card_height self._data[card] = wx_bitmap.GetSubBitmap( (left_top_x, left_top_y, self._card_width, self._card_height) ) hidden_bitmap = ( wx.Image(self._hidden_image_path, wx.BITMAP_TYPE_GIF) .ConvertToBitmap() ) self._data[self.HIDDEN] = hidden_bitmap wx_bitmap.Destroy()
def start_new_game(self, ignore_winner=True): self._deck = list(DurakCard.all()) random.shuffle(self._deck) self._trump = self._deck[-1] self._logger.reset() if self._logger_enabled: self._logger.log_before_game(self._player1.name, self._player2.name, self._deck, self._trump) self._player1.cards = CardSet(cards=self._deck[:6], trump=self._trump) self._player2.cards = CardSet(cards=self._deck[6:12], trump=self._trump) self._deck = self._deck[12:] if not ignore_winner and self._winner is not None: self._to_move = self._winner else: self._to_move = self._get_first_to_move_by_trump() self._winner = None self._discarded = [] self._on_table = Table() self._state = self.States.MOVING self._no_response = False if self._logger_enabled: self._logger.log_before_move( set(self._player1.cards), set(self._player2.cards), self.to_move, self.deck_count, ) return { 'player1_cards': CardSet(self._player1.cards, trump=self._trump), 'player2_cards': CardSet(self._player2.cards, trump=self._trump), 'trump': DurakCard(self._trump), }
def test_prepare_data_prepares_card_images(self): all_cards = DurakCard.all() with patch('durak.gui.images.wx.Image') as wx_image_mock: self.manager._prepare_data() wx_image_mock.assert_any_call( self.cards_image_path, wx.BITMAP_TYPE_GIF ) wx_image_mock.assert_any_call( self.cards_hidden_image_path, wx.BITMAP_TYPE_GIF ) self.assertEqual( (wx_image_mock.return_value .ConvertToBitmap .return_value .GetSubBitmap .call_count), len(all_cards) ) self.assertItemsEqual( self.manager._data.keys(), list(all_cards) + [self.manager.HIDDEN] )
def test_all(self): expected = set() for rank in DurakCard.RANKS: for suit in DurakCard.SUITS: expected.add(DurakCard(rank, suit)) self.assertEqual(DurakCard.all(), expected)
def test_start_new_game_cards_are_shuffled(self): controller = GameController() with patch('durak.controller.random') as random_mock: controller.start_new_game() random_mock.shuffle.assert_called_once_with(list(DurakCard.all()))