示例#1
0
    def test_successful_register_give_more(self):
        controller = GameController()
        controller._state = controller.States.GIVING_MORE
        controller._no_response = True
        controller._to_move = controller._player1
        controller._deck = [DurakCard('JH')]
        controller._trump = DurakCard('6H')
        controller._player1.cards = CardSet(cards=(DurakCard('AC'),
                                                   DurakCard('6S'),
                                                   DurakCard('6H')),
                                            trump=controller._trump)
        controller._player2.cards = CardSet(cards=(DurakCard('7C'),
                                                   DurakCard('7H'),
                                                   DurakCard('7D')),
                                            trump=controller._trump)
        controller._on_table = Table([DurakCard('6D')])

        controller.register_give_more([DurakCard('6S'), DurakCard('6H')])

        self.assertItemsEqual(controller._player1.cards, [DurakCard('AC')])
        self.assertSequenceEqual(controller._on_table, [DurakCard('6D')])
        self.assertItemsEqual(
            controller._on_table.given_more,
            [DurakCard('6S'), DurakCard('6H')])
        self.assertEqual(controller._state, controller.States.DEALING)
示例#2
0
    def test_to_move_property(self):
        controller = GameController()
        controller._to_move = controller._player1
        self.assertEqual(controller.to_move, controller.PLAYER1)

        controller._to_move = controller._player2
        self.assertEqual(controller.to_move, controller.PLAYER2)
示例#3
0
 def test_winner_property(self):
     controller = GameController()
     given_list = [controller._player1, controller._player2, None]
     expected_list = [controller.PLAYER1, controller.PLAYER2, None]
     for given, expected in zip(given_list, expected_list):
         controller._winner = given
         self.assertEqual(controller.winner, expected)
示例#4
0
文件: tests.py 项目: drtyrsa/durak
 def test_winner_property(self):
     controller = GameController()
     given_list = [controller._player1, controller._player2, None]
     expected_list = [controller.PLAYER1, controller.PLAYER2, None]
     for given, expected in zip(given_list, expected_list):
         controller._winner = given
         self.assertEqual(controller.winner, expected)
示例#5
0
文件: tests.py 项目: drtyrsa/durak
    def test_to_move_property(self):
        controller = GameController()
        controller._to_move = controller._player1
        self.assertEqual(controller.to_move, controller.PLAYER1)

        controller._to_move = controller._player2
        self.assertEqual(controller.to_move, controller.PLAYER2)
示例#6
0
    def test_to_respond(self):
        controller = GameController()
        controller._to_move = controller._player1
        self.assertEqual(controller._to_respond, controller._player2)

        controller._to_move = controller._player2
        self.assertEqual(controller._to_respond, controller._player1)
示例#7
0
文件: tests.py 项目: drtyrsa/durak
    def test_to_respond(self):
        controller = GameController()
        controller._to_move = controller._player1
        self.assertEqual(controller._to_respond, controller._player2)

        controller._to_move = controller._player2
        self.assertEqual(controller._to_respond, controller._player1)
示例#8
0
 def test_on_table_property(self):
     controller = GameController()
     controller._on_table = [
         DurakCard('6S'), DurakCard('6H'),
         DurakCard('8S')
     ]
     self.assertEqual(controller.on_table, controller._on_table)
示例#9
0
文件: tests.py 项目: drtyrsa/durak
    def test_is_player1_to_move(self):
        controller = GameController()
        controller._to_move = controller._player1
        self.assertTrue(controller.is_player1_to_move())

        controller._to_move = controller._player2
        self.assertFalse(controller.is_player1_to_move())
示例#10
0
文件: tests.py 项目: drtyrsa/durak
    def test_register_move_goes_to_responding_if_card_is_none(self):
        controller = GameController()
        controller._state = controller.States.MOVING
        controller._on_table = [DurakCard('AC'), DurakCard('AH')]

        controller.register_move(None)

        self.assertEqual(controller._state, controller.States.DEALING)
示例#11
0
    def test_if_winner_is_ignored_first_move_is_selected_by_trump(self):
        controller = GameController()
        controller._winner = controller._player1

        with patch.object(controller,
                          '_get_first_to_move_by_trump') as _get_first_mock:
            controller.start_new_game()
            self.assertEqual(controller._to_move, _get_first_mock.return_value)
示例#12
0
文件: tests.py 项目: drtyrsa/durak
    def test_if_winner_is_ignored_first_move_is_selected_by_trump(self):
        controller = GameController()
        controller._winner = controller._player1

        with patch.object(controller,
                          '_get_first_to_move_by_trump') as _get_first_mock:
            controller.start_new_game()
            self.assertEqual(controller._to_move, _get_first_mock.return_value)
示例#13
0
文件: tests.py 项目: drtyrsa/durak
    def test_if_winner_is_none_first_move_is_selected_by_trump(self):
        controller = GameController()
        self.assertTrue(controller._winner is None)

        with patch.object(controller,
                          '_get_first_to_move_by_trump') as _get_first_mock:
            controller.start_new_game()
            self.assertEqual(controller._to_move, _get_first_mock.return_value)
示例#14
0
文件: tests.py 项目: drtyrsa/durak
 def test_get_enemy_of(self):
     controller = GameController()
     self.assertEqual(
         controller._get_enemy_of(controller._player1), controller._player2
     )
     self.assertEqual(
         controller._get_enemy_of(controller._player2), controller._player1
     )
示例#15
0
文件: tests.py 项目: drtyrsa/durak
    def test_register_give_more_with_no_cards_goes_to_dealing(self):
        controller = GameController()
        controller._state = controller.States.GIVING_MORE
        controller._no_response = True

        controller.register_give_more([])

        self.assertEqual(controller.state, controller.States.DEALING)
示例#16
0
    def test_if_winner_is_none_first_move_is_selected_by_trump(self):
        controller = GameController()
        self.assertTrue(controller._winner is None)

        with patch.object(controller,
                          '_get_first_to_move_by_trump') as _get_first_mock:
            controller.start_new_game()
            self.assertEqual(controller._to_move, _get_first_mock.return_value)
示例#17
0
    def test_if_winner_and_not_ignored_it_selects_first_move(self):
        controller = GameController()
        controller._winner = controller._player1

        with patch.object(controller,
                          '_get_first_to_move_by_trump') as _get_first_mock:
            controller.start_new_game(ignore_winner=False)
            self.assertEqual(controller._to_move, controller._player1)
            self.assertFalse(_get_first_mock.called)
示例#18
0
文件: tests.py 项目: drtyrsa/durak
    def test_if_winner_and_not_ignored_it_selects_first_move(self):
        controller = GameController()
        controller._winner = controller._player1

        with patch.object(controller,
                          '_get_first_to_move_by_trump') as _get_first_mock:
            controller.start_new_game(ignore_winner=False)
            self.assertEqual(controller._to_move, controller._player1)
            self.assertFalse(_get_first_mock.called)
示例#19
0
文件: tests.py 项目: drtyrsa/durak
 def test_start_new_game_return_value_and_state(self):
     controller = GameController()
     result = controller.start_new_game()
     self.assertDictEqual(result, {
         'player1_cards': set(controller._player1.cards),
         'player2_cards': set(controller._player2.cards),
         'trump': controller._trump,
     })
     self.assertEqual(controller.state, controller.States.MOVING)
示例#20
0
 def test_state(self):
     controller = GameController()
     states = {
         controller.States.MOVING, controller.States.RESPONDING,
         controller.States.GIVING_MORE, controller.States.DEALING
     }
     for state in states:
         controller._state = state
         self.assertEqual(controller.state, state)
示例#21
0
    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())
示例#22
0
 def test_start_new_game_return_value_and_state(self):
     controller = GameController()
     result = controller.start_new_game()
     self.assertDictEqual(
         result, {
             'player1_cards': set(controller._player1.cards),
             'player2_cards': set(controller._player2.cards),
             'trump': controller._trump,
         })
     self.assertEqual(controller.state, controller.States.MOVING)
示例#23
0
文件: tests.py 项目: drtyrsa/durak
    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())
示例#24
0
    def test_register_give_more_is_error_if_player_can_not_give_these_cards(
            self):
        controller = GameController()
        controller._state = controller.States.GIVING_MORE
        controller._no_response = True
        controller._to_move = controller._player1
        controller._trump = DurakCard('6H')
        controller._player1.cards = CardSet(cards=(DurakCard('AC'),
                                                   DurakCard('AH'),
                                                   DurakCard('6H')),
                                            trump=controller._trump)
        controller._player2.cards = CardSet(cards=(
            DurakCard('7C'),
            DurakCard('7H'),
            DurakCard('7D'),
            DurakCard('7S'),
        ),
                                            trump=controller._trump)
        controller._on_table = [DurakCard('6D')]

        with self.assertRaises(exes.InvalidCard):
            controller.register_give_more(
                [DurakCard('AC'),
                 DurakCard('AH'),
                 DurakCard('6H')])
示例#25
0
文件: tests.py 项目: drtyrsa/durak
    def test_successful_register_give_more(self):
        controller = GameController()
        controller._state = controller.States.GIVING_MORE
        controller._no_response = True
        controller._to_move = controller._player1
        controller._deck = [DurakCard('JH')]
        controller._trump = DurakCard('6H')
        controller._player1.cards = CardSet(
            cards=(DurakCard('AC'), DurakCard('6S'), DurakCard('6H')),
            trump=controller._trump
        )
        controller._player2.cards = CardSet(
            cards=(DurakCard('7C'), DurakCard('7H'), DurakCard('7D')),
            trump=controller._trump
        )
        controller._on_table = Table([DurakCard('6D')])

        controller.register_give_more([DurakCard('6S'), DurakCard('6H')])

        self.assertItemsEqual(controller._player1.cards, [DurakCard('AC')])
        self.assertSequenceEqual(controller._on_table, [DurakCard('6D')])
        self.assertItemsEqual(
            controller._on_table.given_more, [DurakCard('6S'), DurakCard('6H')]
        )
        self.assertEqual(controller._state, controller.States.DEALING)
示例#26
0
文件: tests.py 项目: drtyrsa/durak
 def test_state(self):
     controller = GameController()
     states = {
         controller.States.MOVING,
         controller.States.RESPONDING,
         controller.States.GIVING_MORE,
         controller.States.DEALING
     }
     for state in states:
         controller._state = state
         self.assertEqual(controller.state, state)
示例#27
0
文件: tests.py 项目: drtyrsa/durak
    def test_deal_cards_and_return_value(self):
        controller = GameController()
        controller._trump = DurakCard('6H')
        controller._state = controller.States.DEALING
        controller._no_response = False
        controller._discarded = []
        controller._to_move = controller._player1
        controller._player1.cards = {DurakCard('6S'), DurakCard('6H')}
        controller._player2.cards = {DurakCard('7S'), DurakCard('7H')}
        controller._deck = [
            DurakCard('AS'),
            DurakCard('AH'),
            DurakCard('KS'),
            DurakCard('KH'),
            DurakCard('QS'),
            DurakCard('QH'),
            DurakCard('JS'),
            DurakCard('JH'),
            DurakCard('TS'),
            DurakCard('TH'),
        ]
        controller._on_table = Table()
        controller._logger_enabled = False

        return_value = controller.deal()

        self.assertItemsEqual(
            controller._player1.cards, [
                DurakCard('6S'),
                DurakCard('6H'),
                DurakCard('AS'),
                DurakCard('AH'),
                DurakCard('KS'),
                DurakCard('KH'),
            ]
        )
        self.assertItemsEqual(
            controller._player2.cards, [
                DurakCard('7S'),
                DurakCard('7H'),
                DurakCard('QS'),
                DurakCard('QH'),
                DurakCard('JS'),
                DurakCard('JH'),
            ]
        )
        self.assertSequenceEqual(
            controller._deck, [DurakCard('TS'), DurakCard('TH')]
        )
        self.assertDictEqual(return_value, {
            'player1_cards': controller._player1.cards - {DurakCard('6S'), DurakCard('6H')},
            'player2_cards': controller._player2.cards - {DurakCard('7S'), DurakCard('7H')},
        })
示例#28
0
 def test_game_data_for_private(self):
     controller = GameController()
     controller._trump = DurakCard('6H')
     controller._deck = [DurakCard('7S'), DurakCard('8D')]
     controller._on_table = [DurakCard('9C'), DurakCard('TH')]
     controller._discarded = [DurakCard('JD'), DurakCard('QS')]
     controller._player1.cards = CardSet(cards=(DurakCard('AC'),
                                                DurakCard('8S'),
                                                DurakCard('KS')),
                                         trump=controller._trump)
     controller._player2.cards = CardSet(cards=(DurakCard('KD'), ),
                                         trump=controller._trump)
     self.assertDictEqual(
         controller._get_game_data_for(controller._player1), {
             'trump': str(controller._trump),
             'deck_count': len(controller._deck),
             'enemy_count': len(controller._player2.cards),
             'on_table': map(str, controller._on_table),
             'discarded': map(str, controller._discarded),
         })
     self.assertDictEqual(
         controller._get_game_data_for(controller._player2), {
             'trump': str(controller._trump),
             'deck_count': len(controller._deck),
             'enemy_count': len(controller._player1.cards),
             'on_table': map(str, controller._on_table),
             'discarded': map(str, controller._discarded),
         })
示例#29
0
 def test_get_first_to_move_by_trump_if_only_no_trumps_exist(self):
     controller = GameController()
     controller._trump = DurakCard('6H')
     controller._player1.cards = CardSet(cards=(DurakCard('AC'),
                                                DurakCard('8S')),
                                         trump=controller._trump)
     controller._player2.cards = CardSet(cards=(DurakCard('KS'),
                                                DurakCard('KD')),
                                         trump=controller._trump)
     with patch('durak.controller.random') as random_mock:
         result = controller._get_first_to_move_by_trump()
         self.assertEqual(result, random_mock.choice.return_value)
         random_mock.choice.assert_called_once_with(
             [controller._player1, controller._player2])
示例#30
0
文件: tests.py 项目: drtyrsa/durak
    def test_register_give_more_is_error_if_player_can_not_give_these_cards(self):
        controller = GameController()
        controller._state = controller.States.GIVING_MORE
        controller._no_response = True
        controller._to_move = controller._player1
        controller._trump = DurakCard('6H')
        controller._player1.cards = CardSet(
            cards=(DurakCard('AC'), DurakCard('AH'), DurakCard('6H')),
            trump=controller._trump
        )
        controller._player2.cards = CardSet(
            cards=(
                DurakCard('7C'),
                DurakCard('7H'),
                DurakCard('7D'),
                DurakCard('7S'),
            ),
            trump=controller._trump
        )
        controller._on_table = [DurakCard('6D')]

        with self.assertRaises(exes.InvalidCard):
            controller.register_give_more([
                DurakCard('AC'), DurakCard('AH'), DurakCard('6H')
            ])
示例#31
0
文件: tests.py 项目: drtyrsa/durak
 def test_get_first_to_move_by_trump_if_only_no_trumps_exist(self):
     controller = GameController()
     controller._trump = DurakCard('6H')
     controller._player1.cards = CardSet(
         cards=(DurakCard('AC'), DurakCard('8S')), trump=controller._trump
     )
     controller._player2.cards = CardSet(
         cards=(DurakCard('KS'), DurakCard('KD')), trump=controller._trump
     )
     with patch('durak.controller.random') as random_mock:
         result = controller._get_first_to_move_by_trump()
         self.assertEqual(result, random_mock.choice.return_value)
         random_mock.choice.assert_called_once_with(
             [controller._player1, controller._player2]
         )
示例#32
0
 def test_check_for_game_over_does_nothing_if_responder_can_beat_with_last_card(
         self):
     controller = GameController()
     controller._state = controller.States.RESPONDING
     controller._deck = []
     controller._trump = DurakCard('6H')
     controller._player1.cards = CardSet(cards=(), trump=controller._trump)
     controller._player2.cards = CardSet(cards=(DurakCard('KD'), ),
                                         trump=controller._trump)
     controller._to_move = controller._player1
     controller._on_table = [DurakCard('QD')]
     controller._check_for_game_over()
     self.assertEqual(controller._state, controller.States.RESPONDING)
示例#33
0
    def test_get_first_to_move_by_trump_if_both_trumps_exist(self):
        controller = GameController()
        controller._trump = DurakCard('6H')
        controller._player1.cards = CardSet(cards=(DurakCard('7H'),
                                                   DurakCard('8S')),
                                            trump=controller._trump)
        controller._player2.cards = CardSet(cards=(DurakCard('9H'),
                                                   DurakCard('KD')),
                                            trump=controller._trump)
        self.assertEqual(controller._get_first_to_move_by_trump(),
                         controller._player1)

        controller._player1.cards = CardSet(cards=(DurakCard('AH'),
                                                   DurakCard('8S')),
                                            trump=controller._trump)
        self.assertEqual(controller._get_first_to_move_by_trump(),
                         controller._player2)
示例#34
0
文件: tests.py 项目: drtyrsa/durak
 def test_game_data_for_private(self):
     controller = GameController()
     controller._trump = DurakCard('6H')
     controller._deck = [DurakCard('7S'), DurakCard('8D')]
     controller._on_table = [DurakCard('9C'), DurakCard('TH')]
     controller._discarded = [DurakCard('JD'), DurakCard('QS')]
     controller._player1.cards = CardSet(
         cards=(DurakCard('AC'), DurakCard('8S'), DurakCard('KS')),
         trump=controller._trump
     )
     controller._player2.cards = CardSet(
         cards=(DurakCard('KD'),), trump=controller._trump
     )
     self.assertDictEqual(
         controller._get_game_data_for(controller._player1), {
             'trump': str(controller._trump),
             'deck_count': len(controller._deck),
             'enemy_count': len(controller._player2.cards),
             'on_table': map(str, controller._on_table),
             'discarded': map(str, controller._discarded),
         }
     )
     self.assertDictEqual(
         controller._get_game_data_for(controller._player2), {
             'trump': str(controller._trump),
             'deck_count': len(controller._deck),
             'enemy_count': len(controller._player1.cards),
             'on_table': map(str, controller._on_table),
             'discarded': map(str, controller._discarded),
         }
     )
示例#35
0
    def __init__(self):
        super(PlayFrame, self).__init__(parent=None,
                                        title='Durak GUI',
                                        size=(self.WIDTH, self.HEIGHT))

        self._create_layout()

        self._controller = GameController(
            player1_name='HUMAN',
            player2_name='ENGINE',
            log_filename=get_filename('last_game'),
            overwrite_log=True)
        self._engine = None
        self._engine_path = None

        self._trump = None

        self._start_new_game()
示例#36
0
    def test_register_response_not_allows_moving_if_moving_has_no_cards(self):
        controller = GameController()
        controller._state = controller.States.RESPONDING
        controller._to_move = controller._player2
        controller._trump = DurakCard('6H')
        controller._deck = [DurakCard('JH')]
        controller._player1.cards = CardSet(cards=(DurakCard('AC'),
                                                   DurakCard('AH')),
                                            trump=controller._trump)
        controller._player2.cards = CardSet(cards=(), trump=controller._trump)
        controller._on_table = [DurakCard('6D')]

        controller.register_response(DurakCard('AH'))

        self.assertEqual(controller.state, controller.States.DEALING)
示例#37
0
    def test_register_give_more_is_error_if_max_count_is_exceeded(self):
        controller = GameController()
        controller._state = controller.States.GIVING_MORE
        controller._no_response = True
        controller._to_move = controller._player1
        controller._trump = DurakCard('6H')
        controller._player1.cards = CardSet(cards=(DurakCard('AC'),
                                                   DurakCard('AH')),
                                            trump=controller._trump)
        controller._player2.cards = CardSet(cards=(DurakCard('7C'), ),
                                            trump=controller._trump)
        controller._on_table = [DurakCard('6D')]

        with self.assertRaises(exes.TooMuchGiveMoreCards):
            controller.register_give_more([DurakCard('6S'), DurakCard('6H')])
示例#38
0
    def test_register_move_is_error_if_player_does_have_this_card(self):
        controller = GameController()
        controller._state = controller.States.MOVING
        controller._to_move = controller._player1
        controller._trump = DurakCard('6H')
        controller._player1.cards = CardSet(cards=(DurakCard('AC'),
                                                   DurakCard('AH')),
                                            trump=controller._trump)
        controller._on_table = []

        with self.assertRaises(exes.PlayerDoesNotHaveCard):
            controller.register_move(DurakCard('6D'))
示例#39
0
    def test_check_for_game_over_is_draw_if_both_players_have_no_cards(self):
        controller = GameController()
        controller._trump = DurakCard('6H')
        controller._deck = []
        controller._player1.cards = CardSet(cards=(), trump=controller._trump)
        controller._player2.cards = CardSet(cards=(), trump=controller._trump)
        controller._state = controller.States.MOVING
        controller._logger_enabled = False

        controller._check_for_game_over()
        self.assertTrue(controller._state is None)
        self.assertTrue(controller._winner is None)
示例#40
0
文件: tests.py 项目: drtyrsa/durak
    def test_get_first_to_move_by_trump_if_both_trumps_exist(self):
        controller = GameController()
        controller._trump = DurakCard('6H')
        controller._player1.cards = CardSet(
            cards=(DurakCard('7H'), DurakCard('8S')), trump=controller._trump
        )
        controller._player2.cards = CardSet(
            cards=(DurakCard('9H'), DurakCard('KD')), trump=controller._trump
        )
        self.assertEqual(
            controller._get_first_to_move_by_trump(), controller._player1
        )

        controller._player1.cards = CardSet(
            cards=(DurakCard('AH'), DurakCard('8S')), trump=controller._trump
        )
        self.assertEqual(
            controller._get_first_to_move_by_trump(), controller._player2
        )
示例#41
0
    def test_register_response_is_error_if_player_can_not_add_this_card(self):
        controller = GameController()
        controller._state = controller.States.RESPONDING
        controller._to_move = controller._player2
        controller._trump = DurakCard('6H')
        controller._player1.cards = CardSet(cards=(DurakCard('AC'),
                                                   DurakCard('AH')),
                                            trump=controller._trump)
        controller._on_table = [DurakCard('6D')]

        with self.assertRaises(exes.InvalidCard):
            controller.register_response(DurakCard('AC'))
示例#42
0
    def test_register_response_moves_card_from_player_to_table(self):
        controller = GameController()
        controller._state = controller.States.RESPONDING
        controller._to_move = controller._player2
        controller._trump = DurakCard('6H')
        controller._deck = [DurakCard('JH')]
        controller._player1.cards = CardSet(cards=(DurakCard('AC'),
                                                   DurakCard('AH')),
                                            trump=controller._trump)
        controller._on_table = [DurakCard('6D')]

        controller.register_response(DurakCard('AH'))

        self.assertItemsEqual(controller._player1.cards, [DurakCard('AC')])
        self.assertEqual(controller._on_table,
                         [DurakCard('6D'), DurakCard('AH')])
示例#43
0
文件: tests.py 项目: drtyrsa/durak
 def test_check_for_game_over_does_nothing_if_responder_can_beat_with_last_card(self):
     controller = GameController()
     controller._state = controller.States.RESPONDING
     controller._deck = []
     controller._trump = DurakCard('6H')
     controller._player1.cards = CardSet(cards=(), trump=controller._trump)
     controller._player2.cards = CardSet(
         cards=(DurakCard('KD'),), trump=controller._trump
     )
     controller._to_move = controller._player1
     controller._on_table = [DurakCard('QD')]
     controller._check_for_game_over()
     self.assertEqual(controller._state, controller.States.RESPONDING)
示例#44
0
    def test_is_player1_to_move(self):
        controller = GameController()
        controller._to_move = controller._player1
        self.assertTrue(controller.is_player1_to_move())

        controller._to_move = controller._player2
        self.assertFalse(controller.is_player1_to_move())
示例#45
0
    def test_register_move_goes_to_responding_if_card_is_none(self):
        controller = GameController()
        controller._state = controller.States.MOVING
        controller._on_table = [DurakCard('AC'), DurakCard('AH')]

        controller.register_move(None)

        self.assertEqual(controller._state, controller.States.DEALING)
示例#46
0
    def test_register_give_more_with_no_cards_goes_to_dealing(self):
        controller = GameController()
        controller._state = controller.States.GIVING_MORE
        controller._no_response = True

        controller.register_give_more([])

        self.assertEqual(controller.state, controller.States.DEALING)
示例#47
0
文件: tests.py 项目: drtyrsa/durak
    def test_register_response_not_allows_moving_if_moving_has_no_cards(self):
        controller = GameController()
        controller._state = controller.States.RESPONDING
        controller._to_move = controller._player2
        controller._trump = DurakCard('6H')
        controller._deck = [DurakCard('JH')]
        controller._player1.cards = CardSet(
            cards=(DurakCard('AC'), DurakCard('AH')), trump=controller._trump
        )
        controller._player2.cards = CardSet(cards=(), trump=controller._trump)
        controller._on_table = [DurakCard('6D')]

        controller.register_response(DurakCard('AH'))

        self.assertEqual(controller.state, controller.States.DEALING)
示例#48
0
文件: tests.py 项目: drtyrsa/durak
    def test_check_for_game_over_is_draw_if_both_players_have_no_cards(self):
        controller = GameController()
        controller._trump = DurakCard('6H')
        controller._deck = []
        controller._player1.cards = CardSet(cards=(), trump=controller._trump)
        controller._player2.cards = CardSet(cards=(), trump=controller._trump)
        controller._state = controller.States.MOVING
        controller._logger_enabled = False

        controller._check_for_game_over()
        self.assertTrue(controller._state is None)
        self.assertTrue(controller._winner is None)
示例#49
0
文件: tests.py 项目: drtyrsa/durak
    def test_register_move_is_error_if_player_does_have_this_card(self):
        controller = GameController()
        controller._state = controller.States.MOVING
        controller._to_move = controller._player1
        controller._trump = DurakCard('6H')
        controller._player1.cards = CardSet(
            cards=(DurakCard('AC'), DurakCard('AH')), trump=controller._trump
        )
        controller._on_table = []

        with self.assertRaises(exes.PlayerDoesNotHaveCard):
            controller.register_move(DurakCard('6D'))
示例#50
0
文件: tests.py 项目: drtyrsa/durak
    def test_register_response_is_error_if_player_can_not_add_this_card(self):
        controller = GameController()
        controller._state = controller.States.RESPONDING
        controller._to_move = controller._player2
        controller._trump = DurakCard('6H')
        controller._player1.cards = CardSet(
            cards=(DurakCard('AC'), DurakCard('AH')), trump=controller._trump
        )
        controller._on_table = [DurakCard('6D')]

        with self.assertRaises(exes.InvalidCard):
            controller.register_response(DurakCard('AC'))
示例#51
0
    def test_successful_register_move(self):
        controller = GameController()
        controller._state = controller.States.MOVING
        controller._to_move = controller._player1
        controller._trump = DurakCard('6H')
        controller._deck = [DurakCard('6H')]
        controller._player1.cards = CardSet(cards=(DurakCard('AC'),
                                                   DurakCard('7H')),
                                            trump=controller._trump)
        controller._on_table = [DurakCard('AD'), DurakCard('AS')]

        controller.register_move(DurakCard('AC'))

        self.assertItemsEqual(controller._player1.cards, (DurakCard('7H'), ))
        self.assertEqual(controller._on_table,
                         [DurakCard('AD'),
                          DurakCard('AS'),
                          DurakCard('AC')])
        self.assertEqual(controller._state, controller.States.RESPONDING)
示例#52
0
    def test_register_response_goes_to_dealing_if_card_is_none_and_mover_has_no_cards(
            self):
        controller = GameController()
        controller._state = controller.States.RESPONDING
        controller._to_move = controller._player1
        controller._trump = DurakCard('6H')
        controller._player1.cards = CardSet(cards=(), trump=controller._trump)

        controller.register_response(None)

        self.assertEqual(controller._state, controller.States.DEALING)
        self.assertTrue(controller._no_response)
示例#53
0
    def test_register_response_goes_to_giving_more_if_card_is_none(self):
        controller = GameController()
        controller._state = controller.States.RESPONDING
        controller._to_move = controller._player1
        controller._trump = DurakCard('6H')
        controller._player1.cards = CardSet(cards=(DurakCard('AC'), ),
                                            trump=controller._trump)

        controller.register_response(None)

        self.assertEqual(controller._state, controller.States.GIVING_MORE)
        self.assertTrue(controller._no_response)
示例#54
0
文件: tests.py 项目: drtyrsa/durak
    def test_register_give_more_is_error_if_max_count_is_exceeded(self):
        controller = GameController()
        controller._state = controller.States.GIVING_MORE
        controller._no_response = True
        controller._to_move = controller._player1
        controller._trump = DurakCard('6H')
        controller._player1.cards = CardSet(
            cards=(DurakCard('AC'), DurakCard('AH')), trump=controller._trump
        )
        controller._player2.cards = CardSet(
            cards=(DurakCard('7C'),), trump=controller._trump
        )
        controller._on_table = [DurakCard('6D')]

        with self.assertRaises(exes.TooMuchGiveMoreCards):
            controller.register_give_more([DurakCard('6S'), DurakCard('6H')])
示例#55
0
文件: tests.py 项目: drtyrsa/durak
    def test_check_for_game_over_player_wins_if_has_no_cards(self):
        controller = GameController()
        controller._trump = DurakCard('6H')
        controller._deck = []
        controller._player1.cards = CardSet(cards=(), trump=controller._trump)
        controller._player2.cards = CardSet(
            cards=(DurakCard('KD'), DurakCard('KS')), trump=controller._trump
        )
        controller._state = controller.States.MOVING
        controller._logger_enabled = False

        controller._check_for_game_over()
        self.assertTrue(controller._state is None)
        self.assertEqual(controller._winner, controller._player1)

        controller._player1.cards = CardSet(
            cards=(DurakCard('AC'), DurakCard('8S')), trump=controller._trump
        )
        controller._player2.cards = CardSet(cards=(), trump=controller._trump)
        controller._state = controller.States.MOVING
        controller._check_for_game_over()
        self.assertTrue(controller._state is None)
        self.assertEqual(controller._winner, controller._player2)
示例#56
0
 def test_check_for_game_over_does_nothing_if_both_players_have_cards(self):
     controller = GameController()
     controller._trump = DurakCard('6H')
     controller._deck = []
     controller._player1.cards = CardSet(cards=(DurakCard('AC'),
                                                DurakCard('8S')),
                                         trump=controller._trump)
     controller._player2.cards = CardSet(cards=(DurakCard('KD'),
                                                DurakCard('KS')),
                                         trump=controller._trump)
     controller._state = controller.States.MOVING
     controller._check_for_game_over()
     self.assertEqual(controller._state, controller.States.MOVING)
示例#57
0
文件: tests.py 项目: drtyrsa/durak
    def test_register_response_moves_card_from_player_to_table(self):
        controller = GameController()
        controller._state = controller.States.RESPONDING
        controller._to_move = controller._player2
        controller._trump = DurakCard('6H')
        controller._deck = [DurakCard('JH')]
        controller._player1.cards = CardSet(
            cards=(DurakCard('AC'), DurakCard('AH')), trump=controller._trump
        )
        controller._on_table = [DurakCard('6D')]

        controller.register_response(DurakCard('AH'))

        self.assertItemsEqual(controller._player1.cards, [DurakCard('AC')])
        self.assertEqual(
            controller._on_table, [DurakCard('6D'), DurakCard('AH')]
        )
示例#58
0
文件: tests.py 项目: drtyrsa/durak
    def test_register_response_goes_to_dealing_if_card_is_none_and_mover_has_no_cards(self):
        controller = GameController()
        controller._state = controller.States.RESPONDING
        controller._to_move = controller._player1
        controller._trump = DurakCard('6H')
        controller._player1.cards = CardSet(cards=(), trump=controller._trump)

        controller.register_response(None)

        self.assertEqual(controller._state, controller.States.DEALING)
        self.assertTrue(controller._no_response)
示例#59
0
文件: tests.py 项目: drtyrsa/durak
    def test_successful_register_move(self):
        controller = GameController()
        controller._state = controller.States.MOVING
        controller._to_move = controller._player1
        controller._trump = DurakCard('6H')
        controller._deck = [DurakCard('6H')]
        controller._player1.cards = CardSet(
            cards=(DurakCard('AC'), DurakCard('7H')), trump=controller._trump
        )
        controller._on_table = [DurakCard('AD'), DurakCard('AS')]

        controller.register_move(DurakCard('AC'))

        self.assertItemsEqual(controller._player1.cards, (DurakCard('7H'),))
        self.assertEqual(
            controller._on_table,
            [DurakCard('AD'), DurakCard('AS'), DurakCard('AC')]
        )
        self.assertEqual(controller._state, controller.States.RESPONDING)
示例#60
0
文件: tests.py 项目: drtyrsa/durak
    def test_register_response_goes_to_giving_more_if_card_is_none(self):
        controller = GameController()
        controller._state = controller.States.RESPONDING
        controller._to_move = controller._player1
        controller._trump = DurakCard('6H')
        controller._player1.cards = CardSet(
            cards=(DurakCard('AC'),), trump=controller._trump
        )

        controller.register_response(None)

        self.assertEqual(controller._state, controller.States.GIVING_MORE)
        self.assertTrue(controller._no_response)