public void GivenInjuredBlademasterInHand_WhenSummoned_ThenBlademasterDealsFourDamageToHimself() { var gameState = GameState.Empty.With(PlayerGameState.Empty.With(_player, hand: x => x.AddCard(Minions.InjuredBlademaster), remainingMana: x => 10)); var summonAction = new SummonBattlecryTargetless(_player, Minions.InjuredBlademaster); var newState = _testee.ApplyAction(gameState, summonAction); Assert.IsTrue(newState.Of(_player).Minions.Single().Health == Minions.InjuredBlademaster.Health - 4); }
public void GivenEmptyBoard_WhenSummonsMurlocTidehunter_ThenPlayerWillHaveBothTidehunterAndScoutOnboard() { var gameState = GameState.Empty.With( PlayerGameState.Empty.With(_player, hand: x => x.AddCard(Minions.MurlocTidehunter), remainingMana: x => 10)); var summonAction = new SummonBattlecryTargetless(_player, Minions.MurlocTidehunter); var newState = _testee.ApplyAction(gameState, summonAction); var supposedTidehunter = newState.Of(_player).Minions.First(); var supposedScout = newState.Of(_player).Minions.Last(); Assert.IsTrue(supposedTidehunter.Attack == 2 && supposedTidehunter.Health == 1); Assert.IsTrue(supposedScout.Attack == 1 && supposedTidehunter.Health == 1); }
public void GivenNoviceEngineerInHand_WhenSummoned_ThenPlayerDrawsOneCard() { var novice = Minions.NoviceEngineer; var gameState = GameState.Empty.With( PlayerGameState.Empty.With(_player, hand: x => x.AddCard(novice), remainingMana: x => novice.ManaCost, deck: x => x.With(Minions.BoulderfistOgre.Yield()))); var action = new SummonBattlecryTargetless(_player, novice); var newState = _testee.ApplyAction(gameState, action); Assert.IsTrue(newState.Of(_player).Hand.Single() == Minions.BoulderfistOgre); Assert.IsTrue(newState.Of(_player).Deck.IsEmpty); }
public void GivenNightBladeInHand_WhenSummoned_ThenEnemyFaceRecievesThreeDamage() { var nightBlade = Minions.NightBlade; var bFace = Face.Empty; var gameState = GameState.Empty.With( PlayerGameState.Empty.With(_player, hand: x => x.AddCard(nightBlade), remainingMana: x => nightBlade.ManaCost), PlayerGameState.Empty.With(face: x => bFace)); var action = new SummonBattlecryTargetless(_player, nightBlade); var newState = _testee.ApplyAction(gameState, action); Assert.IsTrue(newState.OfOpponent(_player).Face.Health == bFace.Health - 3); }
public void GivenDarkscaleHealerInHand_WhenSummoned_ThenAllFriendlyCharsHealedByTwo() { var healer = Minions.DarkscaleHealer; var face = Face.Empty.With(health: 15); var minion = Minion.Empty.With(health: 5, healthBuffCurrent: 3); var gameState = GameState.Empty.With( PlayerGameState.Empty.With(_player, x => face, x => x.Add(minion), hand: x => x.AddCard(healer), remainingMana: x => healer.ManaCost)); var action = new SummonBattlecryTargetless(_player, healer, 1); var newState = _testee.ApplyAction(gameState, action); Assert.IsTrue(newState.Of(_player).Face.Health == face.Health + 2); Assert.IsTrue(newState.Of(_player).Minions.First().Health == minion.Health + 2); }
public void GivenArgusAndTwoMinionsOnboard_WhenPlaysArgusIntoMiddle_ThenAdjacentMinionsGotOneOneBuffAndTaunt() { var yeti = new Minion(Minions.ChillwindYeti); var raptor = new Minion(Minions.BloodfenRaptor); var gameState = GameState.Empty.With(PlayerGameState.Empty.With(_player, minions: x => x.AddRange(new[] { yeti, raptor }), hand: x => x.AddCard(Minions.DefenderOfArgus), remainingMana: x => 10)); var summonAction = new SummonBattlecryTargetless(_player, Minions.DefenderOfArgus, 1); var newState = _testee.ApplyAction(gameState, summonAction); var minions = newState.Of(_player).Minions; var newYeti = minions[0]; var supposedArgus = minions[1]; var newRaptor = minions[2]; Assert.IsTrue(minions.Count == 3); Assert.IsTrue(newYeti.HasStatus(Status.Taunt) && newYeti.Health == yeti.Health + 1 && newYeti.Attack == yeti.Attack + 1); Assert.IsTrue(IsSimilar(supposedArgus, Minions.DefenderOfArgus)); Assert.IsTrue(newRaptor.HasStatus(Status.Taunt) && newRaptor.Health == raptor.Health + 1 && newRaptor.Attack == raptor.Attack + 1); }
public void GivenDreadInfernalnHand_WhenSummoned_ThenAllCharactersInPlayRecieveOneDamage() { var infernal = Minions.DreadInfernal; var aFace = Face.Empty; var bFace = Face.Empty; var aMinion = Minion.Empty.With(health: 2, healthCurrent: 2); var bMinion = Minion.Empty.With(health: 3, healthCurrent: 3); var gameState = GameState.Empty.With( PlayerGameState.Empty.With(_player, x => aFace, x => x.Add(aMinion), hand: x => x.AddCard(infernal), remainingMana: x => infernal.ManaCost), PlayerGameState.Empty.With(Player.Empty, x => bFace, x => x.Add(bMinion))); var action = new SummonBattlecryTargetless(_player, infernal, desiredBoardPosition: 1); var newState = _testee.ApplyAction(gameState, action); Assert.IsTrue(newState.Of(_player).Face.Health == aFace.Health - 1); Assert.IsTrue(newState.Of(_player).Minions.First().Health == aMinion.Health - 1); Assert.IsTrue(newState.OfOpponent(_player).Face.Health == bFace.Health - 1); Assert.IsTrue(newState.OfOpponent(_player).Minions.First().Health == bMinion.Health - 1); Assert.IsTrue(newState.Of(_player).Minions.Last().Health == infernal.Health); }