Пример #1
0
def test_select_team_transfer_limit(players):
    squad = [1, 7, 8, 9, 12, 13, 14, 15, 17, 18, 19, 2, 5, 6, 11]

    first_team, bench, captain, vice, transfers = select_team(
        players,
        optimise_key="key",
        total_budget=600,
        existing_squad=squad,
        transfer_penalty=0,
        transfer_limit=0,
    )

    assert set(first_team) == {2, 7, 8, 9, 12, 13, 14, 15, 17, 18, 19}
    assert set(bench) == {1, 5, 6, 11}
    assert set(captain) == {19}
    assert set(vice) == {18}
    assert transfers == {"transfers_in": set(), "transfers_out": set()}

    first_team, bench, captain, vice, transfers = select_team(
        players,
        optimise_key="key",
        existing_squad=squad,
        total_budget=600,
        transfer_penalty=0,
        transfer_limit=1,
    )

    assert set(first_team) == {3, 7, 8, 9, 12, 13, 14, 15, 17, 18, 19}
    assert set(bench) == {2, 5, 6, 11}
    assert set(captain) == {19}
    assert set(vice) == {18}
    assert transfers == {"transfers_in": {3}, "transfers_out": {1}}
Пример #2
0
def test_select_team_bench_order(players):

    _, bench, _, _, _ = select_team(
        players, optimise_key="key", total_budget=600, transfer_penalty=0
    )

    assert bench == [2, 11, 6, 5]
Пример #3
0
def test_select_team_team_constraint(players):

    for player in players:
        if player["element"] in [2, 18, 19]:
            player["team"] = 3

    first_team, bench, captain, vice, transfers = select_team(
        players, optimise_key="key", total_budget=600, transfer_penalty=0
    )

    assert set(first_team) == {3, 7, 8, 9, 12, 13, 14, 15, 17, 18, 19}
    assert set(bench) == {1, 5, 6, 11}
    assert set(captain) == {19}
    assert set(vice) == {18}
Пример #4
0
def test_select_team_transfer_penalty(players):
    squad = [2, 7, 8, 9, 12, 13, 14, 15, 17, 18, 19, 1, 5, 6, 11]

    kwargs = dict(
        optimise_key="key",
        existing_squad=squad,
        total_budget=600,
        first_team_factor=1,
        bench_factor=0,
        captain_factor=1,
        vice_factor=0,
        transfer_penalty=1,
    )

    # transferring 2 for 3 is optimal
    first_team, bench, captain, vice, transfers = select_team(players, **kwargs)
    assert set(first_team) == {3, 7, 8, 9, 12, 13, 14, 15, 17, 18, 19}

    # transferring 2 for 3 is not optimal
    first_team, bench, captain, vice, transfers = select_team(
        players, **{**kwargs, "transfer_penalty": 1.1}
    )
    assert set(first_team) == {2, 7, 8, 9, 12, 13, 14, 15, 17, 18, 19}
Пример #5
0
def test_select_team_from_scratch(players):

    first_team, bench, captain, vice, transfers = select_team(
        players, optimise_key="key", total_budget=600, transfer_penalty=0
    )

    assert set(first_team) == {3, 7, 8, 9, 12, 13, 14, 15, 17, 18, 19}
    assert set(bench) == {2, 5, 6, 11}
    assert set(captain) == {19}
    assert set(vice) == {18}
    assert transfers == {
        "transfers_in": set(first_team + bench),
        "transfers_out": set(),
    }
Пример #6
0
def test_select_team_budget_constraint(players):

    for player in players:
        if player["element"] == 2:
            player["value"] = 41

    first_team, bench, captain, vice, transfers = select_team(
        players,
        optimise_key="key",
        existing_squad=[3, 7, 8, 9, 12, 13, 14, 15, 17, 18, 19, 2, 5, 6, 11],
        total_budget=600,
        transfer_penalty=0,
    )

    assert set(first_team) == {3, 7, 8, 9, 12, 13, 14, 15, 17, 18, 19}
    assert set(bench) == {1, 5, 6, 11}
    assert set(captain) == {19}
    assert set(vice) == {18}
    assert transfers == {"transfers_in": {1}, "transfers_out": {2}}