From 723808a5638a249d9578a597345dcdf52d05c7c5 Mon Sep 17 00:00:00 2001 From: "arthur.valin" Date: Tue, 21 Mar 2023 11:30:28 +0100 Subject: [PATCH 01/14] Correcting bug when computing points --- Sources/bowlin_project/lib/model/AbstractRound.dart | 11 ++++++++++- Sources/bowlin_project/lib/model/GameDetail.dart | 1 + Sources/bowlin_project/lib/model/LastRound.dart | 1 + Sources/bowlin_project/lib/model/Round.dart | 1 - 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Sources/bowlin_project/lib/model/AbstractRound.dart b/Sources/bowlin_project/lib/model/AbstractRound.dart index b636611..b5293db 100644 --- a/Sources/bowlin_project/lib/model/AbstractRound.dart +++ b/Sources/bowlin_project/lib/model/AbstractRound.dart @@ -1,5 +1,7 @@ import 'Player.dart'; +final maxScoreInFrame = 30; + abstract class AbstractRound { int? _firstThrow; int? _secondThrow; @@ -28,7 +30,11 @@ abstract class AbstractRound { int? get points => _points; set points(int? value) { - _points = value; + if((value??0)>=maxScoreInFrame){ + _points=maxScoreInFrame; + }else { + _points = value; + } } @@ -76,11 +82,14 @@ abstract class AbstractRound { } void update(int val){ + print(" ROUND " + number.toString() + "UPDATE : " + val.toString()); + points = (points ?? 0) + val; previousRound?.update(val); } void unsubscribePreviousRound(){ + print("UNSUBSCRIBE"); previousRound?.unsubscribePreviousRound(); previousRound=null; } diff --git a/Sources/bowlin_project/lib/model/GameDetail.dart b/Sources/bowlin_project/lib/model/GameDetail.dart index 4b159e9..36a5389 100644 --- a/Sources/bowlin_project/lib/model/GameDetail.dart +++ b/Sources/bowlin_project/lib/model/GameDetail.dart @@ -102,6 +102,7 @@ class GameDetail { print("====COMPUTE POINTS===="); for(var element in rounds){ points[element.player] = (points[element.player] ?? 0) + (element.points ?? 0); + print(element.points); } computeWinner(); addGameToUsers(); diff --git a/Sources/bowlin_project/lib/model/LastRound.dart b/Sources/bowlin_project/lib/model/LastRound.dart index 71cbb86..15ba3f4 100644 --- a/Sources/bowlin_project/lib/model/LastRound.dart +++ b/Sources/bowlin_project/lib/model/LastRound.dart @@ -38,6 +38,7 @@ class LastRound extends AbstractRound{ @override void computePoints() { points = (firstThrow??0)+(secondThrow??0)+(thirdThrow??0); + print("Compute points : " + points.toString()); if(previousRound?.isStrike()??false){ update(points??0); diff --git a/Sources/bowlin_project/lib/model/Round.dart b/Sources/bowlin_project/lib/model/Round.dart index 6e1d9c3..0e37f70 100644 --- a/Sources/bowlin_project/lib/model/Round.dart +++ b/Sources/bowlin_project/lib/model/Round.dart @@ -31,7 +31,6 @@ class Round extends AbstractRound{ if(previousRound?.isStrike() ?? false){ previousRound?.update(points ?? 0); } - unsubscribePreviousRound(); } @override From af22750cc935b9ca62be03ca4e53c8751fd0bce5 Mon Sep 17 00:00:00 2001 From: "arthur.valin" Date: Tue, 21 Mar 2023 13:18:34 +0100 Subject: [PATCH 02/14] 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 From 8fdfc6414e5efcccd3aec0f0d79b1c8efebc1ed8 Mon Sep 17 00:00:00 2001 From: "arthur.valin" Date: Tue, 21 Mar 2023 13:31:25 +0100 Subject: [PATCH 03/14] Starting CI w/ Emre --- .drone.yml | 8 ++++++++ .../bowlin_project/test/{model_test.dart => model.dart} | 0 .../bowlin_project/test/{widget_test.dart => widget.dart} | 0 3 files changed, 8 insertions(+) rename Sources/bowlin_project/test/{model_test.dart => model.dart} (100%) rename Sources/bowlin_project/test/{widget_test.dart => widget.dart} (100%) diff --git a/.drone.yml b/.drone.yml index 0bda882..05cb36c 100644 --- a/.drone.yml +++ b/.drone.yml @@ -15,6 +15,14 @@ steps: - cd ./Sources/bowlin_project/ - flutter build apk + - name: test + image: cirrusci/flutter:stable + commands: + - cd Sources/bowlin_project/ + - flutter pub get + - flutter test + depends_on: [ app-build ] + # build CONTAINER for sonar on flutter IMAGE - name: code-analysis image: cirrusci/flutter:stable diff --git a/Sources/bowlin_project/test/model_test.dart b/Sources/bowlin_project/test/model.dart similarity index 100% rename from Sources/bowlin_project/test/model_test.dart rename to Sources/bowlin_project/test/model.dart diff --git a/Sources/bowlin_project/test/widget_test.dart b/Sources/bowlin_project/test/widget.dart similarity index 100% rename from Sources/bowlin_project/test/widget_test.dart rename to Sources/bowlin_project/test/widget.dart From e6dd6a90065fc6ecfd4cddcc8369c5d349690351 Mon Sep 17 00:00:00 2001 From: Arthur VALIN Date: Tue, 21 Mar 2023 13:33:19 +0100 Subject: [PATCH 04/14] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'.drone.yml'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 05cb36c..8f1865f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -37,7 +37,7 @@ steps: - export PATH=$SONAR_SCANNER_HOME/bin:$PATH - export SONAR_SCANNER_OPTS="-server" - sonar-scanner -D sonar.projectKey=Bowl_in -D sonar.sources=./Sources/bowlin_project -D sonar.host.url=https://codefirst.iut.uca.fr/sonar - depends_on: [ app-build ] + depends_on: [ test ] # database container deployment - name: deploy-container-postgresql From 470a3f156c99f678208f6e2b9a879470826a06c3 Mon Sep 17 00:00:00 2001 From: Arthur VALIN Date: Tue, 21 Mar 2023 13:45:02 +0100 Subject: [PATCH 05/14] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'.drone.yml'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 8f1865f..c95cda0 100644 --- a/.drone.yml +++ b/.drone.yml @@ -20,7 +20,7 @@ steps: commands: - cd Sources/bowlin_project/ - flutter pub get - - flutter test + - flutter test --coverage depends_on: [ app-build ] # build CONTAINER for sonar on flutter IMAGE From 2adcebbf17937185667cd52a3de1f97a45b67364 Mon Sep 17 00:00:00 2001 From: Arthur VALIN Date: Tue, 21 Mar 2023 13:54:27 +0100 Subject: [PATCH 06/14] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'.drone.yml'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index c95cda0..89c0856 100644 --- a/.drone.yml +++ b/.drone.yml @@ -36,7 +36,7 @@ steps: - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - export PATH=$SONAR_SCANNER_HOME/bin:$PATH - export SONAR_SCANNER_OPTS="-server" - - sonar-scanner -D sonar.projectKey=Bowl_in -D sonar.sources=./Sources/bowlin_project -D sonar.host.url=https://codefirst.iut.uca.fr/sonar + - sonar-scanner -D sonar.projectKey=Bowl_in -D sonar.sources=./Sources/bowlin_project -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.coverageReportPaths=./Sources/bowlin_project/coverage/lcov.info depends_on: [ test ] # database container deployment From 5cdd40cf5737599230e3b284580b24970a48c81a Mon Sep 17 00:00:00 2001 From: Arthur VALIN Date: Tue, 21 Mar 2023 14:02:13 +0100 Subject: [PATCH 07/14] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'.drone.yml'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index 89c0856..edc2351 100644 --- a/.drone.yml +++ b/.drone.yml @@ -20,7 +20,7 @@ steps: commands: - cd Sources/bowlin_project/ - flutter pub get - - flutter test --coverage + - flutter test --machine --coverage depends_on: [ app-build ] # build CONTAINER for sonar on flutter IMAGE @@ -36,7 +36,7 @@ steps: - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - export PATH=$SONAR_SCANNER_HOME/bin:$PATH - export SONAR_SCANNER_OPTS="-server" - - sonar-scanner -D sonar.projectKey=Bowl_in -D sonar.sources=./Sources/bowlin_project -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.coverageReportPaths=./Sources/bowlin_project/coverage/lcov.info + - sonar-scanner -D sonar.projectKey=Bowl_in -D sonar.sources=./Sources/bowlin_project -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.flutter.coverage.reportPath=./Sources/bowlin_project/coverage/lcov.info depends_on: [ test ] # database container deployment From 6d5a4a170abdae8b655342176d24d9f3e929724f Mon Sep 17 00:00:00 2001 From: Arthur VALIN Date: Tue, 21 Mar 2023 14:10:19 +0100 Subject: [PATCH 08/14] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'README.md'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 913fe47..780372a 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,8 @@ [![Security Rating](https://codefirst.iut.uca.fr/sonar/api/project_badges/measure?project=Bowl_in&metric=security_rating&token=88dd5f9f10bb02aede7a82a2bccf8c987af1ecab)](https://codefirst.iut.uca.fr/sonar/dashboard?id=Bowl_in) [![Vulnerabilities](https://codefirst.iut.uca.fr/sonar/api/project_badges/measure?project=Bowl_in&metric=vulnerabilities&token=88dd5f9f10bb02aede7a82a2bccf8c987af1ecab)](https://codefirst.iut.uca.fr/sonar/dashboard?id=Bowl_in) [![Lines of Code](https://codefirst.iut.uca.fr/sonar/api/project_badges/measure?project=Bowl_in&metric=ncloc&token=88dd5f9f10bb02aede7a82a2bccf8c987af1ecab)](https://codefirst.iut.uca.fr/sonar/dashboard?id=Bowl_in) +[![Coverage](https://codefirst.iut.uca.fr/sonar/api/project_badges/measure?project=Bowl_in&metric=coverage&token=88dd5f9f10bb02aede7a82a2bccf8c987af1ecab)](https://codefirst.iut.uca.fr/sonar/dashboard?id=Bowl_in) + --- From bc0a33d54a39dff734e93d3c462ad95f2cc15c3e Mon Sep 17 00:00:00 2001 From: "arthur.valin" Date: Tue, 21 Mar 2023 15:46:49 +0100 Subject: [PATCH 09/14] Testing manager --- Sources/bowlin_project/test/manager_test.dart | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Sources/bowlin_project/test/manager_test.dart diff --git a/Sources/bowlin_project/test/manager_test.dart b/Sources/bowlin_project/test/manager_test.dart new file mode 100644 index 0000000..39e1318 --- /dev/null +++ b/Sources/bowlin_project/test/manager_test.dart @@ -0,0 +1,37 @@ +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 testManager(IManager mgr){ + test("Just strikes", (){ + + expect(mgr.userCurrent, mgr.userMgr.getUsersByName("Dave").first); + expect(mgr.userCurrent, mgr.userMgr.getUserById(mgr.userCurrent.id)); + + List players = [mgr.userCurrent, Guest("Emre")]; + GameDetail gd = GameDetail(mgr.gameMgr.getNextId(), DateTime.now(), null, 135, true, 5, players); + + mgr.gameMgr.addGame(gd); + + expect(gd, mgr.gameMgr.getGameById(gd.id)); + + expect(gd, mgr.gameMgr.getGamesByPlayer(mgr.userCurrent).first); + + expect(gd, mgr.gameMgr.getGamesByPlayerId(mgr.userCurrent.id).first); + + expect(players, mgr.gameMgr.getPlayersByIdGame(gd.id)); + + expect(gd, mgr.gameMgr.getGamesByPlayers(players).first); + + + }); +} + +void main() { + testManager(StubData()); +} \ No newline at end of file From 57b1be8767db72eea8b66b7d352c45b39b3b0ef9 Mon Sep 17 00:00:00 2001 From: "arthur.valin" Date: Tue, 21 Mar 2023 16:15:36 +0100 Subject: [PATCH 10/14] Testing a classic game --- Sources/bowlin_project/test/manager_test.dart | 3 +- Sources/bowlin_project/test/play_test.dart | 96 +++++++++++++++++++ Sources/bowlin_project/test/widget.dart | 30 ------ 3 files changed, 97 insertions(+), 32 deletions(-) delete mode 100644 Sources/bowlin_project/test/widget.dart diff --git a/Sources/bowlin_project/test/manager_test.dart b/Sources/bowlin_project/test/manager_test.dart index 39e1318..8470d3b 100644 --- a/Sources/bowlin_project/test/manager_test.dart +++ b/Sources/bowlin_project/test/manager_test.dart @@ -8,8 +8,7 @@ import 'package:flutter_test/flutter_test.dart'; void testManager(IManager mgr){ - test("Just strikes", (){ - + test("Test manager " + mgr.runtimeType.toString(), (){ expect(mgr.userCurrent, mgr.userMgr.getUsersByName("Dave").first); expect(mgr.userCurrent, mgr.userMgr.getUserById(mgr.userCurrent.id)); diff --git a/Sources/bowlin_project/test/play_test.dart b/Sources/bowlin_project/test/play_test.dart index 3310f39..f00f484 100644 --- a/Sources/bowlin_project/test/play_test.dart +++ b/Sources/bowlin_project/test/play_test.dart @@ -1,5 +1,6 @@ import 'package:bowl_in/model/AbstractRound.dart'; import 'package:bowl_in/model/GameDetail.dart'; +import 'package:bowl_in/model/GamePlayer.dart'; import 'package:bowl_in/model/Guest.dart'; import 'package:bowl_in/model/IManager.dart'; import 'package:bowl_in/model/Player.dart'; @@ -39,5 +40,100 @@ void main() { expect(score, 300); }); + test("Classic game", (){ + 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); + + makeThrow(7, mgr.gamePlayer); + makeThrow(2, mgr.gamePlayer); + + makeThrow(10, mgr.gamePlayer); + + makeThrow(5, mgr.gamePlayer); + makeThrow(5, mgr.gamePlayer); + + makeThrow(5, mgr.gamePlayer); + makeThrow(5, mgr.gamePlayer); + + makeThrow(3, mgr.gamePlayer); + makeThrow(7, mgr.gamePlayer); + + makeThrow(0, mgr.gamePlayer); + makeThrow(7, mgr.gamePlayer); + + makeThrow(10, mgr.gamePlayer); + + makeThrow(0, mgr.gamePlayer); + makeThrow(0, mgr.gamePlayer); + + makeThrow(9, mgr.gamePlayer); + makeThrow(0, mgr.gamePlayer); + makeThrow(0, mgr.gamePlayer); + makeThrow(10, mgr.gamePlayer); + + makeThrow(2, mgr.gamePlayer); + makeThrow(2, mgr.gamePlayer); + + makeThrow(5, mgr.gamePlayer); + makeThrow(5, mgr.gamePlayer); + + makeThrow(10, mgr.gamePlayer); + + makeThrow(3, mgr.gamePlayer); + makeThrow(2, mgr.gamePlayer); + + makeThrow(1, mgr.gamePlayer); + makeThrow(2, mgr.gamePlayer); + + makeThrow(7, mgr.gamePlayer); + makeThrow(1, mgr.gamePlayer); + + makeThrow(4, mgr.gamePlayer); + makeThrow(6, mgr.gamePlayer); + + makeThrow(1, mgr.gamePlayer); + makeThrow(7, mgr.gamePlayer); + + makeThrow(10, mgr.gamePlayer); + makeThrow(6, mgr.gamePlayer); + makeThrow(2, mgr.gamePlayer); + + makeThrow(8, mgr.gamePlayer); + makeThrow(1, mgr.gamePlayer); + + + + final Iterable score = gd + .getRank() + .values; + expect(score.first, 128); + expect(score.last, 95); + + expect(mgr.userCurrent.games.length, 1); + expect(mgr.userCurrent.games.first.id, mgr.gamePlayer.game.id); + + }); + +} + + +void makeThrow(int input, GamePlayer gamePlayer){ + AbstractRound currentRound = gamePlayer.currentRound!; + bool isFinished = currentRound.computeNext(input); + if (currentRound.isSpareOrStrike()) { + gamePlayer.onSpareOrStrike(); + } + gamePlayer.onNext(isFinished, null); } \ No newline at end of file diff --git a/Sources/bowlin_project/test/widget.dart b/Sources/bowlin_project/test/widget.dart deleted file mode 100644 index a0aaeac..0000000 --- a/Sources/bowlin_project/test/widget.dart +++ /dev/null @@ -1,30 +0,0 @@ -// This is a basic Flutter widget test. -// -// To perform an interaction with a widget in your test, use the WidgetTester -// utility in the flutter_test package. For example, you can send tap and scroll -// gestures. You can also use WidgetTester to find child widgets in the widget -// tree, read text, and verify that the values of widget properties are correct. - -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import 'package:bowl_in/main.dart'; - -void main() { - testWidgets('Counter increments smoke test', (WidgetTester tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(const MyApp()); - - // Verify that our counter starts at 0. - expect(find.text('0'), findsOneWidget); - expect(find.text('1'), findsNothing); - - // Tap the '+' icon and trigger a frame. - await tester.tap(find.byIcon(Icons.add)); - await tester.pump(); - - // Verify that our counter has incremented. - expect(find.text('0'), findsNothing); - expect(find.text('1'), findsOneWidget); - }); -} From 9ce2225ca641ba453ae30a74623540d2c48ff20a Mon Sep 17 00:00:00 2001 From: Lucas Delanier Date: Tue, 21 Mar 2023 16:34:27 +0100 Subject: [PATCH 11/14] code smells clean --- .../res/drawable-v21/launch_background.xml | 6 - .../main/res/drawable/launch_background.xml | 6 - .../app/src/main/res/values/styles.xml | 9 +- .../bowlin_project/lib/config/app_router.dart | 2 - Sources/bowlin_project/lib/main.dart | 6 - .../bowlin_project/lib/model/GameDetail.dart | 23 ++-- .../lib/model/IGameManager.dart | 2 - .../bowlin_project/lib/model/IManager.dart | 3 - .../bowlin_project/lib/model/LastRound.dart | 91 ++++++++-------- Sources/bowlin_project/lib/model/Round.dart | 37 +++---- Sources/bowlin_project/lib/model/Stat.dart | 21 ++-- .../lib/model/StubManager/AuthManager.dart | 5 +- .../lib/model/StubManager/GameManager.dart | 2 - .../lib/model/StubManager/StubData.dart | 72 ++---------- .../lib/model/StubManager/UserManager.dart | 3 - .../lib/views/ingame_screen.dart | 18 +-- .../lib/views/ingame_screen2.dart | 8 +- .../lib/views/welcome_screen.dart | 4 +- .../lib/widgets/button_new_party.dart | 16 +-- .../lib/widgets/ingame_widgets.dart | 103 ++++++++++-------- 20 files changed, 160 insertions(+), 277 deletions(-) diff --git a/Sources/bowlin_project/android/app/src/main/res/drawable-v21/launch_background.xml b/Sources/bowlin_project/android/app/src/main/res/drawable-v21/launch_background.xml index 1cb7aa2..0430efb 100644 --- a/Sources/bowlin_project/android/app/src/main/res/drawable-v21/launch_background.xml +++ b/Sources/bowlin_project/android/app/src/main/res/drawable-v21/launch_background.xml @@ -3,10 +3,4 @@ - - diff --git a/Sources/bowlin_project/android/app/src/main/res/drawable/launch_background.xml b/Sources/bowlin_project/android/app/src/main/res/drawable/launch_background.xml index 8403758..8af0f98 100644 --- a/Sources/bowlin_project/android/app/src/main/res/drawable/launch_background.xml +++ b/Sources/bowlin_project/android/app/src/main/res/drawable/launch_background.xml @@ -3,10 +3,4 @@ - - diff --git a/Sources/bowlin_project/android/app/src/main/res/values/styles.xml b/Sources/bowlin_project/android/app/src/main/res/values/styles.xml index 5fac679..45578d6 100644 --- a/Sources/bowlin_project/android/app/src/main/res/values/styles.xml +++ b/Sources/bowlin_project/android/app/src/main/res/values/styles.xml @@ -1,17 +1,10 @@ - - diff --git a/Sources/bowlin_project/lib/config/app_router.dart b/Sources/bowlin_project/lib/config/app_router.dart index 1bc45be..5ac59c7 100644 --- a/Sources/bowlin_project/lib/config/app_router.dart +++ b/Sources/bowlin_project/lib/config/app_router.dart @@ -1,8 +1,6 @@ import 'package:bowl_in/model/AbstractRound.dart'; import 'package:bowl_in/model/GameDetail.dart'; -import 'package:bowl_in/model/Round.dart'; import 'package:bowl_in/views/ingame_screen2.dart'; -import 'package:bowl_in/widgets/button_new_party.dart'; import 'package:flutter/cupertino.dart'; import 'package:go_router/go_router.dart'; diff --git a/Sources/bowlin_project/lib/main.dart b/Sources/bowlin_project/lib/main.dart index 1046f67..50a8162 100644 --- a/Sources/bowlin_project/lib/main.dart +++ b/Sources/bowlin_project/lib/main.dart @@ -1,11 +1,5 @@ -import 'package:bowl_in/views/game_screen.dart'; -import 'package:bowl_in/views/ingame_screen.dart'; -import 'package:bowl_in/views/main_screen.dart'; -import 'package:bowl_in/views/rank_screen.dart'; -import 'package:bowl_in/views/welcome_screen.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:go_router/go_router.dart'; import 'package:bowl_in/config/app_router.dart'; import 'model/IManager.dart'; diff --git a/Sources/bowlin_project/lib/model/GameDetail.dart b/Sources/bowlin_project/lib/model/GameDetail.dart index 36a5389..9291a99 100644 --- a/Sources/bowlin_project/lib/model/GameDetail.dart +++ b/Sources/bowlin_project/lib/model/GameDetail.dart @@ -1,8 +1,6 @@ import 'package:bowl_in/model/AbstractRound.dart'; import 'package:bowl_in/model/Game.dart'; -import 'package:bowl_in/model/GamePlayer.dart'; import 'package:bowl_in/model/LastRound.dart'; - import 'Player.dart'; import 'Round.dart'; import 'User.dart'; @@ -29,7 +27,6 @@ class GameDetail { players.forEach((element) { this.rounds.add(LastRound(null, null, 0, element, 10, null)); }); - } // Getters and setters @@ -81,27 +78,27 @@ class GameDetail { _players = value; } - Map get points => _points; - void addGameToUsers(){ - for(var p in players){ - if(p is User){ + void addGameToUsers() { + for (var p in players) { + if (p is User) { p.games.add(Game(this.id, this.time, points[p] ?? 0, true, players)); p.stat.updateStats(this, p); } } } - void computeWinner(){ + void computeWinner() { print(getRank().entries.first.key.name); this.winner = getRank().entries.first.key; } - void computeScores(){ + void computeScores() { print("====COMPUTE POINTS===="); - for(var element in rounds){ - points[element.player] = (points[element.player] ?? 0) + (element.points ?? 0); + for (var element in rounds) { + points[element.player] = + (points[element.player] ?? 0) + (element.points ?? 0); print(element.points); } computeWinner(); @@ -109,8 +106,8 @@ class GameDetail { } Map getRank() { - var sortedByValueMap = Map.fromEntries( - points.entries.toList()..sort((e1, e2) => e2.value.compareTo(e1.value))); + var sortedByValueMap = Map.fromEntries(points.entries.toList() + ..sort((e1, e2) => e2.value.compareTo(e1.value))); return sortedByValueMap; } } diff --git a/Sources/bowlin_project/lib/model/IGameManager.dart b/Sources/bowlin_project/lib/model/IGameManager.dart index 6040d3c..2b4eff8 100644 --- a/Sources/bowlin_project/lib/model/IGameManager.dart +++ b/Sources/bowlin_project/lib/model/IGameManager.dart @@ -1,9 +1,7 @@ import 'GameDetail.dart'; import 'Player.dart'; -import 'User.dart'; abstract class IGameManager { - // Methods GameDetail getGameById(int id); List getGamesByPlayerId(int id); List getGamesByPlayer(Player user); diff --git a/Sources/bowlin_project/lib/model/IManager.dart b/Sources/bowlin_project/lib/model/IManager.dart index 00ecb8c..27ea88c 100644 --- a/Sources/bowlin_project/lib/model/IManager.dart +++ b/Sources/bowlin_project/lib/model/IManager.dart @@ -1,11 +1,8 @@ import 'package:bowl_in/model/GameDetail.dart'; import 'package:bowl_in/model/GamePlayer.dart'; - import 'User.dart'; -import 'Game.dart'; import 'IUserManager.dart'; import 'IGameManager.dart'; -import 'Game.dart'; abstract class IManager { late User _userCurrent; diff --git a/Sources/bowlin_project/lib/model/LastRound.dart b/Sources/bowlin_project/lib/model/LastRound.dart index 15ba3f4..45994e3 100644 --- a/Sources/bowlin_project/lib/model/LastRound.dart +++ b/Sources/bowlin_project/lib/model/LastRound.dart @@ -1,11 +1,10 @@ import 'package:bowl_in/model/AbstractRound.dart'; -import 'Player.dart'; - -class LastRound extends AbstractRound{ +class LastRound extends AbstractRound { int? _thirdThrow; - LastRound(super.firstThrow, super.secondThrow, super.points, super.player, super.number, this._thirdThrow); + LastRound(super.firstThrow, super.secondThrow, super.points, super.player, + super.number, this._thirdThrow); int? get thirdThrow => _thirdThrow; @@ -15,21 +14,21 @@ class LastRound extends AbstractRound{ @override bool computeNext(int val) { - if(firstThrow==null){ - firstThrow=val; - if(previousRound?.isSpare() ?? false){ + if (firstThrow == null) { + firstThrow = val; + if (previousRound?.isSpare() ?? false) { previousRound?.update(val); } return false; - }else if(secondThrow==null){ - secondThrow=val; - if ((firstThrow??0)+(secondThrow??0)<10){ + } else if (secondThrow == null) { + secondThrow = val; + if ((firstThrow ?? 0) + (secondThrow ?? 0) < 10) { computePoints(); - return true ; + return true; } return false; - }else if((firstThrow??0)+(secondThrow??0)>=10){ - thirdThrow=val; + } else if ((firstThrow ?? 0) + (secondThrow ?? 0) >= 10) { + thirdThrow = val; } computePoints(); return true; @@ -37,36 +36,36 @@ class LastRound extends AbstractRound{ @override void computePoints() { - points = (firstThrow??0)+(secondThrow??0)+(thirdThrow??0); + points = (firstThrow ?? 0) + (secondThrow ?? 0) + (thirdThrow ?? 0); print("Compute points : " + points.toString()); - if(previousRound?.isStrike()??false){ - update(points??0); + if (previousRound?.isStrike() ?? false) { + update(points ?? 0); } unsubscribePreviousRound(); } @override - bool shotIsStrike(){ - if(firstThrow==null){ + bool shotIsStrike() { + if (firstThrow == null) { return true; - }else if(secondThrow==null){ - return firstThrow==10; - }else{ - return secondThrow==10; + } else if (secondThrow == null) { + return firstThrow == 10; + } else { + return secondThrow == 10; } } @override int getNbSpares() { int nb = 0; - if(firstThrow!=10){ - if((firstThrow??0)+(secondThrow??0)==10){ - nb+=1; + if (firstThrow != 10) { + if ((firstThrow ?? 0) + (secondThrow ?? 0) == 10) { + nb += 1; } - }else{ - if((thirdThrow??0)+(secondThrow??0)==10) { - nb+=1; + } else { + if ((thirdThrow ?? 0) + (secondThrow ?? 0) == 10) { + nb += 1; } } return nb; @@ -75,17 +74,17 @@ class LastRound extends AbstractRound{ @override int getNbStrike() { int nb = 0; - if(firstThrow==10){ - nb+=1; - if(secondThrow==10){ - nb+=1; - if(thirdThrow==10) { - nb+=1; + if (firstThrow == 10) { + nb += 1; + if (secondThrow == 10) { + nb += 1; + if (thirdThrow == 10) { + nb += 1; } } - }else{ - if(thirdThrow==10) { - nb+=1; + } else { + if (thirdThrow == 10) { + nb += 1; } } return nb; @@ -93,23 +92,21 @@ class LastRound extends AbstractRound{ @override int getPinsKnockedDown() { - return (firstThrow??0)+(secondThrow??0)+(thirdThrow??0); + return (firstThrow ?? 0) + (secondThrow ?? 0) + (thirdThrow ?? 0); } - @override int getMaxPinsThisShot() { - if(firstThrow==null){ + if (firstThrow == null) { return 10; - }else if(firstThrow==10 && secondThrow==null){ + } else if (firstThrow == 10 && secondThrow == null) { return 10; - }else if(secondThrow==null){ - return 10 - (firstThrow??0); - }else if(secondThrow==10){ + } else if (secondThrow == null) { + return 10 - (firstThrow ?? 0); + } else if (secondThrow == 10) { return 10; - }else{ - return 10 - (secondThrow??0); + } else { + return 10 - (secondThrow ?? 0); } } - } diff --git a/Sources/bowlin_project/lib/model/Round.dart b/Sources/bowlin_project/lib/model/Round.dart index 0e37f70..3b50946 100644 --- a/Sources/bowlin_project/lib/model/Round.dart +++ b/Sources/bowlin_project/lib/model/Round.dart @@ -1,25 +1,24 @@ import 'package:bowl_in/model/AbstractRound.dart'; -import 'GamePlayer.dart'; -class Round extends AbstractRound{ - - Round(super.firstThrow, super.secondThrow, super.points, super.player, super.number); +class Round extends AbstractRound { + Round(super.firstThrow, super.secondThrow, super.points, super.player, + super.number); @override bool computeNext(int val) { - if(firstThrow==null){ - firstThrow=val; - if(previousRound?.isSpare() ?? false){ + if (firstThrow == null) { + firstThrow = val; + if (previousRound?.isSpare() ?? false) { previousRound?.update(val); unsubscribePreviousRound(); } - if(val==10){ + if (val == 10) { computePoints(); return true; } return false; - }else if(firstThrow!=10 && secondThrow==null){ - secondThrow=val; + } else if (firstThrow != 10 && secondThrow == null) { + secondThrow = val; } computePoints(); return true; @@ -27,20 +26,20 @@ class Round extends AbstractRound{ @override void computePoints() { - points = (firstThrow ?? 0)+(secondThrow ?? 0); - if(previousRound?.isStrike() ?? false){ + points = (firstThrow ?? 0) + (secondThrow ?? 0); + if (previousRound?.isStrike() ?? false) { previousRound?.update(points ?? 0); } } @override - bool shotIsStrike(){ - return firstThrow==null; + bool shotIsStrike() { + return firstThrow == null; } @override int getNbSpares() { - if(isSpare()){ + if (isSpare()) { return 1; } return 0; @@ -48,7 +47,7 @@ class Round extends AbstractRound{ @override int getNbStrike() { - if(isStrike()){ + if (isStrike()) { return 1; } return 0; @@ -56,14 +55,14 @@ class Round extends AbstractRound{ @override int getPinsKnockedDown() { - return (firstThrow ?? 0)+(secondThrow ?? 0); + return (firstThrow ?? 0) + (secondThrow ?? 0); } @override int getMaxPinsThisShot() { - if(firstThrow==null){ + if (firstThrow == null) { return 10; - }else{ + } else { return 10 - (firstThrow ?? 0); } } diff --git a/Sources/bowlin_project/lib/model/Stat.dart b/Sources/bowlin_project/lib/model/Stat.dart index d68fa57..435c421 100644 --- a/Sources/bowlin_project/lib/model/Stat.dart +++ b/Sources/bowlin_project/lib/model/Stat.dart @@ -1,8 +1,6 @@ import 'package:bowl_in/model/GameDetail.dart'; import 'package:bowl_in/model/Player.dart'; -import 'User.dart'; - class Stat { int _nbVictory; int _nbGames; @@ -74,26 +72,25 @@ class Stat { _avgPinsPerRound = value; } - void updateStats(GameDetail gd, Player p){ - nbGames +=1; - if(gd.winner == p){ - nbVictory +=1; + void updateStats(GameDetail gd, Player p) { + nbGames += 1; + if (gd.winner == p) { + nbVictory += 1; } - if((gd.points[p] ?? 0) > highscore){ + if ((gd.points[p] ?? 0) > highscore) { highscore = gd.points[p] ?? 0; } double totalpins = 0; - for(var r in gd.rounds){ - - if(p == r.player){ + for (var r in gd.rounds) { + if (p == r.player) { nbStrikes += r.getNbStrike(); nbSpares += r.getNbSpares(); totalpins = totalpins + r.getPinsKnockedDown(); } } - avgPinsPerRound = ((avgPinsPerRound * (nbGames-1)) + (totalpins/10))/nbGames; - + avgPinsPerRound = + ((avgPinsPerRound * (nbGames - 1)) + (totalpins / 10)) / nbGames; } } diff --git a/Sources/bowlin_project/lib/model/StubManager/AuthManager.dart b/Sources/bowlin_project/lib/model/StubManager/AuthManager.dart index fc93912..2b581dd 100644 --- a/Sources/bowlin_project/lib/model/StubManager/AuthManager.dart +++ b/Sources/bowlin_project/lib/model/StubManager/AuthManager.dart @@ -1,4 +1,5 @@ library StubLib; + import '../IAuthManager.dart'; import '../User.dart'; import 'StubData.dart'; @@ -12,10 +13,10 @@ class AuthManager extends IAuthManager { bool verifiedUser(String mail, String password) { for (var user in parent.players) { if (user is User && user.mail == mail) { - parent.userCurrent = user as User; + parent.userCurrent = user; return true; } } return false; } -} \ No newline at end of file +} diff --git a/Sources/bowlin_project/lib/model/StubManager/GameManager.dart b/Sources/bowlin_project/lib/model/StubManager/GameManager.dart index 511acaf..63c878e 100644 --- a/Sources/bowlin_project/lib/model/StubManager/GameManager.dart +++ b/Sources/bowlin_project/lib/model/StubManager/GameManager.dart @@ -1,11 +1,9 @@ library StubLib; -import '../Game.dart'; import '../IGameManager.dart'; import '../GameDetail.dart'; import '../Player.dart'; import '../User.dart'; -import '../Guest.dart'; import 'StubData.dart'; class GameManager extends IGameManager { diff --git a/Sources/bowlin_project/lib/model/StubManager/StubData.dart b/Sources/bowlin_project/lib/model/StubManager/StubData.dart index 001b928..8b0729c 100644 --- a/Sources/bowlin_project/lib/model/StubManager/StubData.dart +++ b/Sources/bowlin_project/lib/model/StubManager/StubData.dart @@ -51,15 +51,7 @@ class StubData extends IManager { Achievement("Win a game") ], [], - Stat( - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0)), + Stat(0, 0, 0, 0, 0, 0, 0, 0)), User( 9, "Dave", @@ -82,15 +74,7 @@ class StubData extends IManager { Achievement("Win a game") ], [], - Stat( - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0)), + Stat(0, 0, 0, 0, 0, 0, 0, 0)), User( 22, "Louison", @@ -102,15 +86,7 @@ class StubData extends IManager { Achievement("Win a game") ], [], - Stat( - 10, - 12, - 150, - 7, - 6, - 700, - 58.33, - 30.2)), + Stat(10, 12, 150, 7, 6, 700, 58.33, 30.2)), User( 23, "Owen", @@ -122,15 +98,7 @@ class StubData extends IManager { Achievement("Win a game") ], [], - Stat( - 10, - 12, - 10, - 7, - 6, - 700, - 58.33, - 30.2)), + Stat(10, 12, 10, 7, 6, 700, 58.33, 30.2)), User( 24, "LULU", @@ -142,15 +110,7 @@ class StubData extends IManager { Achievement("Win a game") ], [], - Stat( - 10, - 12, - 40, - 7, - 6, - 700, - 58.33, - 30.2)), + Stat(10, 12, 40, 7, 6, 700, 58.33, 30.2)), User( 25, "Raphael", @@ -162,25 +122,9 @@ class StubData extends IManager { Achievement("Win a game") ], [], - Stat( - 10, - 12, - 76, - 7, - 6, - 700, - 58.33, - 30.2)), + Stat(10, 12, 76, 7, 6, 700, 58.33, 30.2)), ], - Stat( - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0)) + Stat(0, 0, 0, 0, 0, 0, 0, 0)) ]; List _gameDetails = []; @@ -229,8 +173,6 @@ class StubData extends IManager { List get rounds => _rounds; - List _games = []; - void _initGame() { // games.add(Game( // gameDetails[0].id, diff --git a/Sources/bowlin_project/lib/model/StubManager/UserManager.dart b/Sources/bowlin_project/lib/model/StubManager/UserManager.dart index c4e7f57..fd8d9e9 100644 --- a/Sources/bowlin_project/lib/model/StubManager/UserManager.dart +++ b/Sources/bowlin_project/lib/model/StubManager/UserManager.dart @@ -1,13 +1,10 @@ library StubLib; import '../IUserManager.dart'; -import '../IAuthManager.dart'; import '../Player.dart'; import '../User.dart'; import 'AuthManager.dart'; import 'StubData.dart'; -import '../Player.dart'; -import '../Stat.dart'; class UserManager extends IUserManager { final StubData parent; diff --git a/Sources/bowlin_project/lib/views/ingame_screen.dart b/Sources/bowlin_project/lib/views/ingame_screen.dart index 6a47b3c..43935ac 100644 --- a/Sources/bowlin_project/lib/views/ingame_screen.dart +++ b/Sources/bowlin_project/lib/views/ingame_screen.dart @@ -1,17 +1,10 @@ import 'package:bowl_in/main.dart'; import 'package:bowl_in/model/GameDetail.dart'; -import 'package:bowl_in/model/GamePlayer.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:go_router/go_router.dart'; import 'package:google_fonts/google_fonts.dart'; - -import '../model/Game.dart'; -import '../model/Guest.dart'; import '../model/Player.dart'; -import '../widgets/button_new_party.dart'; import '../widgets/ingame_widgets.dart'; -import '../widgets/scores_list_widget.dart'; class InGameScreen extends StatefulWidget { const InGameScreen({Key? key}) : super(key: key); @@ -57,12 +50,7 @@ class _InGameScreenState extends State { Spacer(), ElevatedButton( onPressed: () { - GameDetail gd = GameDetail( - -1, - DateTime.now(), - null, - 0, - false, + GameDetail gd = GameDetail(-1, DateTime.now(), null, 0, false, MyApp.controller.userCurrent.id, listPlayers); MyApp.controller.gamePlayer.game = gd; @@ -81,8 +69,8 @@ class _InGameScreenState extends State { width: 7, color: Color(0xff1ABAE0), ), - onPrimary: Colors.transparent, - primary: Colors.transparent, + foregroundColor: Colors.transparent, + backgroundColor: Colors.transparent, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(55), ), diff --git a/Sources/bowlin_project/lib/views/ingame_screen2.dart b/Sources/bowlin_project/lib/views/ingame_screen2.dart index 3d11b9a..1fdbc60 100644 --- a/Sources/bowlin_project/lib/views/ingame_screen2.dart +++ b/Sources/bowlin_project/lib/views/ingame_screen2.dart @@ -3,11 +3,7 @@ import 'package:bowl_in/model/AbstractRound.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; - -import '../model/Round.dart'; -import '../widgets/button_new_party.dart'; import '../widgets/ingame_widgets.dart'; -import '../widgets/scores_list_widget.dart'; class InGameScreen2 extends StatefulWidget { final AbstractRound currentRound; @@ -93,8 +89,8 @@ class _InGameScreen2State extends State { width: 7, color: Color(0xff1ABAE0), ), - onPrimary: Colors.transparent, - primary: Colors.transparent, + foregroundColor: Colors.transparent, + backgroundColor: Colors.transparent, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(55), ), diff --git a/Sources/bowlin_project/lib/views/welcome_screen.dart b/Sources/bowlin_project/lib/views/welcome_screen.dart index 4ee80bf..b09bf14 100644 --- a/Sources/bowlin_project/lib/views/welcome_screen.dart +++ b/Sources/bowlin_project/lib/views/welcome_screen.dart @@ -66,8 +66,8 @@ class ButtonConnexion extends StatelessWidget { width: 7, color: Color(0xffFF419B), ), - onPrimary: Colors.white, - primary: Color(0xffF40375), + backgroundColor: Colors.white, + foregroundColor: Color(0xffF40375), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(35), ), diff --git a/Sources/bowlin_project/lib/widgets/button_new_party.dart b/Sources/bowlin_project/lib/widgets/button_new_party.dart index e31275e..3709cdb 100644 --- a/Sources/bowlin_project/lib/widgets/button_new_party.dart +++ b/Sources/bowlin_project/lib/widgets/button_new_party.dart @@ -3,11 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:go_router/go_router.dart'; import 'package:google_fonts/google_fonts.dart'; - -import '../main.dart'; import '../model/GameDetail.dart'; -import '../model/Player.dart'; -import '../model/User.dart'; import 'ingame_widgets.dart'; class ButtonNewParty extends StatelessWidget { @@ -21,8 +17,8 @@ class ButtonNewParty extends StatelessWidget { width: 4, color: Color(0xffFF419B), ), - onPrimary: Colors.white, - primary: Color(0xffF40375), + backgroundColor: Colors.white, + foregroundColor: Color(0xffF40375), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(35), ), @@ -127,8 +123,8 @@ class NewGameModal extends StatelessWidget { fontWeight: FontWeight.bold, fontSize: 18), ), style: ElevatedButton.styleFrom( - onPrimary: Colors.white, - primary: Color(0xffF40375), + backgroundColor: Colors.white, + foregroundColor: Color(0xffF40375), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), ), @@ -229,8 +225,8 @@ class ButtonJoinParty extends StatelessWidget { width: 4, color: Color(0xff6B6588), ), - onPrimary: Colors.white, - primary: Color(0xff45405D), + backgroundColor: Colors.white, + foregroundColor: Color(0xff45405D), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(35), ), diff --git a/Sources/bowlin_project/lib/widgets/ingame_widgets.dart b/Sources/bowlin_project/lib/widgets/ingame_widgets.dart index 8b9cf57..781f548 100644 --- a/Sources/bowlin_project/lib/widgets/ingame_widgets.dart +++ b/Sources/bowlin_project/lib/widgets/ingame_widgets.dart @@ -1,13 +1,9 @@ import 'dart:ui'; - import 'package:bowl_in/main.dart'; -import 'package:bowl_in/widgets/profil_listpodium_widget.dart'; -import 'package:bowl_in/widgets/scores_list_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:google_fonts/google_fonts.dart'; - import '../model/AbstractRound.dart'; import '../model/GameDetail.dart'; import '../model/Guest.dart'; @@ -170,8 +166,8 @@ class _FinalScoreBoardState extends State { width: 7, color: Color(0xff1ABAE0), ), - onPrimary: Colors.transparent, - primary: Colors.transparent, + backgroundColor: Colors.transparent, + foregroundColor: Colors.transparent, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(55), ), @@ -252,7 +248,8 @@ class PodiumGameOverWidget extends StatelessWidget { class InGameCardConfig extends StatefulWidget { final List listPlayer; - const InGameCardConfig({Key? key, required this.listPlayer}) : super(key: key); + const InGameCardConfig({Key? key, required this.listPlayer}) + : super(key: key); @override State createState() => _InGameCardConfigState(); @@ -264,16 +261,14 @@ class _InGameCardConfigState extends State { super.initState(); } - void onDelete(Player p){ + void onDelete(Player p) { setState(() { - widget.listPlayer.remove(p); }); } - void onReorder(int oldIndex, int newIndex){ + void onReorder(int oldIndex, int newIndex) { setState(() { - if (oldIndex < newIndex) { newIndex -= 1; } @@ -325,7 +320,11 @@ class _InGameCardConfigState extends State { ], ), )), - ListUserInGame(listPlayer: widget.listPlayer, onDelete: onDelete, onReorder: onReorder,), + ListUserInGame( + listPlayer: widget.listPlayer, + onDelete: onDelete, + onReorder: onReorder, + ), Spacer(), Image( image: AssetImage("assets/images/start_sentence.png"), @@ -350,7 +349,7 @@ class _InGameCardConfigState extends State { style: ElevatedButton.styleFrom( elevation: 5, shadowColor: Color(0xffB70056), - primary: Color(0xffF40375), + foregroundColor: Color(0xffF40375), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), ), @@ -367,14 +366,18 @@ class ListUserInGame extends StatefulWidget { final List listPlayer; final Function(Player) onDelete; final Function(int, int) onReorder; - const ListUserInGame({Key? key, required this.listPlayer, required this.onDelete, required this.onReorder}) : super(key: key); + const ListUserInGame( + {Key? key, + required this.listPlayer, + required this.onDelete, + required this.onReorder}) + : super(key: key); @override State createState() => _ListUserInGameState(); } class _ListUserInGameState extends State { - @override Widget build(BuildContext context) { return Padding( @@ -388,10 +391,14 @@ class _ListUserInGameState extends State { ), child: ReorderableListView.builder( itemCount: widget.listPlayer.length, - itemBuilder: (context, index) { - return UserInGame(key:ValueKey(widget.listPlayer[index]) ,player: widget.listPlayer[index], onDelete: widget.onDelete, index: index); - }, - onReorder: widget.onReorder, + itemBuilder: (context, index) { + return UserInGame( + key: ValueKey(widget.listPlayer[index]), + player: widget.listPlayer[index], + onDelete: widget.onDelete, + index: index); + }, + onReorder: widget.onReorder, ), ), RichText( @@ -418,7 +425,12 @@ class UserInGame extends StatefulWidget { final Player player; final Function(Player) onDelete; final int index; - const UserInGame({Key? key, required this.player, required this.onDelete, required this.index}) : super(key: key); + const UserInGame( + {Key? key, + required this.player, + required this.onDelete, + required this.index}) + : super(key: key); @override State createState() => _UserInGameState(); @@ -442,17 +454,17 @@ class _UserInGameState extends State { child: Row( children: [ ReorderableDragStartListener( - index: widget.index, - child : Container( - width: 30, - height: 30, - decoration: BoxDecoration( - borderRadius: BorderRadius.all(Radius.circular(70)), - image: DecorationImage( - image: AssetImage(widget.player.image), fit: BoxFit.cover), + index: widget.index, + child: Container( + width: 30, + height: 30, + decoration: BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(70)), + image: DecorationImage( + image: AssetImage(widget.player.image), fit: BoxFit.cover), + ), ), ), - ), SizedBox( width: 10, ), @@ -472,29 +484,26 @@ class _UserInGameState extends State { ), cursorColor: Colors.purple, textAlign: TextAlign.left, - onChanged: (str)=> widget.player.name=str - , + onChanged: (str) => widget.player.name = str, ), ), ) : SizedBox( width: 220, - child: Text( - widget.player.name, - style: GoogleFonts.roboto( - fontSize: 18, - decoration: TextDecoration.none, - color: Color(0xff241E40)) - ), + child: Text(widget.player.name, + style: GoogleFonts.roboto( + fontSize: 18, + decoration: TextDecoration.none, + color: Color(0xff241E40))), ), - (widget.player is User && (widget.player as User).id == MyApp.controller.userCurrent.id) ? - Icon(Icons.lock, color: Colors.amber) : - GestureDetector( - onTap: () { - widget.onDelete(widget.player); - }, - child: Icon(Icons.close) - ), + (widget.player is User && + (widget.player as User).id == MyApp.controller.userCurrent.id) + ? Icon(Icons.lock, color: Colors.amber) + : GestureDetector( + onTap: () { + widget.onDelete(widget.player); + }, + child: Icon(Icons.close)), Spacer() ], ), @@ -518,8 +527,6 @@ class InGameCardThrow extends StatefulWidget { } class _InGameCardThrowState extends State { - GlobalKey<_NumberPadState> _numberPadKey = GlobalKey(); - void initState() { super.initState(); } From 8855a61c6e2d1a09dc0f9c032dc08b91ab4b894b Mon Sep 17 00:00:00 2001 From: Lucas Delanier Date: Tue, 21 Mar 2023 16:46:08 +0100 Subject: [PATCH 12/14] code smells clean --- .../lib/model/StubManager/StubData.dart | 1 - .../lib/widgets/profil_listpodium_widget.dart | 2 -- .../lib/widgets/scores_list_widget.dart | 1 - Sources/bowlin_project/test/manager_test.dart | 14 +++++--------- 4 files changed, 5 insertions(+), 13 deletions(-) diff --git a/Sources/bowlin_project/lib/model/StubManager/StubData.dart b/Sources/bowlin_project/lib/model/StubManager/StubData.dart index 8b0729c..95b7a21 100644 --- a/Sources/bowlin_project/lib/model/StubManager/StubData.dart +++ b/Sources/bowlin_project/lib/model/StubManager/StubData.dart @@ -2,7 +2,6 @@ library StubLib; import '../Guest.dart'; import '../IManager.dart'; -import '../Game.dart'; import '../IUserManager.dart'; import '../IGameManager.dart'; import '../Player.dart'; diff --git a/Sources/bowlin_project/lib/widgets/profil_listpodium_widget.dart b/Sources/bowlin_project/lib/widgets/profil_listpodium_widget.dart index a4c1a90..62f7e0a 100644 --- a/Sources/bowlin_project/lib/widgets/profil_listpodium_widget.dart +++ b/Sources/bowlin_project/lib/widgets/profil_listpodium_widget.dart @@ -2,9 +2,7 @@ import 'package:bowl_in/widgets/scores_list_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; - import '../main.dart'; -import '../model/Player.dart'; import '../model/User.dart'; class ProfilPodiumWidget extends StatelessWidget { diff --git a/Sources/bowlin_project/lib/widgets/scores_list_widget.dart b/Sources/bowlin_project/lib/widgets/scores_list_widget.dart index c66c665..a9716a9 100644 --- a/Sources/bowlin_project/lib/widgets/scores_list_widget.dart +++ b/Sources/bowlin_project/lib/widgets/scores_list_widget.dart @@ -2,7 +2,6 @@ import 'package:bowl_in/main.dart'; import 'package:bowl_in/widgets/button_new_party.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:go_router/go_router.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:intl/date_symbol_data_local.dart'; import 'package:intl/intl.dart'; diff --git a/Sources/bowlin_project/test/manager_test.dart b/Sources/bowlin_project/test/manager_test.dart index 39e1318..cf3ca24 100644 --- a/Sources/bowlin_project/test/manager_test.dart +++ b/Sources/bowlin_project/test/manager_test.dart @@ -1,4 +1,3 @@ -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'; @@ -6,15 +5,14 @@ import 'package:bowl_in/model/Player.dart'; import 'package:bowl_in/model/StubManager/StubData.dart'; import 'package:flutter_test/flutter_test.dart'; - -void testManager(IManager mgr){ - test("Just strikes", (){ - +void testManager(IManager mgr) { + test("Just strikes", () { expect(mgr.userCurrent, mgr.userMgr.getUsersByName("Dave").first); expect(mgr.userCurrent, mgr.userMgr.getUserById(mgr.userCurrent.id)); List players = [mgr.userCurrent, Guest("Emre")]; - GameDetail gd = GameDetail(mgr.gameMgr.getNextId(), DateTime.now(), null, 135, true, 5, players); + GameDetail gd = GameDetail( + mgr.gameMgr.getNextId(), DateTime.now(), null, 135, true, 5, players); mgr.gameMgr.addGame(gd); @@ -27,11 +25,9 @@ void testManager(IManager mgr){ expect(players, mgr.gameMgr.getPlayersByIdGame(gd.id)); expect(gd, mgr.gameMgr.getGamesByPlayers(players).first); - - }); } void main() { testManager(StubData()); -} \ No newline at end of file +} From f013a32158ab466f18661655e59bcbc7ccc9e632 Mon Sep 17 00:00:00 2001 From: "arthur.valin" Date: Tue, 21 Mar 2023 16:59:28 +0100 Subject: [PATCH 13/14] Testing rounds --- .../bowlin_project/lib/model/LastRound.dart | 8 +- Sources/bowlin_project/lib/model/Stat.dart | 19 +++-- Sources/bowlin_project/test/round_test.dart | 80 +++++++++++++++++++ 3 files changed, 95 insertions(+), 12 deletions(-) create mode 100644 Sources/bowlin_project/test/round_test.dart diff --git a/Sources/bowlin_project/lib/model/LastRound.dart b/Sources/bowlin_project/lib/model/LastRound.dart index 45994e3..5448035 100644 --- a/Sources/bowlin_project/lib/model/LastRound.dart +++ b/Sources/bowlin_project/lib/model/LastRound.dart @@ -101,12 +101,12 @@ class LastRound extends AbstractRound { return 10; } else if (firstThrow == 10 && secondThrow == null) { return 10; - } else if (secondThrow == null) { - return 10 - (firstThrow ?? 0); - } else if (secondThrow == 10) { + } else if ( secondThrow == null ){ + return 10 - ( firstThrow ?? 0 ); + } else if ( ( firstThrow ?? 0 ) + ( secondThrow ?? 0 ) == 10 || secondThrow == 10 ){ return 10; } else { - return 10 - (secondThrow ?? 0); + return 10 - ( secondThrow ?? 0 ); } } } diff --git a/Sources/bowlin_project/lib/model/Stat.dart b/Sources/bowlin_project/lib/model/Stat.dart index 435c421..434b0ff 100644 --- a/Sources/bowlin_project/lib/model/Stat.dart +++ b/Sources/bowlin_project/lib/model/Stat.dart @@ -2,14 +2,14 @@ import 'package:bowl_in/model/GameDetail.dart'; import 'package:bowl_in/model/Player.dart'; class Stat { - int _nbVictory; - int _nbGames; - int _highscore; - int _nbStrikes; - int _nbSpares; - int _nbScore; - double _avgScore; - double _avgPinsPerRound; + int _nbVictory = 0; + int _nbGames = 0; + int _highscore = 0; + int _nbStrikes = 0; + int _nbSpares = 0; + int _nbScore = 0; + double _avgScore = 0; + double _avgPinsPerRound = 0; // Constructor Stat( @@ -23,6 +23,9 @@ class Stat { this._avgPinsPerRound, ); + Stat.empty(); + + // Getters and setters int get nbVictory => _nbVictory; diff --git a/Sources/bowlin_project/test/round_test.dart b/Sources/bowlin_project/test/round_test.dart new file mode 100644 index 0000000..6d5abc6 --- /dev/null +++ b/Sources/bowlin_project/test/round_test.dart @@ -0,0 +1,80 @@ +import 'package:bowl_in/model/LastRound.dart'; +import 'package:bowl_in/model/Round.dart'; +import 'package:bowl_in/model/Stat.dart'; +import 'package:bowl_in/model/User.dart'; +import 'package:flutter_test/flutter_test.dart'; + + +void main() { + test("Test Round", (){ + User u = User(1, "Louison" , "Sources/bowlin_project/assets/images/image_user_pink.png", "loparant@gmail.com", [], [], Stat.empty()); + Round r = Round(null, null, null, u, 1); + + expect(r.getMaxPinsThisShot(), 10); + expect(r.isSpareOrStrike(), false); + + r.computeNext(4); + + expect(r.getMaxPinsThisShot(), 6); + r.computeNext(6); + + + expect(r.isSpare(), true); + expect(r.isSpareOrStrike(), true); + expect(r.isStrike(), false); + expect(r.getNbSpares(), 1); + expect(r.getNbStrike(), 0); + + Round r2 = Round(null, null, null, u, 2); + r2.computeNext(10); + expect(r2.isSpare(), false); + expect(r2.isStrike(), true); + expect(r2.isSpareOrStrike(), true); + expect(r2.getNbSpares(), 0); + expect(r2.getNbStrike(), 1); + + Round r3 = Round(null, null, null, u, 2); + r3.computeNext(2); + r3.computeNext(5); + expect(r3.getPinsKnockedDown(), 7); + }); + + test("Test LastRound", (){ + User u = User(1, "Louison" , "Sources/bowlin_project/assets/images/image_user_pink.png", "loparant@gmail.com", [], [], Stat.empty()); + LastRound r = LastRound(null, null, null, u, 1, null); + + expect(r.getMaxPinsThisShot(), 10); + expect(r.isSpareOrStrike(), false); + r.computeNext(10); + + expect(r.getMaxPinsThisShot(), 10); + r.computeNext(10); + + expect(r.getMaxPinsThisShot(), 10); + r.computeNext(10); + + expect(r.getPinsKnockedDown(), 30); + expect(r.getNbSpares(), 0); + expect(r.getNbStrike(), 3); + + LastRound r2 = LastRound(null, null, null, u, 1, null); + r2.computeNext(1); + expect(r2.getMaxPinsThisShot(), 9); + r2.computeNext(9); + expect(r2.getMaxPinsThisShot(), 10); + r2.computeNext(10); + expect(r2.getPinsKnockedDown(), 20); + expect(r2.getNbSpares(), 1); + expect(r2.getNbStrike(), 1); + + LastRound r3 = LastRound(null, null, null, u, 1, null); + r3.computeNext(10); + r3.computeNext(2); + expect(r3.getMaxPinsThisShot(), 8); + r3.computeNext(8); + expect(r3.getPinsKnockedDown(), 20); + expect(r3.getNbSpares(), 1); + expect(r3.getNbStrike(), 1); + + }); +} \ No newline at end of file From 416e94db353666256dfa1aaf0ee548005c90a4e3 Mon Sep 17 00:00:00 2001 From: "arthur.valin" Date: Tue, 21 Mar 2023 18:29:23 +0100 Subject: [PATCH 14/14] Adding more tests and removing unnecessary attributes from our models --- Sources/bowlin_project/lib/model/Game.dart | 37 +++------------- .../bowlin_project/lib/model/GameDetail.dart | 43 +++---------------- .../lib/model/StubManager/StubData.dart | 21 +++------ Sources/bowlin_project/lib/model/User.dart | 8 +--- .../lib/views/ingame_screen.dart | 2 +- Sources/bowlin_project/test/manager_test.dart | 7 ++- Sources/bowlin_project/test/play_test.dart | 11 ++--- Sources/bowlin_project/test/round_test.dart | 4 +- 8 files changed, 34 insertions(+), 99 deletions(-) diff --git a/Sources/bowlin_project/lib/model/Game.dart b/Sources/bowlin_project/lib/model/Game.dart index 8f6c909..7c73eee 100644 --- a/Sources/bowlin_project/lib/model/Game.dart +++ b/Sources/bowlin_project/lib/model/Game.dart @@ -1,44 +1,17 @@ import 'Player.dart'; class Game { - int _id; - DateTime _date; - int _pointsCurrentUser; - bool _isFinished; - List _players = []; + final int _id; + final DateTime _date; + final int _pointsCurrentUser; + final List _players; // Constructor - Game(this._id, this._date, this._pointsCurrentUser, this._isFinished, + Game(this._id, this._date, this._pointsCurrentUser, this._players); - // Getters and setters int get id => _id; - - set id(int value) { - _id = value; - } - DateTime get date => _date; - - set date(DateTime value) { - _date = value; - } - int get pointsCurrentUser => _pointsCurrentUser; - - set pointsCurrentUser(int value) { - _pointsCurrentUser = value; - } - - bool get isFinished => _isFinished; - - set isFinished(bool value) { - _isFinished = value; - } - List get players => _players; - - set playersId(List value) { - _players = value; - } } diff --git a/Sources/bowlin_project/lib/model/GameDetail.dart b/Sources/bowlin_project/lib/model/GameDetail.dart index 9291a99..51c0cd4 100644 --- a/Sources/bowlin_project/lib/model/GameDetail.dart +++ b/Sources/bowlin_project/lib/model/GameDetail.dart @@ -7,18 +7,15 @@ import 'User.dart'; class GameDetail { int _id; - DateTime _time; + final DateTime _time; Player? _winner; - int _nbPoints; - bool _isFinished; - int _host; - List _rounds = []; - List _players = []; + final int _host; + final List _rounds = []; + final List _players; final Map _points = {}; // Constructor - GameDetail(this._id, this._time, this._winner, this._nbPoints, - this._isFinished, this._host, this._players) { + GameDetail(this._id, this._time, this._winner, this._host, this._players) { for (int i = 1; i <= 9; i++) { players.forEach((element) { this.rounds.add(Round(null, null, 0, element, i)); @@ -38,52 +35,24 @@ class GameDetail { DateTime get time => _time; - set time(DateTime value) { - _time = value; - } - Player? get winner => _winner; set winner(Player? value) { _winner = value; } - int get nbPoints => _nbPoints; - - set nbPoints(int value) { - _nbPoints = value; - } - - bool get isFinished => _isFinished; - - set isFinished(bool value) { - _isFinished = value; - } - int get host => _host; - set host(int value) { - _host = value; - } - List get rounds => _rounds; - set rounds(List value) { - _rounds = value; - } - List get players => _players; - set players(List value) { - _players = value; - } - Map get points => _points; void addGameToUsers() { for (var p in players) { if (p is User) { - p.games.add(Game(this.id, this.time, points[p] ?? 0, true, players)); + p.games.add(Game(this.id, this.time, points[p] ?? 0, players)); p.stat.updateStats(this, p); } } diff --git a/Sources/bowlin_project/lib/model/StubManager/StubData.dart b/Sources/bowlin_project/lib/model/StubManager/StubData.dart index 95b7a21..5bb66b8 100644 --- a/Sources/bowlin_project/lib/model/StubManager/StubData.dart +++ b/Sources/bowlin_project/lib/model/StubManager/StubData.dart @@ -49,8 +49,7 @@ class StubData extends IManager { Achievement("2 strikes in a row"), Achievement("Win a game") ], - [], - Stat(0, 0, 0, 0, 0, 0, 0, 0)), + []), User( 9, "Dave", @@ -72,8 +71,7 @@ class StubData extends IManager { Achievement("2 strikes in a row"), Achievement("Win a game") ], - [], - Stat(0, 0, 0, 0, 0, 0, 0, 0)), + []), User( 22, "Louison", @@ -84,8 +82,7 @@ class StubData extends IManager { Achievement("2 strikes in a row"), Achievement("Win a game") ], - [], - Stat(10, 12, 150, 7, 6, 700, 58.33, 30.2)), + []), User( 23, "Owen", @@ -96,8 +93,7 @@ class StubData extends IManager { Achievement("2 strikes in a row"), Achievement("Win a game") ], - [], - Stat(10, 12, 10, 7, 6, 700, 58.33, 30.2)), + []), User( 24, "LULU", @@ -108,8 +104,7 @@ class StubData extends IManager { Achievement("2 strikes in a row"), Achievement("Win a game") ], - [], - Stat(10, 12, 40, 7, 6, 700, 58.33, 30.2)), + []), User( 25, "Raphael", @@ -120,10 +115,8 @@ class StubData extends IManager { Achievement("2 strikes in a row"), Achievement("Win a game") ], - [], - Stat(10, 12, 76, 7, 6, 700, 58.33, 30.2)), - ], - Stat(0, 0, 0, 0, 0, 0, 0, 0)) + []), + ]) ]; List _gameDetails = []; diff --git a/Sources/bowlin_project/lib/model/User.dart b/Sources/bowlin_project/lib/model/User.dart index b1740aa..b5b1bd7 100644 --- a/Sources/bowlin_project/lib/model/User.dart +++ b/Sources/bowlin_project/lib/model/User.dart @@ -8,12 +8,12 @@ class User extends Player { String _mail; List _achievements = []; List _friends = []; - Stat _stat; + final Stat _stat = Stat.empty(); List games = []; // Constructor User(this._id, String name, String image, this._mail, this._achievements, - this._friends, this._stat) + this._friends) : super(name, image); int get id => _id; @@ -38,8 +38,4 @@ class User extends Player { } Stat get stat => _stat; - - set stat(Stat value) { - _stat = value; - } } diff --git a/Sources/bowlin_project/lib/views/ingame_screen.dart b/Sources/bowlin_project/lib/views/ingame_screen.dart index 43935ac..5bccba5 100644 --- a/Sources/bowlin_project/lib/views/ingame_screen.dart +++ b/Sources/bowlin_project/lib/views/ingame_screen.dart @@ -50,7 +50,7 @@ class _InGameScreenState extends State { Spacer(), ElevatedButton( onPressed: () { - GameDetail gd = GameDetail(-1, DateTime.now(), null, 0, false, + GameDetail gd = GameDetail(-1, DateTime.now(), null, MyApp.controller.userCurrent.id, listPlayers); MyApp.controller.gamePlayer.game = gd; diff --git a/Sources/bowlin_project/test/manager_test.dart b/Sources/bowlin_project/test/manager_test.dart index 17a407b..62b237c 100644 --- a/Sources/bowlin_project/test/manager_test.dart +++ b/Sources/bowlin_project/test/manager_test.dart @@ -1,4 +1,3 @@ -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'; @@ -13,7 +12,11 @@ void testManager(IManager mgr) { List players = [mgr.userCurrent, Guest("Emre")]; GameDetail gd = GameDetail( - mgr.gameMgr.getNextId(), DateTime.now(), null, 135, true, 5, players); + mgr.gameMgr.getNextId(), DateTime.now(), null, mgr.userCurrent.id, players); + + expect(gd.players, players); + expect(gd.host, mgr.userCurrent.id); + mgr.gameMgr.addGame(gd); diff --git a/Sources/bowlin_project/test/play_test.dart b/Sources/bowlin_project/test/play_test.dart index f00f484..4ecbc1e 100644 --- a/Sources/bowlin_project/test/play_test.dart +++ b/Sources/bowlin_project/test/play_test.dart @@ -16,8 +16,6 @@ void main() { -1, DateTime.now(), null, - 0, - false, mgr.userCurrent.id, listPlayers); mgr.gamePlayer.game = gd; @@ -44,12 +42,12 @@ void main() { final IManager mgr = StubData(); final List listPlayers = [mgr.userCurrent, Guest("Lucas")]; + final DateTime dateGame = DateTime.now(); + final GameDetail gd = GameDetail( -1, - DateTime.now(), + dateGame, null, - 0, - false, mgr.userCurrent.id, listPlayers); mgr.gamePlayer.game = gd; @@ -123,6 +121,9 @@ void main() { expect(mgr.userCurrent.games.length, 1); expect(mgr.userCurrent.games.first.id, mgr.gamePlayer.game.id); + expect(mgr.userCurrent.games.first.pointsCurrentUser, 128); + expect(mgr.userCurrent.games.first.date, dateGame); + expect(mgr.userCurrent.games.first.players, listPlayers); }); diff --git a/Sources/bowlin_project/test/round_test.dart b/Sources/bowlin_project/test/round_test.dart index 6d5abc6..ca46b52 100644 --- a/Sources/bowlin_project/test/round_test.dart +++ b/Sources/bowlin_project/test/round_test.dart @@ -7,7 +7,7 @@ import 'package:flutter_test/flutter_test.dart'; void main() { test("Test Round", (){ - User u = User(1, "Louison" , "Sources/bowlin_project/assets/images/image_user_pink.png", "loparant@gmail.com", [], [], Stat.empty()); + User u = User(1, "Louison" , "Sources/bowlin_project/assets/images/image_user_pink.png", "loparant@gmail.com", [], []); Round r = Round(null, null, null, u, 1); expect(r.getMaxPinsThisShot(), 10); @@ -40,7 +40,7 @@ void main() { }); test("Test LastRound", (){ - User u = User(1, "Louison" , "Sources/bowlin_project/assets/images/image_user_pink.png", "loparant@gmail.com", [], [], Stat.empty()); + User u = User(1, "Louison" , "Sources/bowlin_project/assets/images/image_user_pink.png", "loparant@gmail.com", [], []); LastRound r = LastRound(null, null, null, u, 1, null); expect(r.getMaxPinsThisShot(), 10);