Ejemplo n.º 1
0
        public void CastSpell_CorrectlySpendsCastersMana_SpellCostMultiplierStatus(
            [Values(1, 4, 8)] int spellCost,
            [Values(2.0, 3.0)] double multiplier,
            [Values(false, true)] bool teamStatus)
        {
            SpellCostMultiplierStatus status = new SpellCostMultiplierStatus(1, multiplier);
            Spell spell = new Spell("foo", MagicType.Wind, SpellType.Attack, TargetType.SingleEnemy, spellCost, 5);
            int   expectedRemainingMana = 100 - (int)(spellCost * multiplier);

            _human.SetMana(100);
            _human.SetDeathOnTurnEndEvent();
            _human.AddSpell(spell);
            _human.SetMove(spell);
            _human.SetMoveTarget(_enemy);

            if (teamStatus)
            {
                _humanTeam.AddStatus(status);
            }
            else
            {
                _human.AddStatus(status);
            }
            _enemy.SetHealth(100);

            _battleManager.Battle(_humanTeam, _enemyTeam);

            Assert.AreEqual(expectedRemainingMana, _human.CurrentMana);
        }