def test_player_scores_new_round_clears_all_old_round_scores(self):
        players = ["duke_leto", "paul2D2"]
        expected = {
            players[0]: {
                "round_points": 0,
                "game_points": 1,
                "game_wins": 0
            },
            players[1]: {
                "round_points": 0,
                "game_points": 2,
                "game_wins": 1
            }
        }
        file_name = "mock_players"
        s = Subject(file_name)
        s.score(players[0])
        s.score(players[1])
        s.score(players[1])
        s.score_winners()

        s.reset_scores_for_next_round()

        cleanup(file_name)
        self.assertEqual(s.scores, expected)
    def test_questions_asked_log_updates_the_log_with_a_new_entry(self):
        given = Subject(self.file_name)

        given.log(self.question)

        actual = given.all_logged()
        cleanup(self.file_name)
        self.assertEqual(actual, [self.question])
コード例 #3
0
    def test_commands_returns_tuples_with_message_matchers(self):
        subject = All(self.mock_opts).commands()

        cleanup(self.mock_opts['qa'])
        cleanup(self.mock_opts['ps'])
        for command in subject:
            message_matcher = command[0]
            self.assertEqual(type(message_matcher), str)
            self.assertNotEqual(message_matcher, "")
    def test_player_scores_top_players_gives_noting_if_no_one_has_played(self):
        players = ["paul2D2"]
        expected = []
        file_name = "mock_players"
        s = Subject(file_name)

        actual = s.top_players()

        cleanup(file_name)
        self.assertEqual(expected, actual)
    def test_player_scores_score_adds_new_players_to_the_board(self):
        player = "paul2D2"
        expected = {"round_points": 1, "game_points": 1, "game_wins": 0}
        file_name = "mock_players"
        s = Subject(file_name)

        s.score(player)

        cleanup(file_name)
        self.assertEqual(s.scores[player], expected)
    def test_player_scores_score_ups_an_existing_players_score(self):
        player = "paul2D2"
        expected = {"round_points": 2, "game_points": 2, "game_wins": 0}
        file_name = "mock_players"
        s = Subject(file_name)

        s.score(player)
        s.score(player)

        cleanup(file_name)
        self.assertEqual(s.scores[player], expected)
コード例 #7
0
    def test_commands_does_not_contain_name_collisions(self):
        subject = All(self.mock_opts).commands()

        command_messages = []
        unique = []
        cleanup(self.mock_opts['qa'])
        cleanup(self.mock_opts['ps'])
        for command in subject:
            command_messages.append(command[0])
            if command[0] not in unique:
                unique.append(command[0])
        self.assertEqual(unique, command_messages)
コード例 #8
0
    def test_commands_returns_a_tuple_with_validations(self):
        valid_validations = ["admin_only"]

        subject = All(self.mock_opts).commands()

        cleanup(self.mock_opts['qa'])
        cleanup(self.mock_opts['ps'])
        for command in subject:
            validations = command[2]
            self.assertEqual(type(validations), list)
            for validation in validations:
                self.assertTrue(validation in valid_validations)
    def test_questions_asked_clear_game_replaces_the_log_with_an_empty_list(
            self):
        given = Subject(self.file_name)
        given.log(self.question)
        given.log(self.question)
        given.log(self.question)

        given.clear_all()

        actual = given.all_logged()
        cleanup(self.file_name)
        self.assertEqual(actual, [])
コード例 #10
0
    def test_player_scores_top_players_gives_the_only_player_whose_played(
            self):
        players = ["paul2D2"]
        expected = [(players[0], 1)]
        file_name = "mock_players"
        s = Subject(file_name)
        s.score(players[0])
        s.score_winners()

        actual = s.top_players()

        cleanup(file_name)
        self.assertEqual(expected, actual)
コード例 #11
0
    def test_player_scores_score_winner_only_adds_a_game_win_to_the_top_player_on_the_board(
            self):
        players = ["paul2D2", "the_barron_harkonnen"]
        file_name = "mock_players"
        s = Subject(file_name)
        s.score(players[0])
        s.score(players[0])
        s.score(players[1])

        s.score_winners()

        cleanup(file_name)
        self.assertEqual(s.scores[players[0]]['game_wins'], 1)
        self.assertEqual(s.scores[players[1]]['game_wins'], 0)
コード例 #12
0
    def test_commands_returns_a_tuple_with_callbacks(self):
        subject = All(self.mock_opts).commands()

        cleanup(self.mock_opts['qa'])
        cleanup(self.mock_opts['ps'])
        for command in subject:
            callback = command[1]
            self.assertTrue(callable(callback))
            params = inspect.signature(callback).parameters

            class_signature = 'self'
            if class_signature in params:
                self.assertEqual(len(params), 3)
            else:
                self.assertEqual(len(params), 2)
コード例 #13
0
    def test_player_scores_top_players_gives_first_3_players_to_get_on_the_board_when_there_are_many(
            self):
        players = [
            "paul2D2", "macready_13", "Overdroid", "uberhorse", "aharvey2k"
        ]
        expected = [(players[0], 1), (players[1], 1), (players[2], 1)]
        file_name = "mock_players"
        s = Subject(file_name)
        for player in players:
            s.score(player)
        s.score_winners()

        actual = s.top_players()

        cleanup(file_name)
        self.assertEqual(expected, actual)
コード例 #14
0
    def test_player_scores_top_players_gives_2_players_when_there_are_only_2(
            self):
        players = ["paul2D2", "macready_13"]
        expected = [(players[1], 2), (players[0], 1)]
        file_name = "mock_players"
        s = Subject(file_name)
        for _ in range(2):
            s.score(players[1])
            s.score_winners()
            s.reset_scores_for_next_game()
        s.score(players[0])
        s.score_winners()

        actual = s.top_players()

        cleanup(file_name)
        self.assertEqual(expected, actual)
コード例 #15
0
    def test_player_scores_score_winner_only_adds_a_game_win_to_players_on_the_board(
            self):
        winners = ["paul2D2", "duncan_idaho"]
        expected = {
            winners[0]: {
                "round_points": 1,
                "game_points": 1,
                "game_wins": 1
            }
        }
        file_name = "mock_players"
        s = Subject(file_name)
        s.score(winners[0])

        s.score_winners()

        cleanup(file_name)
        self.assertEqual(s.scores, expected)
コード例 #16
0
    def test_player_scores_game_winners_gives_the_top_3_game_players(self):
        players = [
            "paul2D2", "macready_13", "Overdroid", "uberhorse", "aharvey2k"
        ]
        expected = [(players[3], 5), (players[4], 4), (players[1], 3)]
        file_name = "mock_players"
        s = Subject(file_name)
        for _ in range(5):
            s.score(players[3])
        for _ in range(4):
            s.score(players[4])
        for _ in range(3):
            s.score(players[1])
        for _ in range(2):
            s.score(players[0])
        s.score(players[2])

        actual = s.game_winners()

        cleanup(file_name)
        self.assertEqual(expected, actual)
コード例 #17
0
    def test_player_scores_new_game_clears_all_old_round_and_game_scores(self):
        players = ["the_great_worm", "paul2D2"]
        expected = {
            players[0]: {
                "round_points": 0,
                "game_points": 0,
                "game_wins": 1
            },
            players[1]: {
                "round_points": 0,
                "game_points": 0,
                "game_wins": 1
            }
        }
        file_name = "mock_players"
        s = Subject(file_name)
        s.score(players[0])
        s.score(players[1])
        s.score_winners()

        s.reset_scores_for_next_game()

        cleanup(file_name)
        self.assertEqual(s.scores, expected)
 def test_questions_asked_log_creates_a_log_with_a_single_entry_upon_creation(
         self):
     given = Subject(self.file_name)
     actual = given.all_logged()
     cleanup(self.file_name)
     self.assertEqual(actual, [])