public void SeriousAttack_StunsDefender()
        {
            Attacker.STR.MaxValue = 20;
            AttackResult result = Attacker.Attack("Strike", Defender);

            bool isStunned = Defender.State.ContainsKey(CharacterStateType.Stunned);

            Assert.AreEqual(true, isStunned);

            isStunned = result.Results.ContainsKey(CharacterStateType.Stunned);
            Assert.AreEqual(true, isStunned);
        }
        public void ClumsyAttacker_MissesDefender()
        {
            Attacker.OCV.MaxValue = 1;
            AttackResult result = Attacker.Attack("Strike", Defender);

            bool isSuccessful = result.HitResult == HitResult.Hit;

            Assert.AreEqual(false, isSuccessful);
        }
        public void NormalAttackHits_CalculatesNormalDamge()
        {
            AttackResult result = Attacker.Attack("Strike", Defender);

            HitResult actualHitRestult = result.HitResult;

            Assert.AreEqual(HitResult.Hit, actualHitRestult);

            int expectedStunDamageRolled = 10;
            int expectedBodyDamageRolled = 3;

            Assert.AreEqual(expectedStunDamageRolled, result.DamageResult.STUN);
            Assert.AreEqual(expectedBodyDamageRolled, result.DamageResult.BOD);

            int expectedStunLeft = 12;
            int expectedBodyLeft = 9;
//            Assert.AreEqual(expectedStunLeft, Defender.STUN.CurrentValue);
//          Assert.AreEqual(expectedBodyLeft, Defender.BOD.CurrentValue);
        }
        public void KillingAttackHits_CalculatesKillingDamgeIgnoringNonResistantDefense()
        {
            HeroSystemCharacter character = characterFactory.BaseCharacterWithOneKillingAttackCombatManuever;
            HeroSystemCharacter defender  = characterFactory.BaseCharacter;

            AttackResult result = character.Attack("Basic Killing", defender);

            int expectedStunDamageRolled = 20;
            int expectedBodyDamageRolled = 10;


            Assert.AreEqual(expectedStunDamageRolled, result.DamageResult.STUN);
            Assert.AreEqual(expectedBodyDamageRolled, result.DamageResult.BOD);

            int expectedStunLeft = defender.STUN.MaxValue - result.DamageResult.STUN;
            int expectedBodyLeft = defender.BOD.MaxValue - result.DamageResult.BOD;;

            Assert.AreEqual(expectedStunLeft, defender.STUN.CurrentValue);
            Assert.AreEqual(expectedBodyLeft, defender.BOD.CurrentValue);
        }
        public void HandKillingAttackHitsDefenderWithResistantDefense_DefenseSubtractedFromDamge()
        {
            HeroSystemCharacter character = characterFactory.BaseCharacterWithOneKillingAttackCombatManuever;
            HeroSystemCharacter defender  = characterFactory.BaseCharacter;

            defender.RPD.CurrentValue = 10;

            AttackResult result = character.Attack("Basic Killing", defender);

            int expectedStunDamageRolled = 20;
            int expectedBodyDamageRolled = 10;


            Assert.AreEqual(expectedStunDamageRolled, result.DamageResult.STUN);
            Assert.AreEqual(expectedBodyDamageRolled, result.DamageResult.BOD);

            int expectedStunLeft = defender.STUN.MaxValue - (result.DamageResult.STUN - defender.RPD.CurrentValue);
            int expectedBodyLeft = defender.BOD.MaxValue - (result.DamageResult.BOD - defender.RPD.CurrentValue);;

            Assert.AreEqual(expectedStunLeft, defender.STUN.CurrentValue);
            Assert.AreEqual(expectedBodyLeft, defender.BOD.CurrentValue);
        }