diff --git a/Sources/Model/Games/GameRunner.cs b/Sources/Model/Games/GameRunner.cs index 15391f7..06a8188 100644 --- a/Sources/Model/Games/GameRunner.cs +++ b/Sources/Model/Games/GameRunner.cs @@ -67,10 +67,10 @@ namespace Model.Games /// creates a new game /// /// - public void StartNewGame(string name, PlayerManager playerManager, IEnumerable> dice) + public Game StartNewGame(string name, PlayerManager playerManager, IEnumerable> dice) { Game game = new(name, playerManager, dice); - Add(game); + return Add(game); } public void Remove(Game toRemove) diff --git a/Sources/Tests/Model_UTs/GameRunnerTest.cs b/Sources/Tests/Model_UTs/GameRunnerTest.cs index c8a715b..275eb8e 100644 --- a/Sources/Tests/Model_UTs/GameRunnerTest.cs +++ b/Sources/Tests/Model_UTs/GameRunnerTest.cs @@ -1,13 +1,10 @@ -using Model.Games; +using Data; using Model.Dice; -using Model.Dice.Faces; +using Model.Games; using Model.Players; -using Data; using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using Xunit; namespace Tests.Model_UTs @@ -76,10 +73,10 @@ namespace Tests.Model_UTs public void TestAddWhenNullThenThrowsException() { // Arrange - + GameRunner gameRunner = stubGameRunner; // Act - void action() => stubGameRunner.Add(null);// Add() returns the added element if succesful + void action() => gameRunner.Add(null);// Add() returns the added element if succesful // Assert Assert.Throws(action); @@ -93,10 +90,10 @@ namespace Tests.Model_UTs public void TestGetOneByNameWhenInvalidThenThrowsException(string name) { // Arrange - + GameRunner gameRunner = stubGameRunner; // Act - void action() => stubGameRunner.GetOneByName(name); + void action() => gameRunner.GetOneByName(name); // Assert Assert.Throws(action); @@ -106,10 +103,10 @@ namespace Tests.Model_UTs public void TestGetOneByNameWhenValidButNotExistThenReturnNull() { // Arrange - + GameRunner gameRunner = stubGameRunner; // Act - Game result = stubGameRunner.GetOneByName("thereisbasicallynowaythatthisgamenamealreadyexists"); + Game result = gameRunner.GetOneByName("thereisbasicallynowaythatthisgamenamealreadyexists"); // Assert Assert.Null(result); @@ -134,24 +131,25 @@ namespace Tests.Model_UTs public void TestWhenRemoveExistsThenSucceeds() { // Arrange - Game game = new("blargh", new PlayerManager(), stubGameRunner.GetAll().First().Dice); - stubGameRunner.Add(game); + GameRunner gameRunner = stubGameRunner; + Game game = new("blargh", new PlayerManager(), gameRunner.GetAll().First().Dice); + gameRunner.Add(game); // Act - stubGameRunner.Remove(game); + gameRunner.Remove(game); // Assert - Assert.DoesNotContain(game, stubGameRunner.GetAll()); + Assert.DoesNotContain(game, gameRunner.GetAll()); } [Fact] public void TestRemoveWhenGivenNullThenThrowsException() { // Arrange - + GameRunner gameRunner = stubGameRunner; // Act - void action() => stubGameRunner.Remove(null); + void action() => gameRunner.Remove(null); // Assert Assert.Throws(action); @@ -161,12 +159,13 @@ namespace Tests.Model_UTs public void TestRemoveWhenGiveenNonExistentThenFailsSilently() { // Arrange - Game notGame = new("blargh", new PlayerManager(), stubGameRunner.GetAll().First().Dice); - IEnumerable expected = stubGameRunner.GetAll(); + GameRunner gameRunner = stubGameRunner; + Game notGame = new("blargh", new PlayerManager(), gameRunner.GetAll().First().Dice); + IEnumerable expected = gameRunner.GetAll(); // Act - stubGameRunner.Remove(notGame); - IEnumerable actual = stubGameRunner.GetAll(); + gameRunner.Remove(notGame); + IEnumerable actual = gameRunner.GetAll(); // Assert Assert.Equal(actual, expected); @@ -205,16 +204,17 @@ namespace Tests.Model_UTs public void TestUpdateWhenValidBeforeAndInvalidAfterThenDoesNotGo(string badName) { // Arrange - int expectedSize = stubGameRunner.GetAll().Count(); - Game oldGame = stubGameRunner.GetAll().First(); + GameRunner gameRunner = stubGameRunner; + int expectedSize = gameRunner.GetAll().Count(); + Game oldGame = gameRunner.GetAll().First(); // Act - void action() => stubGameRunner.Update(oldGame, new(badName, oldGame.PlayerManager, oldGame.Dice)); - int actualSize = stubGameRunner.GetAll().Count(); + void action() => gameRunner.Update(oldGame, new(badName, oldGame.PlayerManager, oldGame.Dice)); + int actualSize = gameRunner.GetAll().Count(); // Assert Assert.Throws(action); // thrown by constructor - Assert.Contains(oldGame, stubGameRunner.GetAll()); // still there + Assert.Contains(oldGame, gameRunner.GetAll()); // still there Assert.True(expectedSize == actualSize); } @@ -222,16 +222,17 @@ namespace Tests.Model_UTs public void TestUpdateWhenValidBeforeAndNullAfterThenDoesNotGo() { // Arrange - int expectedSize = stubGameRunner.GetAll().Count(); - Game oldGame = stubGameRunner.GetAll().First(); + GameRunner gameRunner = stubGameRunner; + int expectedSize = gameRunner.GetAll().Count(); + Game oldGame = gameRunner.GetAll().First(); // Act - void action() => stubGameRunner.Update(oldGame, null); - int actualSize = stubGameRunner.GetAll().Count(); + void action() => gameRunner.Update(oldGame, null); + int actualSize = gameRunner.GetAll().Count(); // Assert Assert.Throws(action); // thrown by constructor - Assert.Contains(oldGame, stubGameRunner.GetAll()); // still there + Assert.Contains(oldGame, gameRunner.GetAll()); // still there Assert.True(expectedSize == actualSize); } @@ -239,16 +240,17 @@ namespace Tests.Model_UTs public void TestUpdateDoesNotGoWithValidAfterAndNullBefore() { // Arrange - int expectedSize = stubGameRunner.GetAll().Count(); - Game oldGame = stubGameRunner.GetAll().First(); + GameRunner gameRunner = stubGameRunner; + int expectedSize = gameRunner.GetAll().Count(); + Game oldGame = gameRunner.GetAll().First(); // Act - void action() => stubGameRunner.Update(null, new("newgamename", oldGame.PlayerManager, oldGame.Dice)); - int actualSize = stubGameRunner.GetAll().Count(); + void action() => gameRunner.Update(null, new("newgamename", oldGame.PlayerManager, oldGame.Dice)); + int actualSize = gameRunner.GetAll().Count(); // Assert Assert.Throws(action); // thrown by constructor - Assert.Contains(oldGame, stubGameRunner.GetAll()); // still there + Assert.Contains(oldGame, gameRunner.GetAll()); // still there Assert.True(expectedSize == actualSize); } @@ -259,17 +261,49 @@ namespace Tests.Model_UTs public void TestUpdateWhenInvalidBeforeAndValidAfterThenDoesNotGo(string badName) { // Arrange - int expectedSize = stubGameRunner.GetAll().Count(); - Game oldGame = stubGameRunner.GetAll().First(); + GameRunner gameRunner = stubGameRunner; + int expectedSize = gameRunner.GetAll().Count(); + Game oldGame = gameRunner.GetAll().First(); // Act - void action() => stubGameRunner.Update(new(badName, oldGame.PlayerManager, oldGame.Dice), new("valid", oldGame.PlayerManager, oldGame.Dice)); - int actualSize = stubGameRunner.GetAll().Count(); + void action() => gameRunner.Update(new(badName, oldGame.PlayerManager, oldGame.Dice), new("valid", oldGame.PlayerManager, oldGame.Dice)); + int actualSize = gameRunner.GetAll().Count(); // Assert Assert.Throws(action); // thrown by constructor - Assert.Contains(oldGame, stubGameRunner.GetAll()); // still there + Assert.Contains(oldGame, gameRunner.GetAll()); // still there Assert.True(expectedSize == actualSize); } + + [Fact] + public void TestPlayGameWhenPlayThenAddNewTurnToHistory() + { + // Arrange + GameRunner gameRunner = stubGameRunner; + Game game = gameRunner.GetAll().First(); + + // Act + int turnsBefore = game.GetHistory().Count(); + GameRunner.PlayGame(game); + int turnsAfter = game.GetHistory().Count(); + + // Assert + Assert.Equal(turnsBefore + 1, turnsAfter); + } + + [Fact] + public void TestStartNewGame() + { + // Arrange + GameRunner gameRunner = stubGameRunner; + string name = "blargh"; + + // Act + Assert.DoesNotContain(gameRunner.GetOneByName(name), gameRunner.GetAll()); + gameRunner.StartNewGame(name, new PlayerManager(), stubGameRunner.GetAll().First().Dice); + + // Assert + Assert.Contains(gameRunner.GetOneByName(name), gameRunner.GetAll()); + } } }