示例#1
0
    def test_user_roll_again(self, mock_input):

        user_input_data = ['y', 'Y', 'n', 'q', 'pizza', '121221']
        expected_responses = [True, True, False, False, False, False]
        mock_input.side_effect = user_input_data

        test_player = Player('test')

        for expected_response in expected_responses:
            actual_again = test_player.user_roll_again()
            self.assertEqual(expected_response, actual_again)
示例#2
0
    def test_create_players(self, mock_names, mock_int_input):

        players = game.create_players()

        expectedPlayers = [Player('a'), Player('b'), Player('c'), Player('d')]

        # Assert the correct number of players is created
        self.assertEqual(len(players), len(expectedPlayers))

        # And that they have the correct names
        for actual, expected in zip(players, expectedPlayers):
            self.assertEqual(actual.name, expected.name)
示例#3
0
    def test_win(self):

        test_player = Player('test')
        test_player.score = 95
        test_player.win(6)  #should win
        self.assertTrue(test_player.winner)
        self.assertEqual(101, test_player.score)

        test_player = Player('test')
        test_player.score = 15
        test_player.win(6)  #should not win
        self.assertFalse(test_player.winner)
        self.assertEqual(15, test_player.score)  #Score should not increase.
示例#4
0
    def test_play_game_lose(self):

        # 1. player rolls a 1 on first roll, turn ends . Score should stay same, not winner

        test_player = Player('test')

        test_player.score = 10
        test_player.roll_dice = MagicMock(return_value=1)

        won = test_player.play()
        self.assertIsNone(won)

        self.assertFalse(test_player.winner)
        self.assertEqual(10, test_player.score)
示例#5
0
    def test_play_game_roll_win(self):

        # 6. player rolls 2-6 on first roll and accumulates enough points to win. Score should increase, user is winner

        test_player = Player('test')
        test_player.score = 99

        test_player.roll_dice = MagicMock(return_value=4)

        won = test_player.play()
        self.assertTrue(won)

        self.assertTrue(test_player.winner)
        self.assertEqual(103, test_player.score)
示例#6
0
def create_players():

    players = []
    number_of_players = ui.positive_int_input('How many players?', 2)
    names = ui.get_unique_names(number_of_players, 'Player')

    players = [ Player(name) for name in names ]    # List comprehensions are also my favorite thing about Python :)
    return players
示例#7
0
    def test_play_game(self):

        #Create some players with a mock Play method
        player_1 = Player('test1')
        player_1.play = MagicMock(side_effect=['', '', '', True])

        player_2 = Player('test2')
        player_2.play = MagicMock(side_effect=['', '', '', ''])

        player_3 = Player('test3')
        player_3.play = MagicMock(side_effect=['', '', '', ''])

        # Test that play continues until a player returns True

        game.play([player_1, player_2, player_3])
示例#8
0
    def test_display_winners(self, mock_print):

        player_1 = Player('test1')
        player_1.score = 10

        player_2 = Player('test2')
        player_2.winner = True
        player_2.score = 101

        player_3 = Player('test3')
        player_3.score = 20

        # Verify mock_print is called with a message saying player 2 won

        game.results([player_1, player_2, player_3])

        call_args = mock_print.call_args_list

        mock_print.assert_any_call(
            '**** Player name: test2 score: 101 **** is the winner!! *****')
        mock_print.assert_any_call('Player name: test1 score: 10')
        mock_print.assert_any_call('Player name: test3 score: 20')
示例#9
0
    def test_play_game_roll_roll_pass(self):

        #3. player rolls 2-6 on first roll. does not accumulate enough points to win. player rolls again 2-6. Player elects to end turn. Score should increase, not winner

        test_player = Player('test')
        test_player.score = 10
        test_player.roll_dice = MagicMock(side_effect=[4, 3])
        test_player.user_roll_again = MagicMock(side_effect=[True, False])

        won = test_player.play()
        self.assertIsNone(won)

        self.assertFalse(test_player.winner)
        self.assertEqual(17, test_player.score)
示例#10
0
    def test_play_game_roll_lose(self):

        # 5. player rolls 2-6 on first roll. does not accumulate enough points to win. player rolls again 1. Score should stay the same, not winner

        test_player = Player('test')
        test_player.score = 10
        rolls = [4, 1]
        user_says = [True]
        test_player.roll_dice = MagicMock(side_effect=rolls)
        test_player.user_roll_again = MagicMock(side_effect=user_says)

        won = test_player.play()
        self.assertIsNone(won)

        self.assertFalse(test_player.winner)
        self.assertEqual(10, test_player.score)
示例#11
0
    def test_play_game_roll_many(self):

        # 4. player rolls 2-6 on first roll. does not accumulate enough points to win. player rolls again 2-6. Player repeats several times, each time 2-6. Player elects to end turn. Score should increase, not winner

        test_player = Player('test')
        test_player.score = 10
        rolls = [4, 3, 6, 2, 3, 6, 5, 2]
        user_says = [True, True, True, True, True, True, True, False]
        test_player.roll_dice = MagicMock(side_effect=rolls)
        test_player.user_roll_again = MagicMock(side_effect=user_says)

        won = test_player.play()
        self.assertIsNone(won)

        self.assertFalse(test_player.winner)
        self.assertEqual(10 + sum(rolls), test_player.score)
示例#12
0
    def test_play_game_roll_roll_win(self):

        # 7. player rolls 2-6 on first roll. does not accumulate enough points to win. player rolls again 2-6, accumulates enough points to win. Score should increase, user is winner

        test_player = Player('test')
        test_player.score = 91
        rolls = [6, 5]
        user_says = [True]
        test_player.roll_dice = MagicMock(side_effect=rolls)
        test_player.user_roll_again = MagicMock(side_effect=user_says)

        won = test_player.play()
        self.assertTrue(won)

        self.assertTrue(test_player.winner)
        self.assertEqual(102, test_player.score)