diff --git a/source/PadelMatchTest.mc b/source/PadelMatchTest.mc index 83aa060..d7fc414 100644 --- a/source/PadelMatchTest.mc +++ b/source/PadelMatchTest.mc @@ -139,6 +139,46 @@ function winGameFor(m as PadelMatch, team as Number) as Void { m.pointTo(US); // match started; toggle now locked m.toggleStartingServer(); Test.assertEqualMessage(m.canSetServer(), false, "server locked after first point"); + Test.assertEqualMessage(m.servingQuadrant(), QUAD_UPPER_RIGHT, "server unchanged after locked toggle"); + return true; +} + +(:test) function testGoldenPointSuddenDeath(logger as Logger) as Boolean { + var m = newMatch(); // golden point default + for (var i = 0; i < 3; i += 1) { m.pointTo(US); m.pointTo(THEM); } + Test.assertEqualMessage(m.pointLabel(US), "40", "US 40 at deuce"); + Test.assertEqualMessage(m.pointLabel(THEM), "40", "THEM 40 at deuce"); + m.pointTo(US); // sudden death: next point wins + Test.assertEqualMessage(m.games(US), 1, "US wins game on golden point"); + Test.assertEqualMessage(m.pointLabel(US), "0", "points reset after game"); + return true; +} + +(:test) function testSetWinBySevenFive(logger as Logger) as Boolean { + var m = newMatch(); + for (var g = 0; g < 5; g += 1) { winGameFor(m, US); winGameFor(m, THEM); } + Test.assertEqualMessage(m.games(US), 5, "5-5 games"); + winGameFor(m, US); // 6-5: not a set yet (win by 2) + Test.assertEqualMessage(m.sets(US), 0, "no set at 6-5"); + Test.assertEqualMessage(m.isInTiebreak(), false, "no tiebreak at 6-5"); + Test.assertEqualMessage(m.games(US), 6, "US leads 6-5"); + winGameFor(m, US); // 7-5: set won + Test.assertEqualMessage(m.sets(US), 1, "US wins set 7-5"); + return true; +} + +(:test) function testTiebreakWinByTwo(logger as Logger) as Boolean { + var m = newMatch(); + for (var g = 0; g < 6; g += 1) { winGameFor(m, US); winGameFor(m, THEM); } + Test.assertEqualMessage(m.isInTiebreak(), true, "tiebreak at 6-6"); + for (var p = 0; p < 6; p += 1) { m.pointTo(US); m.pointTo(THEM); } // 6-6 in tiebreak + Test.assertEqualMessage(m.isInTiebreak(), true, "still in tiebreak at 6-6"); + m.pointTo(US); // 7-6: not won (win by 2) + Test.assertEqualMessage(m.isInTiebreak(), true, "7-6 not enough"); + Test.assertEqualMessage(m.sets(US), 0, "no set at 7-6"); + m.pointTo(US); // 8-6: set won + Test.assertEqualMessage(m.isInTiebreak(), false, "tiebreak done at 8-6"); + Test.assertEqualMessage(m.sets(US), 1, "US wins set via 8-6 tiebreak"); return true; }