Skip to content

Commit d1d9623

Browse files
committed
Correctly reverse score for fabricated playermatches
1 parent 1e008c8 commit d1d9623

File tree

3 files changed

+61
-4
lines changed

3 files changed

+61
-4
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ write_to = "_version.py"
1313

1414
[project]
1515
name = "tptools"
16-
version = "0.6.0.1"
16+
version = "0.6.1"
1717
authors = [{ name = "martin f. krafft", email = "[email protected]" }]
1818
description = "A set of tools to export data from with TournamentSoftware"
1919
readme = "README.md"

tests/test_tpmatchmaker.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,56 @@ def test_resolve_unmatched_fabricate(
270270
assert len(matchmaker.unmatched) == 0
271271

272272

273+
def test_resolve_unmatched_fabricate_scores_reversed(
274+
matchmaker: TPMatchMaker,
275+
TPPlayerMatchFactory: TPPlayerMatchFactoryType,
276+
tpentry1: TPEntry,
277+
) -> None:
278+
common = {
279+
"matchnr": 1,
280+
"van1": 3001,
281+
"van2": 3002,
282+
}
283+
srcpm1 = TPPlayerMatchFactory(**common | {"planning": 2001, "wn": 1001, "vn": None})
284+
srcpm2 = TPPlayerMatchFactory(
285+
**common
286+
| {
287+
"planning": 2002,
288+
"wn": 1003,
289+
"vn": 1004,
290+
}
291+
)
292+
pm = TPPlayerMatchFactory(
293+
matchnr=2,
294+
planning=1001,
295+
van1=2001,
296+
van2=2002,
297+
winner=1,
298+
team1set1=11,
299+
team2set1=5,
300+
team1set2=11,
301+
team2set2=6,
302+
team1set3=7,
303+
team2set3=11,
304+
team1set4=11,
305+
team2set4=8,
306+
entry=tpentry1,
307+
)
308+
309+
matchmaker.add_playermatch(srcpm1)
310+
matchmaker.add_playermatch(srcpm2)
311+
matchmaker.add_playermatch(pm)
312+
313+
matchmaker.resolve_unmatched()
314+
315+
m = [m for m in matchmaker.matches if m.id == "1-2"][0]
316+
317+
assert m.pm1.get_scores() == m.pm2.get_scores(reversed=True)
318+
319+
assert len(matchmaker.matches) == 2
320+
assert len(matchmaker.unmatched) == 0
321+
322+
273323
def test_resolve_unmatched_fabricate_1st_round(
274324
matchmaker: TPMatchMaker,
275325
pmplayer1: TPPlayerMatch,

tptools/tpmatch.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,9 @@ def _check_score_consistency(self) -> Self:
8282
and len(sc2) == 0
8383
):
8484
return self
85-
# assert (sc1 := self.pm1.get_scores(reversed=self.pm1.winner == 2)) == sc2, (
86-
# f"PlayerMatches have different scorelines: {sc1} vs. {sc2}"
87-
# )
85+
assert (sc1 := self.pm1.get_scores(reversed=self.pm1.winner == 2)) == sc2, (
86+
f"PlayerMatches have different scorelines: {sc1} vs. {sc2}"
87+
)
8888
return self
8989

9090
@model_validator(mode="after")
@@ -384,6 +384,12 @@ def resolve_unmatched(self) -> None:
384384
): # pragma: nocover — there is a missed branch here, but I cannot be
385385
# bothered.
386386
mmlogger.info(f"Fabricating a PlayerMatch to match single {pm!r}")
387+
388+
scores = pm.get_scores(reversed=True)
389+
sup: dict[str, int] = {}
390+
for g, sc in enumerate(scores, 1):
391+
sup |= {f"team{t + 1}set{g}": sc[t] for t in range(2)}
392+
387393
self.add_playermatch(
388394
pm.model_copy(
389395
update={
@@ -395,6 +401,7 @@ def resolve_unmatched(self) -> None:
395401
else None,
396402
"entry": None,
397403
}
404+
| sup
398405
)
399406
)
400407

0 commit comments

Comments
 (0)