From af22750cc935b9ca62be03ca4e53c8751fd0bce5 Mon Sep 17 00:00:00 2001 From: "arthur.valin" Date: Tue, 21 Mar 2023 13:18:34 +0100 Subject: [PATCH] Testing game with only strikes --- .../bowlin_project/lib/model/GamePlayer.dart | 14 ++++-- Sources/bowlin_project/test/play_test.dart | 43 +++++++++++++++++++ 2 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 Sources/bowlin_project/test/play_test.dart diff --git a/Sources/bowlin_project/lib/model/GamePlayer.dart b/Sources/bowlin_project/lib/model/GamePlayer.dart index 8deb5c6..61af1ad 100644 --- a/Sources/bowlin_project/lib/model/GamePlayer.dart +++ b/Sources/bowlin_project/lib/model/GamePlayer.dart @@ -1,3 +1,4 @@ +import 'package:bowl_in/model/AbstractRound.dart'; import 'package:bowl_in/model/IManager.dart'; import 'package:flutter/cupertino.dart'; @@ -20,7 +21,14 @@ class GamePlayer { _game = value; } - void onNext(bool isRoundFinished, BuildContext context) { + AbstractRound? get currentRound { + if (currentRoundIndex < game.rounds.length){ + return game.rounds[currentRoundIndex]; + } + return null; + } + + void onNext(bool isRoundFinished, BuildContext? context) { if (isRoundFinished) { print("++"); currentRoundIndex++; @@ -32,7 +40,7 @@ class GamePlayer { _parent.gameMgr.addGame(game); game.computeScores(); - context.go("/scoreboard", extra: game); + context?.go("/scoreboard", extra: game); } else { print("IN GAME : " + currentRoundIndex.toString()); if (game.rounds[currentRoundIndex] is Round) { @@ -40,7 +48,7 @@ class GamePlayer { } else { print("LAST ROUND"); } - context.pushReplacement("/in-game", + context?.pushReplacement("/in-game", extra: game.rounds[currentRoundIndex]); } } diff --git a/Sources/bowlin_project/test/play_test.dart b/Sources/bowlin_project/test/play_test.dart new file mode 100644 index 0000000..3310f39 --- /dev/null +++ b/Sources/bowlin_project/test/play_test.dart @@ -0,0 +1,43 @@ +import 'package:bowl_in/model/AbstractRound.dart'; +import 'package:bowl_in/model/GameDetail.dart'; +import 'package:bowl_in/model/Guest.dart'; +import 'package:bowl_in/model/IManager.dart'; +import 'package:bowl_in/model/Player.dart'; +import 'package:bowl_in/model/StubManager/StubData.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + test("Just strikes", (){ + final IManager mgr = StubData(); + final List listPlayers = [mgr.userCurrent, Guest("Lucas")]; + + final GameDetail gd = GameDetail( + -1, + DateTime.now(), + null, + 0, + false, + mgr.userCurrent.id, + listPlayers); + mgr.gamePlayer.game = gd; + mgr.gamePlayer.onNext(false, null); + + AbstractRound? currentRound = mgr.gamePlayer.currentRound; + while (currentRound != null) { + bool isFinished = currentRound.computeNext(10); + if (currentRound.isSpareOrStrike()) { + mgr.gamePlayer.onSpareOrStrike(); + } + mgr.gamePlayer.onNext(isFinished, null); + currentRound = mgr.gamePlayer.currentRound; + } + + final int score = gd + .getRank() + .values + .first; + expect(score, 300); + }); + + +} \ No newline at end of file