From 932babdca64224c84b7dab28759c94ab8a93b910 Mon Sep 17 00:00:00 2001 From: Alexis DRAI Date: Mon, 17 Oct 2022 02:10:57 +0200 Subject: [PATCH] =?UTF-8?q?:fire:=20=F0=9F=93=88=20Get=20rid=20of=20ToStri?= =?UTF-8?q?ng()=20methods?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We should keep formatting responsibilities out of the model --- Sources/App/Program.cs | 67 ++++++++++++++++--- Sources/Model/Games/Game.cs | 26 ------- Sources/Model/Games/Turn.cs | 24 ------- Sources/Model/Players/Player.cs | 5 -- Sources/Tests/Model_UTs/Players/PlayerTest.cs | 14 ---- 5 files changed, 57 insertions(+), 79 deletions(-) diff --git a/Sources/App/Program.cs b/Sources/App/Program.cs index f0d6268..b2f3ffb 100644 --- a/Sources/App/Program.cs +++ b/Sources/App/Program.cs @@ -10,7 +10,10 @@ using System.Collections.Generic; using System.Diagnostics; using System.Drawing; using System.Linq; +using System.Numerics; +using System.Text; using System.Threading.Tasks; +using System.Xml.Linq; namespace App { @@ -206,7 +209,7 @@ namespace App while (menuChoicePlay != "q") { 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" + "h... show history\n" + "s... save\n" + @@ -217,17 +220,14 @@ namespace App case "q": break; case "h": - foreach (Turn turn in game.GetHistory()) - { - Console.WriteLine(turn); - } + foreach (Turn turn in game.GetHistory()) { Console.WriteLine(TurnToString(turn)); } break; case "s": await masterOfCeremonies.GameManager.Add(game); break; default: await MasterOfCeremonies.PlayGame(game); - Console.WriteLine(game.GetHistory().Last()); + Console.WriteLine(TurnToString(game.GetHistory().Last())); break; } } @@ -239,7 +239,7 @@ namespace App Console.WriteLine("which of these games?\n(choose by name)\n>"); foreach (Game game in await masterOfCeremonies.GameManager.GetAll()) { - Console.WriteLine(game); + Console.WriteLine(GameToString(game)); } name = Console.ReadLine(); return name; @@ -250,7 +250,7 @@ namespace App Console.WriteLine("Look at all them players!"); 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 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) { Console.WriteLine(ex.Message); + logger.Warn(ex); } catch (UriFormatException ex) { Console.WriteLine("that URI was not valid"); Console.WriteLine(ex.Message); + logger.Warn(ex); } } } @@ -352,7 +354,7 @@ namespace App if (menuChoice.Equals("ok") && count == 0) { 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; } + 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 kvp in turn.DiceNFaces) + { + sb.Append(" " + kvp.Value.StringValue); + } + + return sb.ToString(); + } + + private async static Task 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; + } } } \ No newline at end of file diff --git a/Sources/Model/Games/Game.cs b/Sources/Model/Games/Game.cs index 6f9ae7d..a49fd3b 100644 --- a/Sources/Model/Games/Game.cs +++ b/Sources/Model/Games/Game.cs @@ -169,31 +169,5 @@ namespace Model.Games } return faces; } - - /// - /// represents a Game in string format - /// - /// a Game in string format - 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(); - } } } diff --git a/Sources/Model/Games/Turn.cs b/Sources/Model/Games/Turn.cs index e45df9a..c6a118f 100644 --- a/Sources/Model/Games/Turn.cs +++ b/Sources/Model/Games/Turn.cs @@ -87,30 +87,6 @@ namespace Model.Games return CreateWithSpecifiedTime(DateTime.UtcNow, player, diceNFaces); } - /// - /// represents a turn in string format - /// - /// a turn in string format - 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) { return Player.Equals(other.Player) diff --git a/Sources/Model/Players/Player.cs b/Sources/Model/Players/Player.cs index 86d214f..477cb99 100644 --- a/Sources/Model/Players/Player.cs +++ b/Sources/Model/Players/Player.cs @@ -30,11 +30,6 @@ namespace Model.Players : this(player?.Name) // passes the player's name if player exists, else null { } - public override string ToString() - { - return Name; - } - public bool Equals(Player other) { return other is not null && Name.ToUpper() == other.Name.ToUpper(); // equality is case insensitive diff --git a/Sources/Tests/Model_UTs/Players/PlayerTest.cs b/Sources/Tests/Model_UTs/Players/PlayerTest.cs index ca244d0..5e03d36 100644 --- a/Sources/Tests/Model_UTs/Players/PlayerTest.cs +++ b/Sources/Tests/Model_UTs/Players/PlayerTest.cs @@ -65,20 +65,6 @@ namespace Tests.Model_UTs.Players Assert.Throws(action); } - [Fact] - public void TestToStringCorrectName() - { - // Arrange - string expected = "Bob"; - Player player = new(expected); - - // Act - string actual = player.ToString(); - - // Assert - Assert.Equal(expected, actual); - } - [Fact] public void TestEqualsFalseIfNotPlayer() {