public void GivenClericAndPyromancerOnboard_WhenPlayerCastsCoinAndCircleOfHealing_ThenClericDrawsTwoCards() { var cleric = Minions.NorthshireCleric.AsOnboard(); var pyromancer = Minions.WildPyromancer.AsOnboard(); var gameState = GameState.Empty.With(PlayerGameState.Empty.With(_player, minions: x => x.AddRange(new[] { cleric, pyromancer }), hand: x => x.With(new[] { Spells.TheCoin, Spells.CircleOfHealing }), deck: x => x.With(new[] { Minions.BloodfenRaptor, Minions.BoulderfistOgre }))); var coinAction = new CastSpellTargetless(_player, Spells.TheCoin); var circleAction = new CastSpellTargetless(_player, Spells.CircleOfHealing); var newState = _testee.ApplyAction(gameState, coinAction); newState = _testee.ApplyAction(newState, circleAction); var newHand = newState.Of(_player).Hand; var newBoard = newState.Of(_player).Minions; Assert.IsTrue(newHand.Count() == 2); Assert.IsTrue(newHand.First() == Minions.BloodfenRaptor); Assert.IsTrue(newHand.Last() == Minions.BoulderfistOgre); Assert.IsTrue(newBoard.Count == 2); Assert.IsTrue(newBoard.First().Health == Minions.NorthshireCleric.Health - 1); Assert.IsTrue(newBoard.Last().Health == Minions.WildPyromancer.Health - 1); }
public void GivenOneMinionOnboard_WhenCastsMirrorImage_ThenImagesAreSummonedOnTheRightSideOfBoard() { var gameState = GameState.Empty.With( PlayerGameState.Empty.With(_player, minions: x => x.Add(new Minion(Minions.BloodfenRaptor)), hand: x => x.AddCard(Spells.MirrorImage), remainingMana: x => 10)); var spellCastAction = new CastSpellTargetless(_player, Spells.MirrorImage); var newState = _testee.ApplyAction(gameState, spellCastAction); var onBoardMinions = newState.Of(_player).Minions; Assert.IsTrue(onBoardMinions.Count == 3); Assert.IsTrue(IsSimilar(onBoardMinions[0], Minions.BloodfenRaptor)); Assert.IsTrue(IsSimilar(onBoardMinions[1], Minions.Uncollectible.MirrorImage)); Assert.IsTrue(IsSimilar(onBoardMinions[2], Minions.Uncollectible.MirrorImage)); }