public void JoinAndAllocate() { var game = new Game(5, false); Assert.AreEqual(Game.State.GameSetup, game.DetermineState()); game.AddCharacter(Character.Assassin); game.AddCharacter(Character.LoyalServantOfArthur); game.AddCharacter(Character.Percival); game.AddCharacter(Character.Morgana); game.AddCharacter(Character.Merlin); Assert.AreEqual(Game.State.GameSetup, game.DetermineState()); game.JoinGame("a"); game.JoinGame("b"); game.JoinGame("c"); game.JoinGame("d"); Assert.AreEqual(Game.State.GameSetup, game.DetermineState()); game.JoinGame("e"); Assert.AreEqual(Game.State.Playing, game.DetermineState()); var allocatedCharacters = game.Players.Select(p=> p.Character).ToList(); Assert.IsTrue(allocatedCharacters.Contains(Character.Assassin)); Assert.IsTrue(allocatedCharacters.Contains(Character.LoyalServantOfArthur)); Assert.IsTrue(allocatedCharacters.Contains(Character.Percival)); Assert.IsTrue(allocatedCharacters.Contains(Character.Morgana)); Assert.IsTrue(allocatedCharacters.Contains(Character.Merlin)); Assert.IsFalse(allocatedCharacters.Contains(Character.UnAllocated)); }