public void TestTakeDamage_EffectsCharacterStateBasedOnAmount()
        {
            DamageAmount attackDamage = new DamageAmount();

            attackDamage.STUN = 35;
            attackDamage.BOD  = 5;
            attackDamage.WorksAgainstDefense = DefenseType.PD;
            HeroSystemCharacter defender = new HeroSystemCharacter();

            defender.PD.CurrentValue   = 5;
            defender.STUN.CurrentValue = 50;
            defender.BOD.CurrentValue  = 10;
            defender.BOD.MaxValue      = 10;
            defender.CON.CurrentValue  = 29;

            defender.TakeDamage(attackDamage);

            bool actualStunned   = defender.State.ContainsKey(CharacterStateType.Stunned);
            bool expectedStunned = true;

            Assert.AreEqual(actualStunned, expectedStunned);

            attackDamage      = new DamageAmount();
            attackDamage.STUN = 35;
            attackDamage.BOD  = 10;
            attackDamage.WorksAgainstDefense = DefenseType.PD;

            defender.TakeDamage(attackDamage);
            bool actualUnconsious   = defender.State.ContainsKey(CharacterStateType.Unconsious);
            bool expectedUnconsious = true;

            Assert.AreEqual(actualUnconsious, expectedUnconsious);

            attackDamage.BOD = 11;
            defender.TakeDamage(attackDamage);
            bool actualDying   = defender.State.ContainsKey(CharacterStateType.Dying);
            bool expectedDying = true;

            Assert.AreEqual(actualDying, expectedDying);

            attackDamage.BOD = 14;
            defender.TakeDamage(attackDamage);
            bool actualDead   = defender.State.ContainsKey(CharacterStateType.Dying);
            bool expectedDead = true;

            Assert.AreEqual(actualDead, expectedDead);
        }