Example #1
0
        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));
        }