public void Hydra_TakeDamageTwoTimesEnoughDamageToGrowAHead() { hydra.TakeDamage(20, damageNonFire.Object, attacker1.Object); Assert.AreEqual(2, (int)newHeadsToGrow.GetValue(hydra)); Assert.IsFalse((bool)tookFireDamage.GetValue(hydra)); Assert.AreEqual(4, hydra.EquipedWeapon.Count()); RoundOfDamage rndOfDamage = (RoundOfDamage)roundOfDamage.GetValue(hydra); Assert.AreEqual(20, rndOfDamage.TotalDamage); Assert.AreEqual(attacker1.Object, rndOfDamage.LastAttacker); Assert.AreEqual(0u, rndOfDamage.CombatRound); Assert.IsTrue(rndOfDamage.HeadCut); notify.Verify(e => e.Mob(attacker1.Object, It.Is <ITranslationMessage>(f => f.Message == "You cut off on of the hydras heads.")), Times.Once); notify.Verify(e => e.Room(attacker1.Object, hydra, null, It.Is <ITranslationMessage>(f => f.Message == "{performer} cut off on of the hydras heads."), null, false, false), Times.Once); hydra.TakeDamage(20, damageNonFire.Object, attacker2.Object); Assert.AreEqual(4, (int)newHeadsToGrow.GetValue(hydra)); Assert.IsFalse((bool)tookFireDamage.GetValue(hydra)); Assert.AreEqual(3, hydra.EquipedWeapon.Count()); RoundOfDamage rndOfDamage2 = (RoundOfDamage)roundOfDamage.GetValue(hydra); Assert.AreEqual(20, rndOfDamage2.TotalDamage); Assert.AreEqual(attacker2.Object, rndOfDamage2.LastAttacker); Assert.AreEqual(0u, rndOfDamage2.CombatRound); Assert.IsTrue(rndOfDamage2.HeadCut); Assert.AreNotSame(rndOfDamage, rndOfDamage2); notify.Verify(e => e.Mob(attacker2.Object, It.Is <ITranslationMessage>(f => f.Message == "You cut off on of the hydras heads.")), Times.Once); notify.Verify(e => e.Room(attacker2.Object, hydra, null, It.Is <ITranslationMessage>(f => f.Message == "{performer} cut off on of the hydras heads."), null, false, false), Times.Once); }
public void Hydra_TakeDamageTwoTimesNotEnoughDamageToGrowAHead() { hydra.TakeDamage(5, damageNonFire.Object, attacker1.Object); Assert.AreEqual(0, (int)newHeadsToGrow.GetValue(hydra)); Assert.IsFalse((bool)tookFireDamage.GetValue(hydra)); Assert.AreEqual(5, hydra.EquipedWeapon.Count()); RoundOfDamage rndOfDamage = (RoundOfDamage)roundOfDamage.GetValue(hydra); Assert.AreEqual(5, rndOfDamage.TotalDamage); Assert.AreEqual(attacker1.Object, rndOfDamage.LastAttacker); Assert.AreEqual(0u, rndOfDamage.CombatRound); Assert.IsFalse(rndOfDamage.HeadCut); hydra.TakeDamage(5, damageNonFire.Object, attacker2.Object); Assert.AreEqual(0, (int)newHeadsToGrow.GetValue(hydra)); Assert.IsFalse((bool)tookFireDamage.GetValue(hydra)); Assert.AreEqual(5, hydra.EquipedWeapon.Count()); RoundOfDamage rndOfDamage2 = (RoundOfDamage)roundOfDamage.GetValue(hydra); Assert.AreEqual(5, rndOfDamage2.TotalDamage); Assert.AreEqual(attacker2.Object, rndOfDamage2.LastAttacker); Assert.AreEqual(0u, rndOfDamage2.CombatRound); Assert.IsFalse(rndOfDamage2.HeadCut); Assert.AreNotSame(rndOfDamage, rndOfDamage2); }