♻️ Remove extra methods, make Game.PlayerManager usable
continuous-integration/drone/push Build is passing Details

pull/94/head
Alexis Drai 3 years ago
parent 0298360c6b
commit c46d88029b

@ -62,15 +62,15 @@ namespace Data
GameRunner gameRunner = new(globalPlayerManager, globalDieManager, games); GameRunner gameRunner = new(globalPlayerManager, globalDieManager, games);
game1.AddPlayerToGame(player1); game1.PlayerManager.Add(player1);
game1.AddPlayerToGame(player2); game1.PlayerManager.Add(player2);
game2.AddPlayerToGame(player1); game2.PlayerManager.Add(player1);
game2.AddPlayerToGame(player2); game2.PlayerManager.Add(player2);
game2.AddPlayerToGame(player3); game2.PlayerManager.Add(player3);
game3.AddPlayerToGame(player1); game3.PlayerManager.Add(player1);
game3.AddPlayerToGame(player3); game3.PlayerManager.Add(player3);
foreach (Game game in games) foreach (Game game in games)
{ {

@ -52,7 +52,7 @@ namespace Model.Games
/// <summary> /// <summary>
/// the game's player manager, doing CRUD on players and switching whose turn it is /// the game's player manager, doing CRUD on players and switching whose turn it is
/// </summary> /// </summary>
private readonly IManager<Player> playerManager; public IManager<Player> PlayerManager { get; private set; }
/// <summary> /// <summary>
/// the group of dice used for this game /// the group of dice used for this game
@ -71,8 +71,8 @@ namespace Model.Games
public Game(string name, IManager<Player> playerManager, IEnumerable<AbstractDie<AbstractDieFace>> dice, IEnumerable<Turn> turns) public Game(string name, IManager<Player> playerManager, IEnumerable<AbstractDie<AbstractDieFace>> dice, IEnumerable<Turn> turns)
{ {
Name = name; Name = name;
PlayerManager = playerManager;
this.turns = turns is null ? new List<Turn>() : turns.ToList(); this.turns = turns is null ? new List<Turn>() : turns.ToList();
this.playerManager = playerManager;
this.dice = dice; this.dice = dice;
this.nextIndex = 0; this.nextIndex = 0;
} }
@ -116,11 +116,11 @@ namespace Model.Games
/// <exception cref="Exception"></exception> /// <exception cref="Exception"></exception>
public Player GetWhoPlaysNow() public Player GetWhoPlaysNow()
{ {
if (!playerManager.GetAll().Any()) if (!PlayerManager.GetAll().Any())
{ {
throw new MemberAccessException("you are exploring an empty collection\nthis should not have happened"); throw new MemberAccessException("you are exploring an empty collection\nthis should not have happened");
} }
return playerManager.GetAll().ElementAt(nextIndex); return PlayerManager.GetAll().ElementAt(nextIndex);
} }
/// <summary> /// <summary>
@ -132,7 +132,8 @@ namespace Model.Games
/// <exception cref="ArgumentException"></exception> /// <exception cref="ArgumentException"></exception>
public void PrepareNextPlayer(Player current) public void PrepareNextPlayer(Player current)
{ {
if (!playerManager.GetAll().Any()) IEnumerable<Player> players = PlayerManager.GetAll();
if (!players.Any())
{ {
throw new MemberAccessException("you are exploring an empty collection\nthis should not have happened"); throw new MemberAccessException("you are exploring an empty collection\nthis should not have happened");
} }
@ -140,11 +141,11 @@ namespace Model.Games
{ {
throw new ArgumentNullException(nameof(current), "param should not be null"); throw new ArgumentNullException(nameof(current), "param should not be null");
} }
if (!playerManager.GetAll().Contains(current)) if (!players.Contains(current))
{ {
throw new ArgumentException("param could not be found in this collection\n did you forget to add it?", nameof(current)); throw new ArgumentException("param could not be found in this collection\n did you forget to add it?", nameof(current));
} }
if (playerManager.GetAll().Last() == current) if (players.Last() == current)
{ {
// if we've reached the last player, we need the index to loop back around // if we've reached the last player, we need the index to loop back around
nextIndex = 0; nextIndex = 0;
@ -170,26 +171,6 @@ namespace Model.Games
return faces; return faces;
} }
public Player AddPlayerToGame(Player player)
{
return playerManager.Add(player);
}
public IEnumerable<Player> GetPlayersFromGame()
{
return playerManager.GetAll();
}
public Player UpdatePlayerInGame(Player oldPlayer, Player newPlayer)
{
return playerManager.Update(oldPlayer, newPlayer);
}
public void RemovePlayerFromGame(Player player)
{
playerManager.Remove(player);
}
/// <summary> /// <summary>
/// represents a Game in string format /// represents a Game in string format
/// </summary> /// </summary>
@ -200,7 +181,7 @@ namespace Model.Games
sb.Append($"Game: {Name}"); sb.Append($"Game: {Name}");
sb.Append("\nPlayers:"); sb.Append("\nPlayers:");
foreach (Player player in GetPlayersFromGame()) foreach (Player player in PlayerManager.GetAll())
{ {
sb.Append($" {player.ToString()}"); sb.Append($" {player.ToString()}");
} }

@ -144,8 +144,8 @@ namespace Tests.Model_UTs
{ {
// Arrange // Arrange
Game game = new(name: GAME_NAME, playerManager: new PlayerManager(), dice: DICE); Game game = new(name: GAME_NAME, playerManager: new PlayerManager(), dice: DICE);
game.AddPlayerToGame(PLAYER_1); game.PlayerManager.Add(PLAYER_1);
game.AddPlayerToGame(PLAYER_2); game.PlayerManager.Add(PLAYER_2);
int n = 5; int n = 5;
@ -172,8 +172,8 @@ namespace Tests.Model_UTs
{ {
// Arrange // Arrange
Game game = new(name: GAME_NAME, playerManager: new PlayerManager(), dice: DICE); Game game = new(name: GAME_NAME, playerManager: new PlayerManager(), dice: DICE);
game.AddPlayerToGame(PLAYER_1); game.PlayerManager.Add(PLAYER_1);
game.AddPlayerToGame(PLAYER_2); game.PlayerManager.Add(PLAYER_2);
// Act // Act
Player actual = game.GetWhoPlaysNow(); Player actual = game.GetWhoPlaysNow();
@ -221,7 +221,7 @@ namespace Tests.Model_UTs
{ {
// Arrange // Arrange
Game game = new(name: GAME_NAME, playerManager: new PlayerManager(), dice: DICE); Game game = new(name: GAME_NAME, playerManager: new PlayerManager(), dice: DICE);
game.AddPlayerToGame(PLAYER_1); game.PlayerManager.Add(PLAYER_1);
// Act // Act
void action() => game.PrepareNextPlayer(null); void action() => game.PrepareNextPlayer(null);
@ -235,7 +235,7 @@ namespace Tests.Model_UTs
{ {
// Arrange // Arrange
Game game = new(name: GAME_NAME, playerManager: new PlayerManager(), dice: DICE); Game game = new(name: GAME_NAME, playerManager: new PlayerManager(), dice: DICE);
game.AddPlayerToGame(PLAYER_2); game.PlayerManager.Add(PLAYER_2);
// Act // Act
void action() => game.PrepareNextPlayer(PLAYER_3); void action() => game.PrepareNextPlayer(PLAYER_3);
@ -249,8 +249,8 @@ namespace Tests.Model_UTs
{ {
// Arrange // Arrange
Game game = new(name: GAME_NAME, playerManager: new PlayerManager(), dice: DICE); Game game = new(name: GAME_NAME, playerManager: new PlayerManager(), dice: DICE);
game.AddPlayerToGame(PLAYER_1); game.PlayerManager.Add(PLAYER_1);
game.AddPlayerToGame(PLAYER_2); game.PlayerManager.Add(PLAYER_2);
// Act // Act
Player expected = PLAYER_2; Player expected = PLAYER_2;
@ -269,7 +269,7 @@ namespace Tests.Model_UTs
{ {
// Arrange // Arrange
Game game = new(name: GAME_NAME, playerManager: new PlayerManager(), dice: DICE); Game game = new(name: GAME_NAME, playerManager: new PlayerManager(), dice: DICE);
game.AddPlayerToGame(PLAYER_1); game.PlayerManager.Add(PLAYER_1);
// Act // Act
Player expected = PLAYER_1; Player expected = PLAYER_1;
@ -291,7 +291,7 @@ namespace Tests.Model_UTs
// Act // Act
Player expected = PLAYER_1; Player expected = PLAYER_1;
Player actual = game.AddPlayerToGame(PLAYER_1); Player actual = game.PlayerManager.Add(PLAYER_1);
// Assert // Assert
Assert.Equal(expected, actual); Assert.Equal(expected, actual);
@ -304,11 +304,11 @@ namespace Tests.Model_UTs
Game game = new(name: GAME_NAME, playerManager: new PlayerManager(), dice: DICE); Game game = new(name: GAME_NAME, playerManager: new PlayerManager(), dice: DICE);
// Act // Act
Assert.Empty(game.GetPlayersFromGame()); Assert.Empty(game.PlayerManager.GetAll());
game.AddPlayerToGame(PLAYER_1); game.PlayerManager.Add(PLAYER_1);
// Assert // Assert
Assert.Single(game.GetPlayersFromGame()); Assert.Single(game.PlayerManager.GetAll());
} }
[Fact] [Fact]
@ -316,11 +316,11 @@ namespace Tests.Model_UTs
{ {
// Arrange // Arrange
Game game = new(name: GAME_NAME, playerManager: new PlayerManager(), dice: DICE); Game game = new(name: GAME_NAME, playerManager: new PlayerManager(), dice: DICE);
game.AddPlayerToGame(PLAYER_1); game.PlayerManager.Add(PLAYER_1);
// Act // Act
Player expected = PLAYER_2; Player expected = PLAYER_2;
Player actual = game.UpdatePlayerInGame(PLAYER_1, PLAYER_2); Player actual = game.PlayerManager.Update(PLAYER_1, PLAYER_2);
// Assert // Assert
Assert.Equal(expected, actual); Assert.Equal(expected, actual);
@ -331,13 +331,13 @@ namespace Tests.Model_UTs
{ {
// Arrange // Arrange
Game game = new(name: GAME_NAME, playerManager: new PlayerManager(), dice: DICE); Game game = new(name: GAME_NAME, playerManager: new PlayerManager(), dice: DICE);
game.AddPlayerToGame(PLAYER_1); game.PlayerManager.Add(PLAYER_1);
game.AddPlayerToGame(PLAYER_2); game.PlayerManager.Add(PLAYER_2);
game.RemovePlayerFromGame(PLAYER_1); game.PlayerManager.Remove(PLAYER_1);
// Act // Act
IEnumerable<Player> expected = new List<Player>() { PLAYER_2 }.AsEnumerable(); IEnumerable<Player> expected = new List<Player>() { PLAYER_2 }.AsEnumerable();
IEnumerable<Player> actual = game.GetPlayersFromGame(); IEnumerable<Player> actual = game.PlayerManager.GetAll();
// Assert // Assert
Assert.Equal(expected, actual); Assert.Equal(expected, actual);
@ -366,8 +366,8 @@ namespace Tests.Model_UTs
}; };
Game game = new(name: GAME_NAME, playerManager: new PlayerManager(), dice: DICE, turns: turns); Game game = new(name: GAME_NAME, playerManager: new PlayerManager(), dice: DICE, turns: turns);
game.AddPlayerToGame(PLAYER_1); game.PlayerManager.Add(PLAYER_1);
game.AddPlayerToGame(PLAYER_2); game.PlayerManager.Add(PLAYER_2);
// Act // Act
string[] dateTimeString = dateTime.ToString("s", System.Globalization.CultureInfo.InvariantCulture).Split("T"); string[] dateTimeString = dateTime.ToString("s", System.Globalization.CultureInfo.InvariantCulture).Split("T");

Loading…
Cancel
Save