{ "function": "pongUpdate", "cases": [ { "name": "press-up-holds-up", "args": [ { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Press", "key": "Up" } ], "expected": { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": true, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 } }, { "name": "press-down-holds-down", "args": [ { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Press", "key": "Down" } ], "expected": { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": true }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 } }, { "name": "press-keeps-the-other-key-held", "args": [ { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": true, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Press", "key": "Down" } ], "expected": { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": true, "down": true }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 } }, { "name": "release-up", "args": [ { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": true, "down": true }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Release", "key": "Up" } ], "expected": { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": true }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 } }, { "name": "release-down", "args": [ { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": true, "down": true }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Release", "key": "Down" } ], "expected": { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": true, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 } }, { "name": "release-of-a-key-not-held-changes-nothing", "args": [ { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Release", "key": "Up" } ], "expected": { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 } }, { "name": "press-is-recorded-even-when-the-match-is-over", "args": [ { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Over", "seed": 0, "frame": 0 }, { "tag": "Press", "key": "Up" } ], "expected": { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": true, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Over", "seed": 0, "frame": 0 } }, { "name": "frame-moves-the-ball-and-counts-the-frame", "args": [ { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 41, "y": 26 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 1 } }, { "name": "frame-up-key-moves-the-player-up", "args": [ { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": true, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 41, "y": 26 }, "vel": { "dx": 1, "dy": 1 }, "player": 20, "cpu": 21, "held": { "up": true, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 1 } }, { "name": "frame-down-key-moves-the-player-down", "args": [ { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": true }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 41, "y": 26 }, "vel": { "dx": 1, "dy": 1 }, "player": 22, "cpu": 21, "held": { "up": false, "down": true }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 1 } }, { "name": "frame-both-keys-cancel-out", "args": [ { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": true, "down": true }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 41, "y": 26 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": true, "down": true }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 1 } }, { "name": "player-stops-at-the-top-edge", "args": [ { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 0, "cpu": 21, "held": { "up": true, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 41, "y": 26 }, "vel": { "dx": 1, "dy": 1 }, "player": 0, "cpu": 21, "held": { "up": true, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 1 } }, { "name": "player-stops-at-the-bottom-edge-42", "args": [ { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 42, "cpu": 21, "held": { "up": false, "down": true }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 41, "y": 26 }, "vel": { "dx": 1, "dy": 1 }, "player": 42, "cpu": 21, "held": { "up": false, "down": true }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 1 } }, { "name": "cpu-does-not-move-on-an-odd-frame", "args": [ { "ball": { "x": 40, "y": 40 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 41, "y": 41 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 1 } }, { "name": "cpu-moves-down-toward-the-ball-on-an-even-frame", "args": [ { "ball": { "x": 40, "y": 40 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 1 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 41, "y": 41 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 22, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 2 } }, { "name": "cpu-moves-down-again-on-frame-four", "args": [ { "ball": { "x": 40, "y": 40 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 3 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 41, "y": 41 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 22, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 4 } }, { "name": "cpu-moves-up-toward-the-ball", "args": [ { "ball": { "x": 40, "y": 5 }, "vel": { "dx": 1, "dy": -1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 1 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 41, "y": 4 }, "vel": { "dx": 1, "dy": -1 }, "player": 21, "cpu": 20, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 2 } }, { "name": "cpu-stays-when-centred-on-the-ball", "args": [ { "ball": { "x": 40, "y": 29 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 25, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 1 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 41, "y": 30 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 25, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 2 } }, { "name": "cpu-stops-at-the-bottom-edge", "args": [ { "ball": { "x": 40, "y": 49 }, "vel": { "dx": 1, "dy": -1 }, "player": 21, "cpu": 42, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 1 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 41, "y": 48 }, "vel": { "dx": 1, "dy": -1 }, "player": 21, "cpu": 42, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 2 } }, { "name": "cpu-stops-at-the-top-edge", "args": [ { "ball": { "x": 40, "y": 2 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 0, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 1 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 41, "y": 3 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 0, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 2 } }, { "name": "ball-bounces-off-the-top-wall", "args": [ { "ball": { "x": 40, "y": 0 }, "vel": { "dx": 1, "dy": -1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 41, "y": 1 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 1 } }, { "name": "ball-bounces-off-the-bottom-wall", "args": [ { "ball": { "x": 40, "y": 49 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 41, "y": 48 }, "vel": { "dx": 1, "dy": -1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 1 } }, { "name": "ball-bounces-off-the-player-paddle", "args": [ { "ball": { "x": 3, "y": 24 }, "vel": { "dx": -1, "dy": 1 }, "player": 20, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 3, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 20, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 1 } }, { "name": "player-paddle-catches-the-ball-at-its-last-row", "args": [ { "ball": { "x": 3, "y": 26 }, "vel": { "dx": -1, "dy": 1 }, "player": 20, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 3, "y": 27 }, "vel": { "dx": 1, "dy": 1 }, "player": 20, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 1 } }, { "name": "ball-just-above-the-player-paddle-is-missed", "args": [ { "ball": { "x": 3, "y": 18 }, "vel": { "dx": -1, "dy": 1 }, "player": 20, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 2, "y": 19 }, "vel": { "dx": -1, "dy": 1 }, "player": 20, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 1 } }, { "name": "ball-just-below-the-player-paddle-is-missed", "args": [ { "ball": { "x": 3, "y": 27 }, "vel": { "dx": -1, "dy": 1 }, "player": 20, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 2, "y": 28 }, "vel": { "dx": -1, "dy": 1 }, "player": 20, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 1 } }, { "name": "ball-moving-away-from-the-player-paddle-does-not-bounce", "args": [ { "ball": { "x": 1, "y": 24 }, "vel": { "dx": 1, "dy": 1 }, "player": 20, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 2, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 20, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 1 } }, { "name": "paddle-bounce-uses-the-player-position-after-it-moved", "args": [ { "ball": { "x": 3, "y": 26 }, "vel": { "dx": -1, "dy": 1 }, "player": 20, "cpu": 21, "held": { "up": true, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 2, "y": 27 }, "vel": { "dx": -1, "dy": 1 }, "player": 19, "cpu": 21, "held": { "up": true, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 1 } }, { "name": "ball-bounces-off-the-cpu-paddle", "args": [ { "ball": { "x": 76, "y": 32 }, "vel": { "dx": 1, "dy": -1 }, "player": 21, "cpu": 30, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 76, "y": 31 }, "vel": { "dx": -1, "dy": -1 }, "player": 21, "cpu": 30, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 1 } }, { "name": "ball-passing-above-the-cpu-paddle-is-missed", "args": [ { "ball": { "x": 76, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 30, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 77, "y": 26 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 30, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 1 } }, { "name": "ball-moving-away-from-the-cpu-paddle-does-not-bounce", "args": [ { "ball": { "x": 78, "y": 32 }, "vel": { "dx": -1, "dy": 1 }, "player": 21, "cpu": 30, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 77, "y": 33 }, "vel": { "dx": -1, "dy": 1 }, "player": 21, "cpu": 30, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 1 } }, { "name": "cpu-moves-before-the-ball-meets-its-paddle", "args": [ { "ball": { "x": 76, "y": 36 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 29, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 1 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 76, "y": 37 }, "vel": { "dx": -1, "dy": 1 }, "player": 21, "cpu": 30, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 2 } }, { "name": "cpu-scores-when-the-ball-leaves-on-the-left-and-serves-toward-the-player", "args": [ { "ball": { "x": 0, "y": 25 }, "vel": { "dx": -1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 40, "y": 25 }, "vel": { "dx": -1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 1 }, "status": "Playing", "seed": 1831565813, "frame": 1 } }, { "name": "serve-direction-comes-from-the-seed-odd-value-serves-upward", "args": [ { "ball": { "x": 0, "y": 25 }, "vel": { "dx": -1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 1, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 40, "y": 25 }, "vel": { "dx": -1, "dy": -1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 1 }, "status": "Playing", "seed": 1831565814, "frame": 1 } }, { "name": "player-scores-when-the-ball-leaves-on-the-right-and-serves-toward-the-cpu", "args": [ { "ball": { "x": 79, "y": 10 }, "vel": { "dx": 1, "dy": -1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 1, "cpu": 0 }, "status": "Playing", "seed": 1831565813, "frame": 1 } }, { "name": "scores-add-up", "args": [ { "ball": { "x": 0, "y": 25 }, "vel": { "dx": -1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 2, "cpu": 3 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 40, "y": 25 }, "vel": { "dx": -1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 2, "cpu": 4 }, "status": "Playing", "seed": 1831565813, "frame": 1 } }, { "name": "player-reaching-five-ends-the-match", "args": [ { "ball": { "x": 79, "y": 10 }, "vel": { "dx": 1, "dy": -1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 4, "cpu": 2 }, "status": "Playing", "seed": 0, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 5, "cpu": 2 }, "status": "Over", "seed": 1831565813, "frame": 1 } }, { "name": "cpu-reaching-five-ends-the-match", "args": [ { "ball": { "x": 0, "y": 25 }, "vel": { "dx": -1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 1, "cpu": 4 }, "status": "Playing", "seed": 1, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 40, "y": 25 }, "vel": { "dx": -1, "dy": -1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 1, "cpu": 5 }, "status": "Over", "seed": 1831565814, "frame": 1 } }, { "name": "frame-when-over-changes-nothing", "args": [ { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": true, "down": false }, "score": { "player": 5, "cpu": 1 }, "status": "Over", "seed": 0, "frame": 0 }, { "tag": "Frame" } ], "expected": { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": true, "down": false }, "score": { "player": 5, "cpu": 1 }, "status": "Over", "seed": 0, "frame": 0 } }, { "name": "restart-starts-a-new-match-with-the-same-seed", "args": [ { "ball": { "x": 12, "y": 9 }, "vel": { "dx": -1, "dy": -1 }, "player": 5, "cpu": 30, "held": { "up": true, "down": true }, "score": { "player": 3, "cpu": 2 }, "status": "Playing", "seed": 7, "frame": 99 }, { "tag": "Restart" } ], "expected": { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 7, "frame": 0 } }, { "name": "restart-after-the-match-is-over", "args": [ { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 5, "cpu": 3 }, "status": "Over", "seed": 1831565813, "frame": 321 }, { "tag": "Restart" } ], "expected": { "ball": { "x": 40, "y": 25 }, "vel": { "dx": 1, "dy": 1 }, "player": 21, "cpu": 21, "held": { "up": false, "down": false }, "score": { "player": 0, "cpu": 0 }, "status": "Playing", "seed": 1831565813, "frame": 0 } } ] }