🔥 📈 Get rid of ToString() methods
continuous-integration/drone/push Build is passing Details

We should keep formatting responsibilities out of the model
pull/192/head
Alexis Drai 2 years ago
parent 5c11e4b253
commit 932babdca6

@ -10,7 +10,10 @@ using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.Drawing; using System.Drawing;
using System.Linq; using System.Linq;
using System.Numerics;
using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Xml.Linq;
namespace App namespace App
{ {
@ -206,7 +209,7 @@ namespace App
while (menuChoicePlay != "q") while (menuChoicePlay != "q")
{ {
Game game = await masterOfCeremonies.GameManager.GetOneByName(name); Game game = await masterOfCeremonies.GameManager.GetOneByName(name);
Console.WriteLine($"{game.GetWhoPlaysNow()}'s turn\n" + Console.WriteLine($"{PlayerToString(await game.GetWhoPlaysNow())}'s turn\n" +
"q... quit\n" + "q... quit\n" +
"h... show history\n" + "h... show history\n" +
"s... save\n" + "s... save\n" +
@ -217,17 +220,14 @@ namespace App
case "q": case "q":
break; break;
case "h": case "h":
foreach (Turn turn in game.GetHistory()) foreach (Turn turn in game.GetHistory()) { Console.WriteLine(TurnToString(turn)); }
{
Console.WriteLine(turn);
}
break; break;
case "s": case "s":
await masterOfCeremonies.GameManager.Add(game); await masterOfCeremonies.GameManager.Add(game);
break; break;
default: default:
await MasterOfCeremonies.PlayGame(game); await MasterOfCeremonies.PlayGame(game);
Console.WriteLine(game.GetHistory().Last()); Console.WriteLine(TurnToString(game.GetHistory().Last()));
break; break;
} }
} }
@ -239,7 +239,7 @@ namespace App
Console.WriteLine("which of these games?\n(choose by name)\n>"); Console.WriteLine("which of these games?\n(choose by name)\n>");
foreach (Game game in await masterOfCeremonies.GameManager.GetAll()) foreach (Game game in await masterOfCeremonies.GameManager.GetAll())
{ {
Console.WriteLine(game); Console.WriteLine(GameToString(game));
} }
name = Console.ReadLine(); name = Console.ReadLine();
return name; return name;
@ -250,7 +250,7 @@ namespace App
Console.WriteLine("Look at all them players!"); Console.WriteLine("Look at all them players!");
foreach (Player player in await masterOfCeremonies.GlobalPlayerManager.GetAll()) foreach (Player player in await masterOfCeremonies.GlobalPlayerManager.GetAll())
{ {
Console.WriteLine(player); Console.WriteLine(PlayerToString(player));
} }
} }
@ -258,7 +258,7 @@ namespace App
{ {
foreach ((string name, IEnumerable<Die> dice) in await masterOfCeremonies.DiceGroupManager.GetAll()) foreach ((string name, IEnumerable<Die> dice) in await masterOfCeremonies.DiceGroupManager.GetAll())
{ {
Console.WriteLine($"{name} -- {dice}"); Console.WriteLine($"{name} -- {dice}"); // maybe code a quick and dirty DieToString()
} }
} }
@ -331,11 +331,13 @@ namespace App
catch (ArgumentNullException ex) catch (ArgumentNullException ex)
{ {
Console.WriteLine(ex.Message); Console.WriteLine(ex.Message);
logger.Warn(ex);
} }
catch (UriFormatException ex) catch (UriFormatException ex)
{ {
Console.WriteLine("that URI was not valid"); Console.WriteLine("that URI was not valid");
Console.WriteLine(ex.Message); Console.WriteLine(ex.Message);
logger.Warn(ex);
} }
} }
} }
@ -352,7 +354,7 @@ namespace App
if (menuChoice.Equals("ok") && count == 0) if (menuChoice.Equals("ok") && count == 0)
{ {
Console.WriteLine("create at least one valid face"); Console.WriteLine("create at least one valid face");
menuChoice = ""; // persiste en dehors du scope de cette fonction menuChoice = ""; // persists outside the scope of this function
} }
} }
@ -407,5 +409,50 @@ namespace App
return result; return result;
} }
private static string TurnToString(Turn turn)
{
string[] datetime = turn.When.ToString("s", System.Globalization.CultureInfo.InvariantCulture).Split("T");
string date = datetime[0];
string time = datetime[1];
StringBuilder sb = new();
sb.AppendFormat("{0} {1} -- {2} rolled:",
date,
time,
PlayerToString(turn.Player));
foreach (KeyValuePair<Die, Face> kvp in turn.DiceNFaces)
{
sb.Append(" " + kvp.Value.StringValue);
}
return sb.ToString();
}
private async static Task<string> GameToString(Game game)
{
StringBuilder sb = new();
sb.Append($"Game: {game.Name}");
sb.Append("\nPlayers:");
foreach (Player player in game.PlayerManager.GetAll()?.Result)
{
sb.Append($" {PlayerToString(player)}");
}
sb.Append($"\nNext: {PlayerToString(await game.GetWhoPlaysNow())}");
sb.Append("\nLog:\n");
foreach (Turn turn in game.GetHistory())
{
sb.Append($"\t{TurnToString(turn)}\n");
}
return sb.ToString();
}
private static string PlayerToString(Player player)
{
return player.Name;
}
} }
} }

@ -169,31 +169,5 @@ namespace Model.Games
} }
return faces; return faces;
} }
/// <summary>
/// represents a Game in string format
/// </summary>
/// <returns>a Game in string format</returns>
public override string ToString()
{
StringBuilder sb = new();
sb.Append($"Game: {Name}");
sb.Append("\nPlayers:");
foreach (Player player in PlayerManager.GetAll()?.Result)
{
sb.Append($" {player.ToString()}");
}
sb.Append($"\nNext: {GetWhoPlaysNow()}");
sb.Append("\nLog:\n");
foreach (Turn turn in this.turns)
{
sb.Append($"\t{turn.ToString()}\n");
}
return sb.ToString();
}
} }
} }

@ -87,30 +87,6 @@ namespace Model.Games
return CreateWithSpecifiedTime(DateTime.UtcNow, player, diceNFaces); return CreateWithSpecifiedTime(DateTime.UtcNow, player, diceNFaces);
} }
/// <summary>
/// represents a turn in string format
/// </summary>
/// <returns>a turn in string format</returns>
public override string ToString()
{
string[] datetime = When.ToString("s", System.Globalization.CultureInfo.InvariantCulture).Split("T");
string date = datetime[0];
string time = datetime[1];
StringBuilder sb = new();
sb.AppendFormat("{0} {1} -- {2} rolled:",
date,
time,
Player.ToString());
foreach (Face face in this.diceNFaces.Values)
{
sb.Append(" " + face.StringValue);
}
return sb.ToString();
}
public bool Equals(Turn other) public bool Equals(Turn other)
{ {
return Player.Equals(other.Player) return Player.Equals(other.Player)

@ -30,11 +30,6 @@ namespace Model.Players
: this(player?.Name) // passes the player's name if player exists, else null : this(player?.Name) // passes the player's name if player exists, else null
{ } { }
public override string ToString()
{
return Name;
}
public bool Equals(Player other) public bool Equals(Player other)
{ {
return other is not null && Name.ToUpper() == other.Name.ToUpper(); // equality is case insensitive return other is not null && Name.ToUpper() == other.Name.ToUpper(); // equality is case insensitive

@ -65,20 +65,6 @@ namespace Tests.Model_UTs.Players
Assert.Throws<ArgumentException>(action); Assert.Throws<ArgumentException>(action);
} }
[Fact]
public void TestToStringCorrectName()
{
// Arrange
string expected = "Bob";
Player player = new(expected);
// Act
string actual = player.ToString();
// Assert
Assert.Equal(expected, actual);
}
[Fact] [Fact]
public void TestEqualsFalseIfNotPlayer() public void TestEqualsFalseIfNotPlayer()
{ {

Loading…
Cancel
Save