diff --git a/source/Trek-12/Tests/GameTests.cs b/source/Trek-12/Tests/GameTests.cs index 066aeff..d58ea3c 100644 --- a/source/Trek-12/Tests/GameTests.cs +++ b/source/Trek-12/Tests/GameTests.cs @@ -1,4 +1,5 @@ -using Moq; +using System.Collections.ObjectModel; +using Moq; using Models.Game; using Models.Interfaces; using System.Reflection; @@ -76,10 +77,10 @@ public class GameTests [Fact] public void LoadData_ShouldLoadDataFromPersistence() { - var players = new List { new Player() }; - var games = new List { new Game(_mockPersistence.Object) }; - var maps = new List { new Map("test_background") }; - var bestScores = new List { new BestScore(1, 26) }; + var players = new ObservableCollection { new Player() }; + var games = new ObservableCollection { new Game(_mockPersistence.Object) }; + var maps = new ObservableCollection { new Map("test_background") }; + var bestScores = new ObservableCollection { new BestScore(1, 26) }; _mockPersistence.Setup(p => p.LoadData()).Returns((players, games, maps, bestScores)); @@ -243,4 +244,87 @@ public class GameTests Assert.True(isChecked); } + + [Fact] + public void IsPlaceOperationCorrect() + { + var player = new Player(); + var map = new Map("test_background"); + + _game.InitializeGame(map, player); + Assert.NotNull(_game.GameRules); + _game.UsedMap.Boards[0].Value = 1; + _game.UsedMap.Boards[1].Value = 2; + + var methodInfo = typeof(Game).GetMethod("PlaceResult", BindingFlags.NonPublic | BindingFlags.Instance); + Assert.NotNull(methodInfo); + + var cell = new Cell(0, 2); + cell.Value = 3; + methodInfo.Invoke(_game, new object[] { cell, 3 }); + + Assert.Equal(3, _game.UsedMap.Boards[2].Value); + } + + [Fact] + public void IsHandlePlayerChoice_Handling() + { + var player = new Player(); + var map = new Map("test_background"); + + _game.InitializeGame(map, player); + + var cell = new Cell(0, 1); + _game.UsedMap.Boards[0].Value = 1; + bool result = _game.HandlePlayerChoice(cell, 1); + Assert.True(result); + } + + [Fact] + public void IsHandlePlayerChoice_InvalidCell() + { + var player = new Player(); + var map = new Map("test_background"); + + _game.InitializeGame(map, player); + + var cell = new Cell(0, 7); + cell.Value = 1; + bool result = _game.HandlePlayerChoice(cell, 1); + Assert.False(result); + } + + [Fact] + public void IsHandlePlayerChoice_InvalidPlace() + { + var player = new Player(); + var map = new Map("test_background"); + + _game.InitializeGame(map, player); + + var cell = new Cell(0, 0); + cell.Value = 1; + var othercell = new Cell(3, 3); + bool result = _game.HandlePlayerChoice(othercell, 1); + Assert.False(result); + } + + [Fact] + public void ShouldTriggerEventWhenEnded() + { + var player = new Player(); + var map = new Map("test_background"); + bool eventTriggered = false; + + _game.GameEnded += (sender, args) => + { + eventTriggered = true; + }; + + _game.InitializeGame(map, player, true); + Assert.True(eventTriggered); + Assert.False(_game.IsRunning); + Assert.Equal(map, _game.UsedMap); + Assert.Equal(player, _game.CurrentPlayer); + } }