예제 #1
0
    def test_start_match(self):
        stdout = []

        def mock_print(str="", *args, **kwargs):
            print(str)
            stdout.append(str)

        teams = {
            "first_id": "StoppingPlayer",
            "second_id": "SmartEatingPlayer",
        }

        config = MagicMock()
        config.rounds = 300
        config.team_spec = lambda x: teams[x]
        config.team_name = lambda x: teams[x]
        config.viewer = 'ascii'
        config.filter = 'small'
        config.print = mock_print
        config.tournament_log_folder = None

        team_ids = ["first_id", "first_id"]
        result = tournament.start_match(config, team_ids)
        self.assertEqual(result, False)
        self.assertEqual(stdout[-1], '‘StoppingPlayer’ and ‘StoppingPlayer’ had a draw.')

        team_ids = ["second_id", "first_id"]
        result = tournament.start_match(config, team_ids)
        self.assertEqual(result, "second_id")
        self.assertEqual(stdout[-1], '‘SmartEatingPlayer’ wins')

        team_ids = ["first_id", "second_id"]
        result = tournament.start_match(config, team_ids)
        self.assertEqual(result, "second_id")
        self.assertEqual(stdout[-1], '‘SmartEatingPlayer’ wins')
예제 #2
0
    def test_tournament_winner(self):
        stdout = []

        def mock_print(str="", *args, **kwargs):
            stdout.append(str)

        c = {
            "location": None,
            "date": None,
            "bonusmatch": None,
            "teams": [
                {"id": "group0", "spec": "StoppingPlayer", "members": []},
                {"id": "group1", "spec": "SmartEatingPlayer", "members": []},
                {"id": "group2", "spec": "StoppingPlayer", "members": []},
                {"id": "group3", "spec": "StoppingPlayer", "members": []},
                {"id": "group4", "spec": "StoppingPlayer", "members": []},
            ],
            "filter": "small",
        }
        config = tournament.Config(c)
        config.print = mock_print
        config.viewer = 'null'
        config.state = None
        config.tournament_log_folder = None

        # group1 should win
        self.assertEqual("group1", tournament.start_match(config, ["group0", "group1"]))
        self.assertEqual("group1", tournament.start_match(config, ["group1", "group0"]))
        self.assertEqual(False, tournament.start_match(config, ["group0", "group0"]))

        tournament.present_teams(config)

        state = tournament.State(config)
        rr_ranking = tournament.round1(config, state)

        if config.bonusmatch:
            sorted_ranking = komode.sort_ranks(rr_ranking[:-1]) + [rr_ranking[-1]]
        else:
            sorted_ranking = komode.sort_ranks(rr_ranking)

        winner = tournament.round2(config, sorted_ranking, state)
        self.assertEqual(winner, 'group1')
예제 #3
0
    def test_start_match(self):
        stdout = []

        def mock_print(str="", *args, **kwargs):
            print(str)
            stdout.append(str)

        teams = {
            "first_id": "StoppingPlayer",
            "second_id": "SmartEatingPlayer",
        }

        config = MagicMock()
        config.rounds = 300
        config.team_spec = lambda x: teams[x]
        config.team_name = lambda x: teams[x]
        config.viewer = 'ascii'
        config.filter = 'small'
        config.print = mock_print
        config.tournament_log_folder = None

        team_ids = ["first_id", "first_id"]
        result = tournament.start_match(config, team_ids)
        self.assertEqual(result, False)
        self.assertEqual(stdout[-1],
                         '‘StoppingPlayer’ and ‘StoppingPlayer’ had a draw.')

        team_ids = ["second_id", "first_id"]
        result = tournament.start_match(config, team_ids)
        self.assertEqual(result, "second_id")
        self.assertEqual(stdout[-1], '‘SmartEatingPlayer’ wins')

        team_ids = ["first_id", "second_id"]
        result = tournament.start_match(config, team_ids)
        self.assertEqual(result, "second_id")
        self.assertEqual(stdout[-1], '‘SmartEatingPlayer’ wins')
예제 #4
0
    def test_tournament_winner(self):
        stdout = []

        def mock_print(str="", *args, **kwargs):
            stdout.append(str)

        c = {
            "location":
            None,
            "date":
            None,
            "bonusmatch":
            None,
            "teams": [
                {
                    "id": "group0",
                    "spec": "StoppingPlayer",
                    "members": []
                },
                {
                    "id": "group1",
                    "spec": "SmartEatingPlayer",
                    "members": []
                },
                {
                    "id": "group2",
                    "spec": "StoppingPlayer",
                    "members": []
                },
                {
                    "id": "group3",
                    "spec": "StoppingPlayer",
                    "members": []
                },
                {
                    "id": "group4",
                    "spec": "StoppingPlayer",
                    "members": []
                },
            ],
            "filter":
            "small",
        }
        config = tournament.Config(c)
        config.print = mock_print
        config.viewer = 'null'
        config.state = None
        config.tournament_log_folder = None

        # group1 should win
        self.assertEqual("group1",
                         tournament.start_match(config, ["group0", "group1"]))
        self.assertEqual("group1",
                         tournament.start_match(config, ["group1", "group0"]))
        self.assertEqual(False,
                         tournament.start_match(config, ["group0", "group0"]))

        tournament.present_teams(config)

        state = tournament.State(config)
        rr_ranking = tournament.round1(config, state)

        if config.bonusmatch:
            sorted_ranking = komode.sort_ranks(
                rr_ranking[:-1]) + [rr_ranking[-1]]
        else:
            sorted_ranking = komode.sort_ranks(rr_ranking)

        winner = tournament.round2(config, sorted_ranking, state)
        self.assertEqual(winner, 'group1')