public void StartAFight_ThenAnotherPlayerJoins_ResultsInRaisedHeroStrength_Test() { var quest = QuestFactory.CreateStartedWithMaleHero( out var gameStore, out var gameId, out var playerId, out var sequence); var xena = new Hero(PlayerFactory.CreateFemale("Xena")); var game = quest.GetState(gameId); var hero = game.GetHero(playerId); var heroLevelRaise = LevelMessage.Create(sequence.Next, playerId, 1); var heroBonusRaise = BonusMessage.Create(sequence.Next, playerId, 1); var addXena = PlayerMessage.CreateAdd(sequence.Next, new[] { xena.Player }); var xenaLevelRaise = LevelMessage.Create(sequence.Next, xena.Player.Id, 1); var xenaBonusRaise = BonusMessage.Create(sequence.Next, xena.Player.Id, 1); var startFight = FightStartMessage.Create(sequence.Next, hero.Player.Id, zerschmetterling); var preparation = new GameMessage[] { heroLevelRaise, heroBonusRaise, addXena, xenaLevelRaise, xenaBonusRaise, startFight }; var xenaJoinsFight = FightJoinMessage.Create(sequence.Next, xena.Player.Id); quest.AddMessages(gameId, preparation); game = quest.AddMessage(gameId, xenaJoinsFight); Assert.NotNull(game.Score.Fight); Assert.Equal(2, game.Score.Fight.Heroes.Count); Assert.Equal(6, game.Score.Fight.TotalHeroesScore); }
public void StartingAFightWhenGameIsNotStarted_ThrowsInvalidActionException_Test() { // Arrange var quest = QuestFactory.CreateStored(out var gameStore, out var gameId); var hero = new Hero(PlayerFactory.CreateMale("GI Joe")); var monster = new Monster("Plastiksoldaten", 2); var startFight = FightStartMessage.Create(1, hero.Player.Id, monster); // Act & Assert Assert.Throws <InvalidActionException>(() => quest.AddMessage(gameId, startFight)); }
public void StartingAFightWhileAnotherFightIsNotEnded_ThrowsInvalidActionException_Test() { // Arrange var quest = QuestFactory.CreateStartedWithMaleHero(out var gameStore, out var gameId, out var playerId, out var sequence); var monster = new Monster("Plastiksoldaten", 2); var startFight = FightStartMessage.Create(sequence.Next, playerId, monster); var startAnotherFight = FightStartMessage.Create(sequence.Next, playerId, monster); // Act & Assert quest.AddMessage(gameId, startFight); Assert.Throws <InvalidActionException>(() => quest.AddMessage(gameId, startAnotherFight)); }
public void StartAndEndAFight_ResultingInAnEmptyFightState_Test() { var quest = QuestFactory.CreateStartedWithMaleHero( out var gameStore, out var gameId, out var playerId, out var sequence); var game = quest.GetState(gameId); var hero = game.GetHero(playerId); var startFight = FightStartMessage.Create(sequence.Next, hero.Player.Id, zerschmetterling); var endFight = FightEndMessage.Create(sequence.Next, badThings); quest.AddMessage(gameId, startFight); game = quest.AddMessage(gameId, endFight); Assert.Null(game.Score.Fight); }
public void StartFight_ResultingInASetFightState_Test() { var quest = QuestFactory.CreateStartedWithMaleHero( out var gameStore, out var gameId, out var playerId, out var sequence); var game = quest.GetState(gameId); var hero = game.GetHero(playerId); var startFight = FightStartMessage.Create(sequence.Next, hero.Player.Id, zerschmetterling); game = quest.AddMessage(gameId, startFight); Assert.NotNull(game.Score.Fight); Assert.Equal(zerschmetterling.Name, game.Score.Fight.Monsters.First().Name); Assert.Equal(hero.Player.Id, game.Score.Fight.Heroes.First().Player.Id); }