From 477bea5aa560063069fea1bd72cd38ada8a4ab0a Mon Sep 17 00:00:00 2001 From: emkartal1 Date: Thu, 9 Mar 2023 13:28:25 +0100 Subject: [PATCH] Correction model (UUID to int), more test and complete function for User and Game Manager --- Sources/bowlin_project/lib/model/Game.dart | 14 +- .../bowlin_project/lib/model/GameDetail.dart | 29 ++- Sources/bowlin_project/lib/model/Guest.dart | 2 +- .../lib/model/IGameManager.dart | 10 +- .../lib/model/IUserManager.dart | 6 +- Sources/bowlin_project/lib/model/Player.dart | 6 +- .../lib/model/StubManager/GameManager.dart | 38 +++- .../lib/model/StubManager/StubData.dart | 94 +++++---- .../lib/model/StubManager/UserManager.dart | 27 ++- Sources/bowlin_project/lib/model/User.dart | 5 +- Sources/bowlin_project/pubspec.lock | 189 +++++++++++------- Sources/bowlin_project/test/model_test.dart | 179 +++++++++++------ 12 files changed, 365 insertions(+), 234 deletions(-) diff --git a/Sources/bowlin_project/lib/model/Game.dart b/Sources/bowlin_project/lib/model/Game.dart index 16cc875..2ae0ffc 100644 --- a/Sources/bowlin_project/lib/model/Game.dart +++ b/Sources/bowlin_project/lib/model/Game.dart @@ -1,20 +1,18 @@ -import 'package:uuid/uuid.dart'; - class Game { - Uuid _id; + int _id; DateTime _time; int _pointsCurrentUser; bool _isFinished; - List _playersId = []; + List _playersId = []; // Constructor Game(this._id, this._time, this._pointsCurrentUser, this._isFinished, this._playersId); // Getters and setters - Uuid get id => _id; + int get id => _id; - set id(Uuid value) { + set id(int value) { _id = value; } @@ -36,9 +34,9 @@ class Game { _isFinished = value; } - List get playersId => _playersId; + List get playersId => _playersId; - set playersId(List value) { + set playersId(List value) { _playersId = value; } } diff --git a/Sources/bowlin_project/lib/model/GameDetail.dart b/Sources/bowlin_project/lib/model/GameDetail.dart index 2085b49..41134e8 100644 --- a/Sources/bowlin_project/lib/model/GameDetail.dart +++ b/Sources/bowlin_project/lib/model/GameDetail.dart @@ -1,17 +1,14 @@ -import 'dart:developer'; - -import 'package:uuid/uuid.dart'; import 'Player.dart'; import 'Round.dart'; class GameDetail { - Uuid _id; + int _id; DateTime _time; - Uuid _winner; + int _winner; int _nbPoints; bool _isFinished; Round? _currentRound; - Uuid _host; + int _host; List _rounds = []; List _players = []; @@ -28,9 +25,9 @@ class GameDetail { this._players); // Getters and setters - Uuid get id => _id; + int get id => _id; - set id(Uuid value) { + set id(int value) { _id = value; } @@ -40,9 +37,9 @@ class GameDetail { _time = value; } - Uuid get winner => _winner; + int get winner => _winner; - set winner(Uuid value) { + set winner(int value) { _winner = value; } @@ -64,9 +61,9 @@ class GameDetail { _currentRound = value; } - Uuid get host => _host; + int get host => _host; - set host(Uuid value) { + set host(int value) { _host = value; } @@ -82,10 +79,10 @@ class GameDetail { _players = value; } - int getPointByPlayerId(Uuid uuid) { + int getPointByPlayerId(int id) { int pointPlayer = 0; for (var player in players) { - if (player.id == uuid) { + if (player.id == id) { for (var element in rounds) { if (element.player == player) { pointPlayer += element.points; @@ -97,8 +94,8 @@ class GameDetail { throw Exception("Player not in the game."); } - Map getRank() { - Map rank = {}; + Map getRank() { + Map rank = {}; for (var player in players) { rank.addAll({player.id: this.getPointByPlayerId(player.id)}); diff --git a/Sources/bowlin_project/lib/model/Guest.dart b/Sources/bowlin_project/lib/model/Guest.dart index 848b3f7..5248bf7 100644 --- a/Sources/bowlin_project/lib/model/Guest.dart +++ b/Sources/bowlin_project/lib/model/Guest.dart @@ -4,5 +4,5 @@ import 'Player.dart'; class Guest extends Player { // Constructor - Guest(Uuid id, String image, String name) : super(id, image, name); + Guest(int id, String image, String name) : super(id, image, name); } diff --git a/Sources/bowlin_project/lib/model/IGameManager.dart b/Sources/bowlin_project/lib/model/IGameManager.dart index e60b561..e84a682 100644 --- a/Sources/bowlin_project/lib/model/IGameManager.dart +++ b/Sources/bowlin_project/lib/model/IGameManager.dart @@ -1,15 +1,13 @@ -import 'package:uuid/uuid.dart'; -import 'package:uuid/uuid_util.dart'; import 'GameDetail.dart'; import 'Player.dart'; import 'User.dart'; abstract class IGameManager { // Methods - GameDetail getGameById(Uuid id); - List getGamesByPlayerId(Uuid id); + GameDetail getGameById(int id); + List getGamesByPlayerId(int id); List getGamesByPlayer(Player user); List getGamesByPlayers(List users); - List getPlayersByIdGame(Uuid id); - Map getRankByIdGame(Uuid id); + List getPlayersByIdGame(int id); + Map getRankByIdGame(int id); } diff --git a/Sources/bowlin_project/lib/model/IUserManager.dart b/Sources/bowlin_project/lib/model/IUserManager.dart index 5254de7..ab07ec0 100644 --- a/Sources/bowlin_project/lib/model/IUserManager.dart +++ b/Sources/bowlin_project/lib/model/IUserManager.dart @@ -1,5 +1,5 @@ import 'package:uuid/uuid.dart'; -import 'User.dart'; +import 'Player.dart'; import 'IAuthManager.dart'; abstract class IUserManager { @@ -10,6 +10,6 @@ abstract class IUserManager { // Methods IAuthManager get authMgr => _authMgr; - List getUsersByName(String name); - User getUserById(Uuid id); + List getUsersByName(String name); + Player getUserById(int id); } diff --git a/Sources/bowlin_project/lib/model/Player.dart b/Sources/bowlin_project/lib/model/Player.dart index 7a60d1b..ebf0963 100644 --- a/Sources/bowlin_project/lib/model/Player.dart +++ b/Sources/bowlin_project/lib/model/Player.dart @@ -1,7 +1,5 @@ -import 'package:uuid/uuid.dart'; - class Player { - final Uuid _id; + final int _id; String _name; String _image; @@ -9,7 +7,7 @@ class Player { Player(this._id, this._name, this._image); // Getters and setters - Uuid get id => _id; + int get id => _id; String get name => _name; diff --git a/Sources/bowlin_project/lib/model/StubManager/GameManager.dart b/Sources/bowlin_project/lib/model/StubManager/GameManager.dart index a81b9bf..c679ef7 100644 --- a/Sources/bowlin_project/lib/model/StubManager/GameManager.dart +++ b/Sources/bowlin_project/lib/model/StubManager/GameManager.dart @@ -7,17 +7,15 @@ import '../Player.dart'; import '../User.dart'; import '../Guest.dart'; import 'StubData.dart'; -import 'package:uuid/uuid.dart'; class GameManager extends IGameManager { - List games = []; final StubData parent; // Constructor GameManager(this.parent); // Methods - GameDetail getGameById(Uuid id) { + GameDetail getGameById(int id) { for (var element in parent.gameDetails) { if (element.id == id) { return element; @@ -26,29 +24,47 @@ class GameManager extends IGameManager { throw Exception("Game not found."); } - List getGamesByPlayerId(Uuid id) { + List getGamesByPlayerId(int id) { List games = []; for (var element in parent.gameDetails) { - if (element.players.contains(id)) { - games.add(element); + for (Player player in element.players) { + if (player.id == id) { + games.add(element); + break; + } } } - throw Exception("Game not found."); + return games; } List getGamesByPlayer(Player user) { - return []; + List games = []; + for (var element in parent.gameDetails) { + for (Player player in element.players) { + if (player.id == user.id) { + games.add(element); + break; + } + } + } + return games; } List getGamesByPlayers(List users) { - return []; + List games = []; + for (var element in parent.gameDetails) { + if (element.players.toSet().containsAll(users.toSet())) { + games.add(element); + } + } + return games; } - List getPlayersByIdGame(Uuid id) { + List getPlayersByIdGame(int id) { return []; } - Map getRankByIdGame(Uuid id) { + Map getRankByIdGame(int id) { return {}; } } diff --git a/Sources/bowlin_project/lib/model/StubManager/StubData.dart b/Sources/bowlin_project/lib/model/StubManager/StubData.dart index 0be09df..27b6693 100644 --- a/Sources/bowlin_project/lib/model/StubManager/StubData.dart +++ b/Sources/bowlin_project/lib/model/StubManager/StubData.dart @@ -13,7 +13,6 @@ import '../GameDetail.dart'; import '../Stat.dart'; import 'UserManager.dart'; import 'GameManager.dart'; -import 'package:uuid/uuid.dart'; class StubData extends IManager { late IUserManager _userMgr; @@ -25,21 +24,23 @@ class StubData extends IManager { _initRounds(); _initGameDetails(); _initGame(); + } - List players = [ - Player(Uuid(), "Mathieu", "./assets/images/image_user_cyan.png"), - Player(Uuid(), "Robin", "./assets/images/image_user_purple.png"), - Player(Uuid(), "Lucas", "./assets/images/image_user_red.png"), - Player(Uuid(), "Emre", "./assets/images/image_user_blue.png"), - Player(Uuid(), "Louison", "./assets/images/image_user_cyan.png"), - Player(Uuid(), "Arthur", "./assets/images/image_user_yellow.png"), - Player(Uuid(), "David", "./assets/images/image_user_pink.png"), - ]; + IUserManager get userMgr => _userMgr; + + IGameManager get gameMgr => _gameMgr; - List users = [ + List players = [ + Player(1, "Mathieu", "./assets/images/image_user_cyan.png"), + Player(2, "Robin", "./assets/images/image_user_purple.png"), + Player(3, "Lucas", "./assets/images/image_user_red.png"), + Player(4, "Emre", "./assets/images/image_user_blue.png"), + Player(5, "Louison", "./assets/images/image_user_cyan.png"), + Player(6, "Arthur", "./assets/images/image_user_yellow.png"), + Player(7, "David", "./assets/images/image_user_pink.png"), User( - Uuid(), + 8, "Emre", "https://fastly.picsum.photos/id/1060/2000/2000.jpg?hmac=_RrU8GpkCDUlVKfgyWE-GcX-GS5TKNyUzdFbJAGXHV4", "emre.kartal@etu.uca.fr", @@ -49,9 +50,10 @@ class StubData extends IManager { Achievement("Win a game") ], [], - Stat(10, 2, 12, 130, 7, 6, 700, 58.33, 30.2)), + Stat(10, 2, 12, 130, 7, 6, 700, 58.33, 30.2) + ), User( - Uuid(), + 9, "Dave", "https://fastly.picsum.photos/id/820/2000/2000.jpg?hmac=Ctxx2feJNZnG1S7UPx_YrWcEw89tKb7fR8i1W-VTOz4", "david.d_almeida@etu.uca.fr", @@ -61,45 +63,51 @@ class StubData extends IManager { Achievement("Win a game") ], [], - Stat(2, 7, 9, 80, 4, 3, 250, 27.77, 10.55)) + Stat(2, 7, 9, 80, 4, 3, 250, 27.77, 10.55) + ) ]; - List gameDetails = []; + List _gameDetails = []; void _initGameDetails() { - var uui = Uuid(); - gameDetails.add(GameDetail(Uuid(), DateTime.now(), users[0].id, 123, true, - null, users[0].id, rounds, [players[0], players[1]])); - gameDetails.add(GameDetail(Uuid(), DateTime.now(), users[1].id, 113, true, - null, users[1].id, rounds, [players[0], players[1]])); + gameDetails.add(GameDetail(1, DateTime.now(), players[7].id, 123, true, + null, players[7].id, rounds, [players[0], players[1]])); + gameDetails.add(GameDetail(2, DateTime.now(), players[8].id, 113, true, + null, players[8].id, rounds, [players[0], players[1], players[2]])); } - List rounds = []; + List get gameDetails => _gameDetails; + + List _rounds = []; void _initRounds() { - rounds.add(Round(4, 5, 9, users[0])); - rounds.add(Round(4, 1, 5, users[1])); - rounds.add(Round(4, 5, 9, users[0])); - rounds.add(Round(4, 1, 5, users[1])); - rounds.add(Round(4, 5, 9, users[0])); - rounds.add(Round(1, 5, 6, users[1])); - rounds.add(Round(4, 1, 5, users[0])); - rounds.add(Round(1, 5, 6, users[1])); - rounds.add(Round(4, 5, 9, users[0])); - rounds.add(Round(9, 0, 9, users[1])); - rounds.add(Round(4, 5, 9, users[0])); - rounds.add(Round(4, 5, 9, users[1])); - rounds.add(Round(4, 2, 6, users[0])); - rounds.add(Round(3, 5, 8, users[1])); - rounds.add(Round(4, 5, 9, users[0])); - rounds.add(Round(4, 5, 9, users[1])); - rounds.add(Round(1, 5, 6, users[0])); - rounds.add(Round(4, 5, 9, users[1])); - rounds.add(Round(4, 5, 9, users[0])); - rounds.add(Round(4, 1, 5, users[1])); + rounds.add(Round(4, 5, 9, players[7])); + rounds.add(Round(4, 1, 5, players[8])); + rounds.add(Round(4, 5, 9, players[7])); + rounds.add(Round(4, 1, 5, players[8])); + rounds.add(Round(4, 5, 9, players[7])); + rounds.add(Round(1, 5, 6, players[8])); + rounds.add(Round(4, 1, 5, players[7])); + rounds.add(Round(1, 5, 6, players[8])); + rounds.add(Round(4, 5, 9, players[7])); + rounds.add(Round(9, 0, 9, players[8])); + rounds.add(Round(4, 5, 9, players[7])); + rounds.add(Round(4, 5, 9, players[8])); + rounds.add(Round(4, 2, 6, players[7])); + rounds.add(Round(3, 5, 8, players[8])); + rounds.add(Round(4, 5, 9, players[7])); + rounds.add(Round(4, 5, 9, players[8])); + rounds.add(Round(1, 5, 6, players[7])); + rounds.add(Round(4, 5, 9, players[8])); + rounds.add(Round(4, 5, 9, players[7])); + rounds.add(Round(4, 1, 5, players[8])); } + + List get rounds => _rounds; - List games = []; + List _games = []; void _initGame() { games.add(Game(gameDetails[0].id, DateTime.now(), 123, true, [])); games.add(Game(gameDetails[1].id, DateTime.now(), 101, true, [])); } + + List get games => _games; } diff --git a/Sources/bowlin_project/lib/model/StubManager/UserManager.dart b/Sources/bowlin_project/lib/model/StubManager/UserManager.dart index b69c6d8..bdbcdef 100644 --- a/Sources/bowlin_project/lib/model/StubManager/UserManager.dart +++ b/Sources/bowlin_project/lib/model/StubManager/UserManager.dart @@ -3,9 +3,8 @@ import '../IUserManager.dart'; import '../IAuthManager.dart'; import 'AuthManager.dart'; import 'StubData.dart'; -import '../User.dart'; +import '../Player.dart'; import '../Stat.dart'; -import 'package:uuid/uuid.dart'; class UserManager extends IUserManager { final StubData parent; @@ -14,10 +13,26 @@ class UserManager extends IUserManager { UserManager(this.parent):super(AuthManager(parent)); // Methods - List getUsersByName(String name) { - return []; + List getUsersByName(String name) { + List players = []; + for (var player in parent.players) + { + if (player.name == name) + { + players.add(player); + } + } + return players; } - User getUserById(Uuid id) { - return User(Uuid(),"","","",[],[], Stat(10,10,10,10,10,10,10,10,10)); + + Player getUserById(int id) { + for (var player in parent.players) + { + if (player.id == id) + { + return player; + } + } + throw new Exception("Player not found"); } } \ No newline at end of file diff --git a/Sources/bowlin_project/lib/model/User.dart b/Sources/bowlin_project/lib/model/User.dart index 23ccf7c..a9a4069 100644 --- a/Sources/bowlin_project/lib/model/User.dart +++ b/Sources/bowlin_project/lib/model/User.dart @@ -1,4 +1,3 @@ -import 'package:uuid/uuid.dart'; import 'Achievement.dart'; import 'Game.dart'; import 'Player.dart'; @@ -12,7 +11,7 @@ class User extends Player { List games = []; // Constructor - User(Uuid id, String name, String image, this._mail, this._achievements, + User(int id, String name, String image, this._mail, this._achievements, this._friends, this._stat) : super(id, name, image); @@ -37,7 +36,7 @@ class User extends Player { Stat get stat => _stat; - set stats(Stat value) { + set stat(Stat value) { _stat = value; } } diff --git a/Sources/bowlin_project/pubspec.lock b/Sources/bowlin_project/pubspec.lock index 581d755..445d36e 100644 --- a/Sources/bowlin_project/pubspec.lock +++ b/Sources/bowlin_project/pubspec.lock @@ -5,105 +5,120 @@ packages: dependency: transitive description: name: archive - url: "https://pub.dartlang.org" + sha256: d6347d54a2d8028e0437e3c099f66fdb8ae02c4720c1e7534c9f24c10351f85d + url: "https://pub.dev" source: hosted version: "3.3.6" args: dependency: transitive description: name: args - url: "https://pub.dartlang.org" + sha256: "4cab82a83ffef80b262ddedf47a0a8e56ee6fbf7fe21e6e768b02792034dd440" + url: "https://pub.dev" source: hosted version: "2.4.0" async: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + url: "https://pub.dev" source: hosted - version: "2.9.0" + version: "2.10.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" + sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + url: "https://pub.dev" source: hosted version: "1.2.1" checked_yaml: dependency: transitive description: name: checked_yaml - url: "https://pub.dartlang.org" + sha256: "3d1505d91afa809d177efd4eed5bb0eb65805097a1463abdd2add076effae311" + url: "https://pub.dev" source: hosted version: "2.0.2" cli_util: dependency: transitive description: name: cli_util - url: "https://pub.dartlang.org" + sha256: "66f86e916d285c1a93d3b79587d94bd71984a66aac4ff74e524cfa7877f1395c" + url: "https://pub.dev" source: hosted version: "0.3.5" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted version: "1.1.1" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.17.0" convert: dependency: transitive description: name: convert - url: "https://pub.dartlang.org" + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + url: "https://pub.dev" source: hosted version: "3.1.1" crypto: dependency: transitive description: name: crypto - url: "https://pub.dartlang.org" + sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 + url: "https://pub.dev" source: hosted version: "3.0.2" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - url: "https://pub.dartlang.org" + sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be + url: "https://pub.dev" source: hosted version: "1.0.5" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted version: "1.3.1" ffi: dependency: transitive description: name: ffi - url: "https://pub.dartlang.org" + sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978 + url: "https://pub.dev" source: hosted version: "2.0.1" file: dependency: transitive description: name: file - url: "https://pub.dartlang.org" + sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + url: "https://pub.dev" source: hosted version: "6.1.4" flutter: @@ -115,14 +130,16 @@ packages: dependency: "direct dev" description: name: flutter_launcher_icons - url: "https://pub.dartlang.org" + sha256: ce0e501cfc258907842238e4ca605e74b7fd1cdf04b3b43e86c43f3e40a1592c + url: "https://pub.dev" source: hosted version: "0.11.0" flutter_lints: dependency: "direct dev" description: name: flutter_lints - url: "https://pub.dartlang.org" + sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c + url: "https://pub.dev" source: hosted version: "2.0.1" flutter_test: @@ -139,175 +156,200 @@ packages: dependency: "direct main" description: name: go_router - url: "https://pub.dartlang.org" + sha256: b4bb06205ec607278b6fc23db238278417bca84a3905779cc68d1eb7afae37e2 + url: "https://pub.dev" source: hosted version: "6.2.0" google_fonts: dependency: "direct main" description: name: google_fonts - url: "https://pub.dartlang.org" + sha256: "8f099045e2f2a30e4d4d0a35f40c6bc941a8f2ca0e10ad9d214ee9edd3f37483" + url: "https://pub.dev" source: hosted version: "3.0.1" http: dependency: transitive description: name: http - url: "https://pub.dartlang.org" + sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482" + url: "https://pub.dev" source: hosted version: "0.13.5" http_parser: dependency: transitive description: name: http_parser - url: "https://pub.dartlang.org" + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" source: hosted version: "4.0.2" image: dependency: transitive description: name: image - url: "https://pub.dartlang.org" + sha256: "8e9d133755c3e84c73288363e6343157c383a0c6c56fc51afcc5d4d7180306d6" + url: "https://pub.dev" source: hosted version: "3.3.0" js: dependency: transitive description: name: js - url: "https://pub.dartlang.org" + sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + url: "https://pub.dev" source: hosted - version: "0.6.4" + version: "0.6.5" json_annotation: dependency: transitive description: name: json_annotation - url: "https://pub.dartlang.org" + sha256: c33da08e136c3df0190bd5bbe51ae1df4a7d96e7954d1d7249fea2968a72d317 + url: "https://pub.dev" source: hosted version: "4.8.0" lints: dependency: transitive description: name: lints - url: "https://pub.dartlang.org" + sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" + url: "https://pub.dev" source: hosted version: "2.0.1" logging: dependency: transitive description: name: logging - url: "https://pub.dartlang.org" + sha256: "04094f2eb032cbb06c6f6e8d3607edcfcb0455e2bb6cbc010cb01171dcb64e6d" + url: "https://pub.dev" source: hosted version: "1.1.1" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + url: "https://pub.dev" source: hosted - version: "0.12.12" + version: "0.12.13" material_color_utilities: dependency: transitive description: name: material_color_utilities - url: "https://pub.dartlang.org" + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + url: "https://pub.dev" source: hosted - version: "0.1.5" + version: "0.2.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + url: "https://pub.dev" source: hosted version: "1.8.0" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + url: "https://pub.dev" source: hosted version: "1.8.2" path_provider: dependency: transitive description: name: path_provider - url: "https://pub.dartlang.org" + sha256: "04890b994ee89bfa80bf3080bfec40d5a92c5c7a785ebb02c13084a099d2b6f9" + url: "https://pub.dev" source: hosted version: "2.0.13" path_provider_android: dependency: transitive description: name: path_provider_android - url: "https://pub.dartlang.org" + sha256: "7623b7d4be0f0f7d9a8b5ee6879fc13e4522d4c875ab86801dee4af32b54b83e" + url: "https://pub.dev" source: hosted version: "2.0.23" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - url: "https://pub.dartlang.org" + sha256: eec003594f19fe2456ea965ae36b3fc967bc5005f508890aafe31fa75e41d972 + url: "https://pub.dev" source: hosted version: "2.1.2" path_provider_linux: dependency: transitive description: name: path_provider_linux - url: "https://pub.dartlang.org" + sha256: "525ad5e07622d19447ad740b1ed5070031f7a5437f44355ae915ff56e986429a" + url: "https://pub.dev" source: hosted version: "2.1.9" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - url: "https://pub.dartlang.org" + sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec" + url: "https://pub.dev" source: hosted version: "2.0.6" path_provider_windows: dependency: transitive description: name: path_provider_windows - url: "https://pub.dartlang.org" + sha256: "642ddf65fde5404f83267e8459ddb4556316d3ee6d511ed193357e25caa3632d" + url: "https://pub.dev" source: hosted version: "2.1.4" petitparser: dependency: transitive description: name: petitparser - url: "https://pub.dartlang.org" + sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4" + url: "https://pub.dev" source: hosted version: "5.1.0" platform: dependency: transitive description: name: platform - url: "https://pub.dartlang.org" + sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" + url: "https://pub.dev" source: hosted version: "3.1.0" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - url: "https://pub.dartlang.org" + sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc" + url: "https://pub.dev" source: hosted version: "2.1.4" pointycastle: dependency: transitive description: name: pointycastle - url: "https://pub.dartlang.org" + sha256: db7306cf0249f838d1a24af52b5a5887c5bf7f31d8bb4e827d071dc0939ad346 + url: "https://pub.dev" source: hosted version: "3.6.2" process: dependency: transitive description: name: process - url: "https://pub.dartlang.org" + sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" + url: "https://pub.dev" source: hosted version: "4.2.4" simple_gradient_text: dependency: "direct main" description: name: simple_gradient_text - url: "https://pub.dartlang.org" + sha256: "075a2cbabac021d3713d0d199b2d1b0d40f6293e1e9d37b25e84936ae43c90fa" + url: "https://pub.dev" source: hosted version: "1.2.4" sky_engine: @@ -319,91 +361,104 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.2.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + url: "https://pub.dev" source: hosted - version: "0.4.12" + version: "0.4.16" typed_data: dependency: transitive description: name: typed_data - url: "https://pub.dartlang.org" + sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" + url: "https://pub.dev" source: hosted version: "1.3.1" uuid: dependency: "direct main" description: name: uuid - url: "https://pub.dartlang.org" + sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313" + url: "https://pub.dev" source: hosted version: "3.0.7" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" win32: dependency: transitive description: name: win32 - url: "https://pub.dartlang.org" + sha256: c9ebe7ee4ab0c2194e65d3a07d8c54c5d00bb001b76081c4a04cdb8448b59e46 + url: "https://pub.dev" source: hosted version: "3.1.3" xdg_directories: dependency: transitive description: name: xdg_directories - url: "https://pub.dartlang.org" + sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1 + url: "https://pub.dev" source: hosted version: "1.0.0" xml: dependency: transitive description: name: xml - url: "https://pub.dartlang.org" + sha256: ac0e3f4bf00ba2708c33fbabbbe766300e509f8c82dbd4ab6525039813f7e2fb + url: "https://pub.dev" source: hosted version: "6.1.0" yaml: dependency: transitive description: name: yaml - url: "https://pub.dartlang.org" + sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370" + url: "https://pub.dev" source: hosted version: "3.1.1" sdks: diff --git a/Sources/bowlin_project/test/model_test.dart b/Sources/bowlin_project/test/model_test.dart index c4e01e8..82daad9 100644 --- a/Sources/bowlin_project/test/model_test.dart +++ b/Sources/bowlin_project/test/model_test.dart @@ -5,9 +5,9 @@ import '../lib/model/Stat.dart'; import '../lib/model/Round.dart'; import '../lib/model/GameDetail.dart'; import '../lib/model/StubManager/StubData.dart'; +import '../lib/model/IManager.dart'; import 'dart:math'; import '../lib/model/Achievement.dart'; -import 'package:uuid/uuid.dart'; void main() { List stats = []; @@ -30,12 +30,11 @@ void main() { print("Stats:"); for (var stat in stats) { - print( - "\tVictoires: ${stat.nbVictory}, Défaites: ${stat.nbDefeat}, Parties jouées: ${stat.nbGames}, Meilleur score: ${stat.highscore}, Nombre de strikes: ${stat.nbStrikes}, Nom de spares: ${stat.nbStrikes}, Moyenne score: ${stat.avgScore}, Moyenne score par round: ${stat.avgPinsPerRound}"); + print("\tVictoires: ${stat.nbVictory}, Défaites: ${stat.nbDefeat}, Parties jouées: ${stat.nbGames}, Meilleur score: ${stat.highscore}, Nombre de strikes: ${stat.nbStrikes}, Nom de spares: ${stat.nbStrikes}, Moyenne score: ${stat.avgScore}, Moyenne score par round: ${stat.avgPinsPerRound}"); } User ami = User( - Uuid(), + 5, "Lucas", "https://fastly.picsum.photos/id/288/2000/2000.jpg?hmac=AUboE-jzAzofYj_O3w_EqtZU3JHzcg7HR1IQd1Ce7lY", "Lucas.delanier@etu.uca.fr", @@ -44,17 +43,17 @@ void main() { stats[1]); List players = [ - Player(Uuid(), "Rami", + Player(1, "Rami", "https://fastly.picsum.photos/id/1060/2000/2000.jpg?hmac=_RrU8GpkCDUlVKfgyWE-GcX-GS5TKNyUzdFbJAGXHV4"), - Player(Uuid(), "Emre", + Player(2, "Emre", "https://fastly.picsum.photos/id/670/2000/2000.jpg?hmac=zWqTr_vDEab3dBtp7JZgJP8TRCPNanJ4tYwDDd-jGYA"), - Guest(Uuid(), "Bot1", + Guest(3, "Bot1", "https://fastly.picsum.photos/id/820/2000/2000.jpg?hmac=Ctxx2feJNZnG1S7UPx_YrWcEw89tKb7fR8i1W-VTOz4"), - Guest(Uuid(), "Bot2", + Guest(4, "Bot2", "https://fastly.picsum.photos/id/288/2000/2000.jpg?hmac=AUboE-jzAzofYj_O3w_EqtZU3JHzcg7HR1IQd1Ce7lY"), ami, User( - Uuid(), + 6, "Louison", "https://fastly.picsum.photos/id/1029/2000/2000.jpg?hmac=_K3pMobVk00dfNR7rsj1NLnEBB5Gf88SvGPbbjoH-Uc", "louison.parant@etu.uca.fr", @@ -70,33 +69,14 @@ void main() { print("Players :"); // afficahge de toutes les informations de tous les joueurs for (var player in players) { - if (player is Guest) { - print( - "\tID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: Guest"); - } else if (player is User) { - print( - "\tID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: User"); - print("\tAchievements:"); - for (var achievement in player.achievements) { - print("\t\tNom: ${achievement.name}"); - } - print("\tAmis:"); - for (var amis in player.friends) { - print("\t\tNom: ${amis.name}, Mail: ${amis.mail}"); - } - print( - "\tVictoires: ${player.stat.nbVictory}, Défaites: ${player.stat.nbDefeat}, Parties jouées: ${player.stat.nbGames}, Meilleur score: ${player.stat.highscore}, Nombre de strikes: ${player.stat.nbStrikes}, Nom de spares: ${player.stat.nbStrikes}, Moyenne score: ${player.stat.avgScore}, Moyenne score par round: ${player.stat.avgPinsPerRound}"); - } else { - print( - "\tID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: Player"); - } + displayPlayer(player,1); } //GameDetail List games = [ GameDetail( - Uuid(), DateTime.now(), players[0].id, 290, true, null, players[0].id, [ + 1, DateTime.now(), players[0].id, 290, true, null, players[0].id, [ Round(10, null, 10, players[0]), Round(5, 2, 7, players[1]), Round(5, 1, 12, players[0]), @@ -105,7 +85,7 @@ void main() { players[0], players[1] ]), - GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 2)), + GameDetail(2, DateTime.now().subtract(Duration(days: 2)), players[1].id, 250, true, null, players[1].id, [ Round(7, null, 7, players[1]), Round(3, 3, 9, players[0]), @@ -115,7 +95,7 @@ void main() { players[0], players[1] ]), - GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 4)), + GameDetail(3, DateTime.now().subtract(Duration(days: 4)), players[2].id, 210, false, null, players[2].id, [ Round(8, 2, 10, players[2]), Round(6, 2, 8, players[1]), @@ -126,13 +106,13 @@ void main() { players[2] ]), GameDetail( - Uuid(), - DateTime.now().subtract(Duration(days: 7)), - players[3].id, - 120, - true, - Round(12, null, 12, players[3]), - players[3].id, [ + 4, + DateTime.now().subtract(Duration(days: 7)), + players[3].id, + 120, + true, + Round(12, null, 12, players[3]), + players[3].id, [ Round(12, null, 12, players[3]), Round(7, 3, 10, players[2]), Round(6, 2, 8, players[1]), @@ -143,7 +123,7 @@ void main() { players[2], players[3] ]), - GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 10)), + GameDetail(5, DateTime.now().subtract(Duration(days: 10)), players[4].id, 280, true, null, players[4].id, [ Round(9, 1, 10, players[4]), Round(7, 3, 10, players[2]), @@ -155,8 +135,8 @@ void main() { players[3], players[4] ]), - GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 12)), - players[1].id, 240, true, null, players[1].id, [ + GameDetail(6, DateTime.now().subtract(Duration(days: 12)), + players[1].id, 240, true, null, players[1].id, [ Round(7, null, 7, players[1]), Round(5, 2, 7, players[2]), Round(6, 2, 8, players[1]), @@ -167,7 +147,7 @@ void main() { players[2], players[4] ]), - GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 15)), + GameDetail(7, DateTime.now().subtract(Duration(days: 15)), players[2].id, 200, true, null, players[2].id, [ Round(8, 2, 10, players[2]), Round(4, 2, 6, players[1]), @@ -183,31 +163,98 @@ void main() { print("GameDetail :"); for (var game in games) { - print("\tGame ID: ${game.id}"); - print("\tTime: ${game.time}"); - print("\tWinner: ${game.winner}"); - print("\tNumber of Points: ${game.nbPoints}"); - print("\tIs Finished: ${game.isFinished}"); - print("\tCurrent Round: ${game.currentRound}"); - print("\tHost: ${game.host}"); - print("\tRank: ${game.getRank()}"); - - print("\tRounds:"); - for (var round in game.rounds) { - print("\t\tRound Score: ${round.firstThrow}"); - print("\t\tRound Bonus: ${round.secondThrow}"); - print("\t\tRound Total: ${round.points}"); - print("\t\tRound Player: ${round.player.name}"); - } + displayGameDetail(game,1); + print("\t-----------------------------------------"); + } + + print("StubManager:"); + IManager mgr = new StubData(); - print("\tPlayers:"); - for (var player in game.players) { - print("\t\tPlayer ID: ${player.id}"); - print("\t\tPlayer Name: ${player.name}"); - } + print("\tGameManager:"); - print("\t-----------------------------------------"); + print("\tgetGameById function with id: 2"); + GameDetail gd = mgr.gameMgr.getGameById(2); + displayGameDetail(gd,2); + + print("\tgetGamesByPlayerId function with id: 2"); + List gds = mgr.gameMgr.getGamesByPlayerId(3); + for (var game in gds) + { + displayGameDetail(game,2); + } + + print("\tgetGamesByPlayer function:"); + var player = mgr.userMgr.getUserById(3); + List gdsPlayer = mgr.gameMgr.getGamesByPlayer(player); + for (var game in gdsPlayer) + { + displayGameDetail(game,2); + } + + print("\tgetGamesByPlayers:"); + var player2 = mgr.userMgr.getUserById(2); + List playersTest = [player,player2]; + List gdsPlayers = mgr.gameMgr.getGamesByPlayers(playersTest); + for (var game in gdsPlayers) + { + displayGameDetail(game,2); + } + +} + +void displayGameDetail(GameDetail gd, int numTabs) +{ + String tabs = '\t' * numTabs; + print(tabs+"Game ID: ${gd.id}"); + print(tabs+"Time: ${gd.time}"); + print(tabs+"Winner: ${gd.winner}"); + print(tabs+"Number of Points: ${gd.nbPoints}"); + print(tabs+"Is Finished: ${gd.isFinished}"); + print(tabs+"Current Round: ${gd.currentRound}"); + print(tabs+"Host: ${gd.host}"); + print(tabs+"Rank: ${gd.getRank()}"); + print(tabs+"Rounds:"); + for (var round in gd.rounds) { + displayRound(round, numTabs+1); + } + print(tabs+"Players:"); + for (var player in gd.players) { + displayPlayer(player, numTabs+1); + } +} + +void displayRound(Round round, int numTabs) +{ + String tabs = '\t' * numTabs; + print(tabs+"Round Score: ${round.firstThrow}"); + print(tabs+"Round Bonus: ${round.secondThrow}"); + print(tabs+"Round Total: ${round.points}"); + print(tabs+"Round Player: ${round.player.name}"); +} - print("StubManager:"); +void displayPlayer(Player player, int numTabs) +{ + String tabs = '\t' * numTabs; + if (player is Guest) { + print(tabs+"ID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: Guest"); + } else if (player is User) { + print(tabs+"ID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: User"); + print(tabs+"Achievements:"); + for (var achievement in player.achievements) { + displayAchievement(achievement, numTabs+1); + } + print(tabs+"Amis:"); + for (var amis in player.friends) { + print("\t\tNom: ${amis.name}, Mail: ${amis.mail}"); + } + print(tabs+"Victoires: ${player.stat.nbVictory}, Défaites: ${player.stat.nbDefeat}, Parties jouées: ${player.stat.nbGames}, Meilleur score: ${player.stat.highscore}, Nombre de strikes: ${player.stat.nbStrikes}, Nom de spares: ${player.stat.nbStrikes}, Moyenne score: ${player.stat.avgScore}, Moyenne score par round: ${player.stat.avgPinsPerRound}"); + } else { + print(tabs+"ID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: Player"); } } + +void displayAchievement(Achievement achievement, int numTabs) +{ + String tabs = '\t' * numTabs; + print(tabs+"Nom: ${achievement.name}"); +} \ No newline at end of file