From 9f9dde001a19db21af77e0925419449c4e45aa87 Mon Sep 17 00:00:00 2001 From: "jules.lascret" Date: Sun, 2 Jun 2024 13:56:37 +0200 Subject: [PATCH 1/2] Fixed major issues with Persistence + Had to switch from Json to XML for Game --- Qwirkle/Files/Game.xml | 1550 +++++++++++++++++ Qwirkle/Files/game.json | 1 - .../Persistences/GamePersistenceJson.cs | 27 - .../Persistences/GamePersistenceXml.cs | 28 + Qwirkle/QwirkleClassLibrary/Tiles/TileBag.cs | 13 +- Qwirkle/QwirkleConsoleApp/Program.cs | 45 +- Qwirkle/TestBase/TestPersistence.cs | 4 +- 7 files changed, 1618 insertions(+), 50 deletions(-) create mode 100644 Qwirkle/Files/Game.xml delete mode 100644 Qwirkle/Files/game.json delete mode 100644 Qwirkle/QwirkleClassLibrary/Persistences/GamePersistenceJson.cs create mode 100644 Qwirkle/QwirkleClassLibrary/Persistences/GamePersistenceXml.cs diff --git a/Qwirkle/Files/Game.xml b/Qwirkle/Files/Game.xml new file mode 100644 index 0000000..3909ecb --- /dev/null +++ b/Qwirkle/Files/Game.xml @@ -0,0 +1,1550 @@ + + true + + + + Red + Square + + + Blue + Square + + + Green + Square + + + Yellow + Square + + + Orange + Square + + + Purple + Square + + + Red + Round + + + Blue + Round + + + Green + Round + + + Orange + Round + + + Purple + Round + + + Green + Rhombus + + + Yellow + Rhombus + + + Purple + Rhombus + + + Red + Club + + + Blue + Club + + + Green + Club + + + Yellow + Club + + + Purple + Club + + + Red + Shuriken + + + Blue + Shuriken + + + Green + Shuriken + + + Purple + Shuriken + + + Red + Star + + + Blue + Star + + + Green + Star + + + Yellow + Star + + + Orange + Star + + + Purple + Star + + + Red + Square + + + Blue + Square + + + Green + Square + + + Yellow + Square + + + Blue + Round + + + Purple + Round + + + Red + Rhombus + + + Green + Rhombus + + + Yellow + Rhombus + + + Purple + Rhombus + + + Blue + Club + + + Green + Club + + + Yellow + Club + + + Purple + Club + + + Red + Shuriken + + + Green + Shuriken + + + Yellow + Shuriken + + + Orange + Shuriken + + + Purple + Shuriken + + + Red + Star + + + Blue + Star + + + Orange + Star + + + Purple + Star + + + Red + Square + + + Blue + Square + + + Yellow + Square + + + Orange + Square + + + Purple + Square + + + Blue + Round + + + Green + Round + + + Yellow + Round + + + Purple + Round + + + Red + Rhombus + + + Blue + Rhombus + + + Green + Rhombus + + + Yellow + Rhombus + + + Orange + Rhombus + + + Purple + Rhombus + + + Red + Club + + + Blue + Club + + + Green + Club + + + Yellow + Club + + + Orange + Club + + + Purple + Club + + + Red + Shuriken + + + Blue + Shuriken + + + Green + Shuriken + + + Yellow + Shuriken + + + Orange + Shuriken + + + Purple + Shuriken + + + Red + Star + + + Green + Star + + + Yellow + Star + + + Orange + Star + + + Purple + Star + + + Orange + Round + + + Orange + Club + + + Red + Round + + + + + 15 + 12 + + + + Blue + Rhombus + + 0 + 0 + + + + 0 + 1 + + + + Orange + Round + + 0 + 2 + + + + Yellow + Round + + 0 + 3 + + + + Red + Round + + 0 + 4 + + + + 0 + 5 + + + + 0 + 6 + + + + 0 + 7 + + + + 0 + 8 + + + + 0 + 9 + + + + 0 + 10 + + + + 0 + 11 + + + + 0 + 12 + + + + 0 + 13 + + + + 0 + 14 + + + + Red + Rhombus + + 1 + 0 + + + + Blue + Rhombus + + 1 + 1 + + + + Orange + Rhombus + + 1 + 2 + + + + 1 + 3 + + + + 1 + 4 + + + + 1 + 5 + + + + 1 + 6 + + + + 1 + 7 + + + + 1 + 8 + + + + 1 + 9 + + + + 1 + 10 + + + + 1 + 11 + + + + 1 + 12 + + + + 1 + 13 + + + + 1 + 14 + + + + 2 + 0 + + + + Blue + Star + + 2 + 1 + + + + 2 + 2 + + + + 2 + 3 + + + + 2 + 4 + + + + 2 + 5 + + + + 2 + 6 + + + + 2 + 7 + + + + 2 + 8 + + + + 2 + 9 + + + + 2 + 10 + + + + 2 + 11 + + + + 2 + 12 + + + + 2 + 13 + + + + 2 + 14 + + + + 3 + 0 + + + + Blue + Shuriken + + 3 + 1 + + + + 3 + 2 + + + + 3 + 3 + + + + 3 + 4 + + + + 3 + 5 + + + + 3 + 6 + + + + 3 + 7 + + + + 3 + 8 + + + + 3 + 9 + + + + 3 + 10 + + + + 3 + 11 + + + + 3 + 12 + + + + 3 + 13 + + + + 3 + 14 + + + + 4 + 0 + + + + 4 + 1 + + + + 4 + 2 + + + + 4 + 3 + + + + 4 + 4 + + + + 4 + 5 + + + + 4 + 6 + + + + 4 + 7 + + + + 4 + 8 + + + + 4 + 9 + + + + 4 + 10 + + + + 4 + 11 + + + + 4 + 12 + + + + 4 + 13 + + + + 4 + 14 + + + + 5 + 0 + + + + 5 + 1 + + + + 5 + 2 + + + + 5 + 3 + + + + 5 + 4 + + + + 5 + 5 + + + + 5 + 6 + + + + 5 + 7 + + + + 5 + 8 + + + + 5 + 9 + + + + 5 + 10 + + + + 5 + 11 + + + + 5 + 12 + + + + 5 + 13 + + + + 5 + 14 + + + + 6 + 0 + + + + 6 + 1 + + + + 6 + 2 + + + + 6 + 3 + + + + 6 + 4 + + + + 6 + 5 + + + + 6 + 6 + + + + 6 + 7 + + + + 6 + 8 + + + + 6 + 9 + + + + 6 + 10 + + + + 6 + 11 + + + + 6 + 12 + + + + 6 + 13 + + + + 6 + 14 + + + + 7 + 0 + + + + 7 + 1 + + + + 7 + 2 + + + + 7 + 3 + + + + 7 + 4 + + + + 7 + 5 + + + + 7 + 6 + + + + 7 + 7 + + + + 7 + 8 + + + + 7 + 9 + + + + 7 + 10 + + + + 7 + 11 + + + + 7 + 12 + + + + 7 + 13 + + + + 7 + 14 + + + + 8 + 0 + + + + 8 + 1 + + + + 8 + 2 + + + + 8 + 3 + + + + 8 + 4 + + + + 8 + 5 + + + + 8 + 6 + + + + 8 + 7 + + + + 8 + 8 + + + + 8 + 9 + + + + 8 + 10 + + + + 8 + 11 + + + + 8 + 12 + + + + 8 + 13 + + + + 8 + 14 + + + + 9 + 0 + + + + 9 + 1 + + + + 9 + 2 + + + + 9 + 3 + + + + 9 + 4 + + + + 9 + 5 + + + + 9 + 6 + + + + 9 + 7 + + + + 9 + 8 + + + + 9 + 9 + + + + 9 + 10 + + + + 9 + 11 + + + + 9 + 12 + + + + 9 + 13 + + + + 9 + 14 + + + + 10 + 0 + + + + 10 + 1 + + + + 10 + 2 + + + + 10 + 3 + + + + 10 + 4 + + + + 10 + 5 + + + + 10 + 6 + + + + 10 + 7 + + + + 10 + 8 + + + + 10 + 9 + + + + 10 + 10 + + + + 10 + 11 + + + + 10 + 12 + + + + 10 + 13 + + + + 10 + 14 + + + + 11 + 0 + + + + 11 + 1 + + + + 11 + 2 + + + + 11 + 3 + + + + 11 + 4 + + + + 11 + 5 + + + + 11 + 6 + + + + 11 + 7 + + + + 11 + 8 + + + + 11 + 9 + + + + 11 + 10 + + + + 11 + 11 + + + + 11 + 12 + + + + 11 + 13 + + + + 11 + 14 + + + + + + + true + Jules + + + Yellow + Star + + + Orange + Club + + + Orange + Square + + + Yellow + Round + + + Orange + Rhombus + + + Green + Star + + + + + false + Jérémy + + + Green + Square + + + Purple + Square + + + Red + Club + + + Green + Round + + + Yellow + Shuriken + + + Orange + Shuriken + + + + + + + + 8 + + + + 9 + + + \ No newline at end of file diff --git a/Qwirkle/Files/game.json b/Qwirkle/Files/game.json deleted file mode 100644 index 6796780..0000000 --- a/Qwirkle/Files/game.json +++ /dev/null @@ -1 +0,0 @@ -{"GameRunning":false,"bag":null,"board":{"Columns":15,"Rows":12,"cells":[{"Tile":null,"x":0,"y":0},{"Tile":null,"x":0,"y":1},{"Tile":null,"x":0,"y":2},{"Tile":null,"x":0,"y":3},{"Tile":null,"x":0,"y":4},{"Tile":null,"x":0,"y":5},{"Tile":null,"x":0,"y":6},{"Tile":null,"x":0,"y":7},{"Tile":null,"x":0,"y":8},{"Tile":null,"x":0,"y":9},{"Tile":null,"x":0,"y":10},{"Tile":null,"x":0,"y":11},{"Tile":null,"x":0,"y":12},{"Tile":null,"x":0,"y":13},{"Tile":null,"x":0,"y":14},{"Tile":null,"x":1,"y":0},{"Tile":null,"x":1,"y":1},{"Tile":null,"x":1,"y":2},{"Tile":null,"x":1,"y":3},{"Tile":null,"x":1,"y":4},{"Tile":null,"x":1,"y":5},{"Tile":null,"x":1,"y":6},{"Tile":null,"x":1,"y":7},{"Tile":null,"x":1,"y":8},{"Tile":null,"x":1,"y":9},{"Tile":null,"x":1,"y":10},{"Tile":null,"x":1,"y":11},{"Tile":null,"x":1,"y":12},{"Tile":null,"x":1,"y":13},{"Tile":null,"x":1,"y":14},{"Tile":null,"x":2,"y":0},{"Tile":null,"x":2,"y":1},{"Tile":null,"x":2,"y":2},{"Tile":null,"x":2,"y":3},{"Tile":null,"x":2,"y":4},{"Tile":null,"x":2,"y":5},{"Tile":null,"x":2,"y":6},{"Tile":null,"x":2,"y":7},{"Tile":null,"x":2,"y":8},{"Tile":null,"x":2,"y":9},{"Tile":null,"x":2,"y":10},{"Tile":null,"x":2,"y":11},{"Tile":null,"x":2,"y":12},{"Tile":null,"x":2,"y":13},{"Tile":null,"x":2,"y":14},{"Tile":null,"x":3,"y":0},{"Tile":null,"x":3,"y":1},{"Tile":null,"x":3,"y":2},{"Tile":null,"x":3,"y":3},{"Tile":null,"x":3,"y":4},{"Tile":null,"x":3,"y":5},{"Tile":null,"x":3,"y":6},{"Tile":null,"x":3,"y":7},{"Tile":null,"x":3,"y":8},{"Tile":null,"x":3,"y":9},{"Tile":null,"x":3,"y":10},{"Tile":null,"x":3,"y":11},{"Tile":null,"x":3,"y":12},{"Tile":null,"x":3,"y":13},{"Tile":null,"x":3,"y":14},{"Tile":null,"x":4,"y":0},{"Tile":null,"x":4,"y":1},{"Tile":null,"x":4,"y":2},{"Tile":null,"x":4,"y":3},{"Tile":null,"x":4,"y":4},{"Tile":null,"x":4,"y":5},{"Tile":null,"x":4,"y":6},{"Tile":null,"x":4,"y":7},{"Tile":null,"x":4,"y":8},{"Tile":null,"x":4,"y":9},{"Tile":null,"x":4,"y":10},{"Tile":null,"x":4,"y":11},{"Tile":null,"x":4,"y":12},{"Tile":null,"x":4,"y":13},{"Tile":null,"x":4,"y":14},{"Tile":null,"x":5,"y":0},{"Tile":null,"x":5,"y":1},{"Tile":null,"x":5,"y":2},{"Tile":null,"x":5,"y":3},{"Tile":null,"x":5,"y":4},{"Tile":null,"x":5,"y":5},{"Tile":null,"x":5,"y":6},{"Tile":null,"x":5,"y":7},{"Tile":null,"x":5,"y":8},{"Tile":null,"x":5,"y":9},{"Tile":null,"x":5,"y":10},{"Tile":null,"x":5,"y":11},{"Tile":null,"x":5,"y":12},{"Tile":null,"x":5,"y":13},{"Tile":null,"x":5,"y":14},{"Tile":null,"x":6,"y":0},{"Tile":null,"x":6,"y":1},{"Tile":null,"x":6,"y":2},{"Tile":null,"x":6,"y":3},{"Tile":null,"x":6,"y":4},{"Tile":null,"x":6,"y":5},{"Tile":null,"x":6,"y":6},{"Tile":null,"x":6,"y":7},{"Tile":null,"x":6,"y":8},{"Tile":null,"x":6,"y":9},{"Tile":null,"x":6,"y":10},{"Tile":null,"x":6,"y":11},{"Tile":null,"x":6,"y":12},{"Tile":null,"x":6,"y":13},{"Tile":null,"x":6,"y":14},{"Tile":null,"x":7,"y":0},{"Tile":null,"x":7,"y":1},{"Tile":null,"x":7,"y":2},{"Tile":null,"x":7,"y":3},{"Tile":null,"x":7,"y":4},{"Tile":null,"x":7,"y":5},{"Tile":null,"x":7,"y":6},{"Tile":null,"x":7,"y":7},{"Tile":null,"x":7,"y":8},{"Tile":null,"x":7,"y":9},{"Tile":null,"x":7,"y":10},{"Tile":null,"x":7,"y":11},{"Tile":null,"x":7,"y":12},{"Tile":null,"x":7,"y":13},{"Tile":null,"x":7,"y":14},{"Tile":null,"x":8,"y":0},{"Tile":null,"x":8,"y":1},{"Tile":null,"x":8,"y":2},{"Tile":null,"x":8,"y":3},{"Tile":null,"x":8,"y":4},{"Tile":null,"x":8,"y":5},{"Tile":null,"x":8,"y":6},{"Tile":null,"x":8,"y":7},{"Tile":null,"x":8,"y":8},{"Tile":null,"x":8,"y":9},{"Tile":null,"x":8,"y":10},{"Tile":null,"x":8,"y":11},{"Tile":null,"x":8,"y":12},{"Tile":null,"x":8,"y":13},{"Tile":null,"x":8,"y":14},{"Tile":null,"x":9,"y":0},{"Tile":null,"x":9,"y":1},{"Tile":null,"x":9,"y":2},{"Tile":null,"x":9,"y":3},{"Tile":null,"x":9,"y":4},{"Tile":null,"x":9,"y":5},{"Tile":null,"x":9,"y":6},{"Tile":null,"x":9,"y":7},{"Tile":null,"x":9,"y":8},{"Tile":null,"x":9,"y":9},{"Tile":null,"x":9,"y":10},{"Tile":null,"x":9,"y":11},{"Tile":null,"x":9,"y":12},{"Tile":null,"x":9,"y":13},{"Tile":null,"x":9,"y":14},{"Tile":null,"x":10,"y":0},{"Tile":null,"x":10,"y":1},{"Tile":null,"x":10,"y":2},{"Tile":null,"x":10,"y":3},{"Tile":null,"x":10,"y":4},{"Tile":null,"x":10,"y":5},{"Tile":null,"x":10,"y":6},{"Tile":null,"x":10,"y":7},{"Tile":null,"x":10,"y":8},{"Tile":null,"x":10,"y":9},{"Tile":null,"x":10,"y":10},{"Tile":null,"x":10,"y":11},{"Tile":null,"x":10,"y":12},{"Tile":null,"x":10,"y":13},{"Tile":null,"x":10,"y":14},{"Tile":null,"x":11,"y":0},{"Tile":null,"x":11,"y":1},{"Tile":null,"x":11,"y":2},{"Tile":null,"x":11,"y":3},{"Tile":null,"x":11,"y":4},{"Tile":null,"x":11,"y":5},{"Tile":null,"x":11,"y":6},{"Tile":null,"x":11,"y":7},{"Tile":null,"x":11,"y":8},{"Tile":null,"x":11,"y":9},{"Tile":null,"x":11,"y":10},{"Tile":null,"x":11,"y":11},{"Tile":null,"x":11,"y":12},{"Tile":null,"x":11,"y":13},{"Tile":null,"x":11,"y":14}]},"cellUsed":[],"players":[],"scoreBoard":[]} \ No newline at end of file diff --git a/Qwirkle/QwirkleClassLibrary/Persistences/GamePersistenceJson.cs b/Qwirkle/QwirkleClassLibrary/Persistences/GamePersistenceJson.cs deleted file mode 100644 index 83e409f..0000000 --- a/Qwirkle/QwirkleClassLibrary/Persistences/GamePersistenceJson.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Runtime.Serialization.Json; -using QwirkleClassLibrary.Games; - -namespace QwirkleClassLibrary.Persistences; - -public class GamePersistenceJson : IGamePersistence -{ - public void SaveGame(Game game) - { - var serializer = new DataContractJsonSerializer(typeof(Game)); - - using (Stream writer = File.Create("Game.json")) - { - serializer.WriteObject(writer, game); - } - } - - public Game LoadGame() - { - var serializer = new DataContractJsonSerializer(typeof(Game)); - - using (Stream reader = File.OpenRead("Game.json")) - { - return serializer.ReadObject(reader) as Game ?? throw new InvalidOperationException(); - } - } -} \ No newline at end of file diff --git a/Qwirkle/QwirkleClassLibrary/Persistences/GamePersistenceXml.cs b/Qwirkle/QwirkleClassLibrary/Persistences/GamePersistenceXml.cs new file mode 100644 index 0000000..8325cc2 --- /dev/null +++ b/Qwirkle/QwirkleClassLibrary/Persistences/GamePersistenceXml.cs @@ -0,0 +1,28 @@ +using System.Runtime.Serialization; +using QwirkleClassLibrary.Games; + +namespace QwirkleClassLibrary.Persistences; + +public class GamePersistenceXml : IGamePersistence +{ + public void SaveGame(Game game) + { + var serializer = new DataContractSerializer(typeof(Game), + new DataContractSerializerSettings() { PreserveObjectReferences = true }); + + using (Stream writer = File.Create("Game.xml")) + { + serializer.WriteObject(writer, game); + } + } + + public Game LoadGame() + { + var serializer = new DataContractSerializer(typeof(Game)); + + using (Stream reader = File.OpenRead("Game.xml")) + { + return serializer.ReadObject(reader) as Game ?? throw new InvalidOperationException(); + } + } +} \ No newline at end of file diff --git a/Qwirkle/QwirkleClassLibrary/Tiles/TileBag.cs b/Qwirkle/QwirkleClassLibrary/Tiles/TileBag.cs index a1821e2..fc6381a 100644 --- a/Qwirkle/QwirkleClassLibrary/Tiles/TileBag.cs +++ b/Qwirkle/QwirkleClassLibrary/Tiles/TileBag.cs @@ -11,10 +11,11 @@ namespace QwirkleClassLibrary.Tiles [DataContract] public class TileBag { - public ReadOnlyCollection TilesBag { get; private set; } - [DataMember] private readonly List tiles = new List(); + + public ReadOnlyCollection TilesBag { get; private set; } + /// /// This is the constructor for the TileBag. It will create a tile of each of the possibilities among the Color and Shape Enums. @@ -40,7 +41,7 @@ namespace QwirkleClassLibrary.Tiles } } - TilesBag = tiles.AsReadOnly(); + Init(); } /// @@ -69,5 +70,11 @@ namespace QwirkleClassLibrary.Tiles } return false; } + + [OnDeserialized] + private void Init(StreamingContext sc = new()) + { + TilesBag = tiles.AsReadOnly(); + } } } \ No newline at end of file diff --git a/Qwirkle/QwirkleConsoleApp/Program.cs b/Qwirkle/QwirkleConsoleApp/Program.cs index 9f17631..a6224bb 100644 --- a/Qwirkle/QwirkleConsoleApp/Program.cs +++ b/Qwirkle/QwirkleConsoleApp/Program.cs @@ -218,12 +218,12 @@ static void MenuSwitch(Game game) game.DrawTiles(game.GetPlayingPlayer()); game.CheckGameOver(game.GetPlayingPlayer()); - IGamePersistence gameSave = new GamePersistenceJson(); + IGamePersistence gameSave = new GamePersistenceXml(); gameSave.SaveGame(game); return; case 4: - IGamePersistence endGameSave = new GamePersistenceJson(); + IGamePersistence endGameSave = new GamePersistenceXml(); endGameSave.SaveGame(game); game.GameRunning = false; @@ -289,6 +289,27 @@ static void ShowLeaderboard(Leaderboard leaderboard) WriteLine(); } +static void GameLoop(Game game) +{ + NotificationClass nc = new NotificationClass(); + + do + { + game.NextPlayerNotified += nc.NotificationNextPlayer; + game.EndOfGameNotified += nc.NotificationEndOfGame; + + game.SetNextPlayer(); + + WriteLine(" --------------------- GAME ! ------------------------"); + + MenuSwitch(game); + + game.NextPlayerNotified -= nc.NotificationNextPlayer; + game.EndOfGameNotified -= nc.NotificationEndOfGame; + + } while (game.GameRunning); +} + static void MainMenu(Game game) { game.GiveTilesToPlayers(); @@ -326,24 +347,14 @@ static void MainMenuContinue(Game game) ForegroundColor = ConsoleColor.Green; WriteLine("Game loaded ! You can continue the game !"); ResetColor(); - - NotificationClass nc = new NotificationClass(); - - do - { - game.NextPlayerNotified += nc.NotificationNextPlayer; - game.EndOfGameNotified += nc.NotificationEndOfGame; - game.SetNextPlayer(); - - WriteLine(" --------------------- GAME ! ------------------------"); + NotificationClass nc = new NotificationClass(); - MenuSwitch(game); + WriteLine(" --------------------- GAME ! ------------------------"); - game.NextPlayerNotified -= nc.NotificationNextPlayer; - game.EndOfGameNotified -= nc.NotificationEndOfGame; + MenuSwitch(game); - } while (game.GameRunning); + GameLoop(game); } static void MainGame() @@ -411,7 +422,7 @@ static void MainGame() case 2: Game loadedGame; - IGamePersistence gameLoad = new GamePersistenceJson(); + IGamePersistence gameLoad = new GamePersistenceXml(); loadedGame = gameLoad.LoadGame(); ILeaderboardPersistence leaderboardLoad = new LeaderboardPersistenceJson(); diff --git a/Qwirkle/TestBase/TestPersistence.cs b/Qwirkle/TestBase/TestPersistence.cs index 8894bf7..d0fdb9d 100644 --- a/Qwirkle/TestBase/TestPersistence.cs +++ b/Qwirkle/TestBase/TestPersistence.cs @@ -13,7 +13,7 @@ namespace TestBase { var game = new Game(); - var gamePersistence = new GamePersistenceJson(); + var gamePersistence = new GamePersistenceXml(); gamePersistence.SaveGame(game); Assert.True(File.Exists("Game.json")); @@ -29,7 +29,7 @@ namespace TestBase game.AddPlayerInGame(["Jules", "Jérémy"]); game.StartGame(); - var gamePersistence = new GamePersistenceJson(); + var gamePersistence = new GamePersistenceXml(); gamePersistence.SaveGame(game); var loadedGame = gamePersistence.LoadGame(); From c39d5019b50ddd99e190d021800b6db8a9a4de49 Mon Sep 17 00:00:00 2001 From: "jules.lascret" Date: Sun, 2 Jun 2024 13:58:12 +0200 Subject: [PATCH 2/2] Fixed test issue that resulted from previous modification --- Qwirkle/TestBase/TestPersistence.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Qwirkle/TestBase/TestPersistence.cs b/Qwirkle/TestBase/TestPersistence.cs index d0fdb9d..cf29910 100644 --- a/Qwirkle/TestBase/TestPersistence.cs +++ b/Qwirkle/TestBase/TestPersistence.cs @@ -16,7 +16,7 @@ namespace TestBase var gamePersistence = new GamePersistenceXml(); gamePersistence.SaveGame(game); - Assert.True(File.Exists("Game.json")); + Assert.True(File.Exists("Game.xml")); } [Fact]