From 9d6b2af7969af38dbc11c230046a4088ea083c49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20LAVERGNE?= Date: Sat, 8 Jun 2024 23:08:04 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=9B=A0=EF=B8=8F=20Encore=20plus=20de=20te?= =?UTF-8?q?sts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/Trek-12/Tests/BestScoreTests.cs | 62 ++++++++++++++++++ source/Trek-12/Tests/GameTests.cs | 88 ++++++++++++++++++++++++++ source/Trek-12/Tests/PlayerTests.cs | 12 ++++ 3 files changed, 162 insertions(+) diff --git a/source/Trek-12/Tests/BestScoreTests.cs b/source/Trek-12/Tests/BestScoreTests.cs index 99d948d..6e0b215 100644 --- a/source/Trek-12/Tests/BestScoreTests.cs +++ b/source/Trek-12/Tests/BestScoreTests.cs @@ -69,5 +69,67 @@ namespace Tests Assert.Equal(15, bestScore.Score); } + + [Fact] + public void IdGetter_ReturnsCorrectId() + { + var myMap = new Map("Dunai", "Dunai.png"); + var myPlayer = new Player("John", "pp.png"); + + var bestScore = new BestScore(myMap.Name, myPlayer, 5, 10); + bestScore.Id = 1; + + Assert.Equal(1, bestScore.Id); + } + + [Fact] + public void Equals_WithEqualBestScores_ReturnsTrue() + { + var myMap = new Map("Dunai", "Dunai.png"); + var myPlayer = new Player("John", "pp.png"); + + var bestScore1 = new BestScore(myMap.Name, myPlayer, 5, 10); + var bestScore2 = new BestScore(myMap.Name, myPlayer, 5, 10); + + Assert.True(bestScore1.Equals(bestScore2)); + } + + [Fact] + public void Equals_WithDifferentBestScores_ReturnsFalse() + { + var myMap1 = new Map("Dunai", "Dunai.png"); + var myMap2 = new Map("Amazon", "Amazon.png"); + var myPlayer = new Player("John", "pp.png"); + + var bestScore1 = new BestScore(myMap1.Name, myPlayer, 5, 10); + var bestScore2 = new BestScore(myMap2.Name, myPlayer, 5, 10); + + Assert.False(bestScore1.Equals(bestScore2)); + } + + [Fact] + public void GetHashCode_WithEqualBestScores_ReturnsSameHashCode() + { + var myMap = new Map("Dunai", "Dunai.png"); + var myPlayer = new Player("John", "pp.png"); + + var bestScore1 = new BestScore(myMap.Name, myPlayer, 5, 10); + var bestScore2 = new BestScore(myMap.Name, myPlayer, 5, 10); + + Assert.Equal(bestScore1.GetHashCode(), bestScore2.GetHashCode()); + } + + [Fact] + public void GetHashCode_WithDifferentBestScores_ReturnsDifferentHashCodes() + { + var myMap1 = new Map("Dunai", "Dunai.png"); + var myMap2 = new Map("Amazon", "Amazon.png"); + var myPlayer = new Player("John", "pp.png"); + + var bestScore1 = new BestScore(myMap1.Name, myPlayer, 5, 10); + var bestScore2 = new BestScore(myMap2.Name, myPlayer, 5, 10); + + Assert.NotEqual(bestScore1.GetHashCode(), bestScore2.GetHashCode()); + } } } diff --git a/source/Trek-12/Tests/GameTests.cs b/source/Trek-12/Tests/GameTests.cs index bc0f862..7397e82 100644 --- a/source/Trek-12/Tests/GameTests.cs +++ b/source/Trek-12/Tests/GameTests.cs @@ -602,5 +602,93 @@ public class GameTests Assert.Equal(6, _game.FinalCalculusOfPoints()); } + + [Fact] + public void AddBestScore_AddsNewBestScoreToList() + { + var game = new Game(_mockPersistence.Object); + var player = new Player("John Doe", "DefaultProfilePicture"); + var map = new Map("test_name", "test_background.png"); + + game.InitializeGame(map, player, false); + + game.AddBestScore(100); + + Assert.Single(game.BestScores); + Assert.Equal(100, game.BestScores[0].Score); + Assert.Equal(player, game.BestScores[0].ThePlayer); + Assert.Equal(map.Name, game.BestScores[0].MapName); + } + + [Fact] + public void AddBestScore_UpdatesExistingBestScoreAndIncrementsGamesPlayed() + { + var game = new Game(_mockPersistence.Object); + var player = new Player("John Doe", "DefaultProfilePicture"); + var map = new Map("test_name", "test_background.png"); + + game.InitializeGame(map, player, false); + + game.AddBestScore(100); + game.AddBestScore(200); + + Assert.Single(game.BestScores); + Assert.Equal(300, game.BestScores[0].Score); + Assert.Equal(2, game.BestScores[0].GamesPlayed); + Assert.Equal(player, game.BestScores[0].ThePlayer); + Assert.Equal(map.Name, game.BestScores[0].MapName); + } + + [Fact] + public void AddBestScore_SortsBestScoresCorrectly() + { + var game = new Game(_mockPersistence.Object); + var player1 = new Player("John Doe", "DefaultProfilePicture"); + var player2 = new Player("John Does", "DefaultProfilePicture"); + var map = new Map("test_name", "test_background.png"); + + game.InitializeGame(map, player1, false); + + game.AddBestScore(100); + game.InitializeGame(map, player2, false); + game.AddBestScore(200); + + Assert.Equal(2, game.BestScores.Count); + Assert.Equal(200, game.BestScores[0].Score); + Assert.Equal(player2, game.BestScores[0].ThePlayer); + Assert.Equal(100, game.BestScores[1].Score); + Assert.Equal(player1, game.BestScores[1].ThePlayer); + } + + [Fact] + public void CheckAndRemoveBestScoresDependencies_RemovesDependenciesCorrectly() + { + var game = new Game(_mockPersistence.Object); + var player = new Player("John Doe", "DefaultProfilePicture"); + var map = new Map("test_name", "test_background.png"); + + game.InitializeGame(map, player, false); + game.AddBestScore(100); + + game.CheckAndRemoveBestScoresDependencies(player.Pseudo); + + Assert.DoesNotContain(game.BestScores, bs => bs.ThePlayer.Pseudo == player.Pseudo); + } + + [Fact] + public void CheckAndChangeBestScoresDependencies_ChangesDependenciesCorrectly() + { + var game = new Game(_mockPersistence.Object); + var player = new Player("John Doe", "DefaultProfilePicture"); + var map = new Map("test_name", "test_background.png"); + + game.InitializeGame(map, player, false); + game.AddBestScore(100); + + game.CheckAndChangeBestScoresDependencies(player.Pseudo, "John Does"); + + Assert.All(game.BestScores, bs => Assert.NotEqual("John Doe", bs.ThePlayer.Pseudo)); + Assert.Contains(game.BestScores, bs => bs.ThePlayer.Pseudo == "John Does"); + } } diff --git a/source/Trek-12/Tests/PlayerTests.cs b/source/Trek-12/Tests/PlayerTests.cs index 39d44b7..5da5ee0 100644 --- a/source/Trek-12/Tests/PlayerTests.cs +++ b/source/Trek-12/Tests/PlayerTests.cs @@ -11,6 +11,7 @@ public class PlayerTests var player = new Player(pseudo, profilePicture); Assert.Equal(pseudo, player.Pseudo); Assert.Equal(profilePicture, player.ProfilePicture); + Assert.Null(player.LastPlayed); } [Theory] @@ -46,4 +47,15 @@ public class PlayerTests Player player = new Player("test_pseudo", "DefaultProfilePicture"); Assert.False(player.Equals(new Cell(0, 0))); } + + [Fact] + public void UpdateLastPlayed_UpdatesLastPlayedDate() + { + var player = new Player("John Doe", "DefaultProfilePicture"); + + player.UpdateLastPlayed(); + + Assert.NotNull(player.LastPlayed); + Assert.Equal(DateTime.Now.ToString("dd/MM/yyyy"), player.LastPlayed); + } } \ No newline at end of file