Release Healer Man 0.1.51
This commit is contained in:
1 parent
79153ca40d
commit
dd583023ac
13 files changed
+405
-31
No files matched your search
@@ -4,6 +4,7 @@ from scripts.balance_lab import (
|
||||
aggregate_class_abilities,
|
||||
aggregate_class_specs,
|
||||
automatic_parties,
|
||||
coverage_parties,
|
||||
random_party,
|
||||
search_bosses,
|
||||
tuning_label,
|
||||
@@ -57,6 +58,44 @@ class BalanceLabControllerTests(unittest.TestCase):
|
||||
"tank", "healer", "damage", "damage", "damage",
|
||||
])
|
||||
|
||||
def test_coverage_parties_include_every_build_with_minimum_unique_parties(self) -> None:
|
||||
builds = [
|
||||
{"id": "tank-a", "source": "wow", "role": "tank"},
|
||||
{"id": "tank-b", "source": "wow", "role": "tank"},
|
||||
{"id": "healer-a", "source": "wow", "role": "healer"},
|
||||
{"id": "healer-b", "source": "wow", "role": "healer"},
|
||||
*({"id": f"damage-{index}", "source": "wow", "role": "damage"} for index in range(7)),
|
||||
]
|
||||
first = coverage_parties(builds, ("wow",), None, 19)
|
||||
second = coverage_parties(builds, ("wow",), None, 19)
|
||||
self.assertEqual(first, second)
|
||||
self.assertEqual(len(first), 3)
|
||||
covered = {member["id"] for configuration in first for member in configuration["party"]}
|
||||
self.assertEqual(covered, {build["id"] for build in builds})
|
||||
signatures = {tuple(member["id"] for member in configuration["party"]) for configuration in first}
|
||||
self.assertEqual(len(signatures), 3)
|
||||
for configuration in first:
|
||||
self.assertEqual([member["role"] for member in configuration["party"]], [
|
||||
"tank", "healer", "damage", "damage", "damage",
|
||||
])
|
||||
self.assertEqual(len({member["id"] for member in configuration["party"]}), 5)
|
||||
|
||||
def test_specific_coverage_uses_fillers_but_guarantees_selected_builds(self) -> None:
|
||||
builds = [
|
||||
{"id": "tank-a", "source": "wow", "role": "tank"},
|
||||
{"id": "tank-b", "source": "wow", "role": "tank"},
|
||||
{"id": "healer-a", "source": "wow", "role": "healer"},
|
||||
{"id": "healer-b", "source": "wow", "role": "healer"},
|
||||
*({"id": f"damage-{index}", "source": "wow", "role": "damage"} for index in range(5)),
|
||||
]
|
||||
selected = ["tank-a", "tank-b", "damage-4"]
|
||||
configurations = coverage_parties(builds, ("wow",), selected, 7)
|
||||
self.assertEqual(len(configurations), 2)
|
||||
observed = [member["id"] for configuration in configurations for member in configuration["party"]]
|
||||
covered = set(observed)
|
||||
self.assertTrue(set(selected).issubset(covered))
|
||||
self.assertTrue(all(observed.count(build_id) == 1 for build_id in selected))
|
||||
|
||||
def test_boss_search_matches_name_dungeon_key_and_source(self) -> None:
|
||||
bosses = [
|
||||
{"key": "gundrak/eck", "name": "Eck the Ferocious", "dungeonTitle": "Gundrak", "category": "wow"},
|
||||
|
||||
Reference in new issue
Block a user