public void ConditionalDanceMove_ExecutesAppropriateEffectWhenDanceInEffect([Values(DanceEffectType.Fire, DanceEffectType.Danger)] DanceEffectType danceEffectType) { _testTechnique.ClearEffects(); _testTechnique.SetDanceEffect(danceEffectType); RestorationBattleMoveEffect conditionalHealEffect = GetRestoreHealthEffect(danceEffectType); AttackBattleMove attackWithHeal = new AttackBattleMove("foo", TargetType.SingleEnemy, 100, 0, effects: conditionalHealEffect); _human2.SetMove(_testTechnique, 1); _human2.SetSpeed(1); _human1.SetHealth(100, 10); _human1.SetMove(attackWithHeal, 1); _chanceService.PushEventsOccur(true, false); //attack hits, is not crit _human1.SetStrength(_enemy1.MaxHealth); _human1.SetMoveTarget(_enemy1); _enemyTeam = new Team(_menuManager, _enemy1); _enemy1.SetDefense(0); _enemy1.SetMove(_doNothingMove); _enemy1.SetMoveTarget(_enemy1); _battleManager.Battle(_humanTeam, _enemyTeam); Assert.AreEqual(20, _human1.CurrentHealth, "Human1 should have regained 10 HP when the attack was successful and the dance effect was active"); }
public void AttackMethod_AppropriatelyCorrectlyCalculatesDamage() { var expectedDamageDone = _factoryFighter.Strength; _enemy.SetDefense(0); _enemy.SetHealth(_factoryFighter.Strength + 1); var damageDone = _factoryFighter.Attack(_enemy); Assert.AreEqual(_enemy.MaxHealth - (expectedDamageDone), _enemy.CurrentHealth); Assert.AreEqual(_enemy.MaxHealth - damageDone, _enemy.CurrentHealth); _armoredEnemy.SetDefense(_factoryFighter.Strength - 1); _armoredEnemy.SetHealth(2); damageDone = _factoryFighter.Attack(_armoredEnemy); expectedDamageDone = 1; Assert.AreEqual(_armoredEnemy.MaxHealth - (expectedDamageDone), _armoredEnemy.CurrentHealth); Assert.AreEqual(expectedDamageDone, damageDone); _superArmoredEnemy.SetDefense(_factoryFighter.Strength + 2); damageDone = _factoryFighter.Attack(_superArmoredEnemy); expectedDamageDone = 0; Assert.AreEqual(_superArmoredEnemy.MaxHealth, _superArmoredEnemy.CurrentHealth); Assert.AreEqual(expectedDamageDone, damageDone); }
public void SetUp() { _input = new MockInput(); _output = new MockOutput(); _menuManager = new TestMenuManager(_input, _output); _chanceService = new MockChanceService(); _battleManager = new TestBattleManager(_chanceService, _input, _output); _combiner = new TestFieldEffectCombiner(); _logger = new EventLogger(); _enemy1 = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1); _enemy1.SetDefense(OriginalDefense); _enemy2 = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1); _enemy2.SetDefense(OriginalDefense); _enemyTeam = new Team(_menuManager, _enemy1, _enemy2); _human1 = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1); _human1.SetDefense(OriginalDefense); _human2 = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1); _human2.SetDefense(OriginalDefense); _humanTeam = new TestTeam(_human1, _human2); _testTechnique = (TestDanceMove)TestMoveFactory.Get(TargetType.Field, moveType: BattleMoveType.Dance); _testTechnique.AddEffect(_raiseTeamDefense50Percent); _testTechnique.AddEffect(_lowerEnemyDefense50Percent); _testTechnique.SetDuration(_testTechniqueDefaultDuration); _testTechnique.SetDanceEffect(DanceEffectType.Fire); var firstTurn = (TestDoNothingMove)TestMoveFactory.Get(moveType: BattleMoveType.DoNothing); firstTurn.SetMessage(FirstTurnMessage); _testTechnique.AddMove(firstTurn); var secondTurn = (TestDoNothingMove)TestMoveFactory.Get(moveType: BattleMoveType.DoNothing); secondTurn.SetMessage("Continue the Defense dance"); _testTechnique.AddMove(secondTurn); }
public void SetEnemy_ProperlySetsHumanControlledEnemyStats() { TestEnemyFighter enemy = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1, "Grumbles"); enemy.SetHealth(10); enemy.SetMana(10); enemy.SetMagicStrength(2); enemy.SetMagicResistance(2); enemy.SetStrength(3); enemy.SetDefense(2); enemy.SetSpeed(5); enemy.SetEvade(5); enemy.SetLuck(20); Assert.AreNotEqual(enemy.MaxHealth, _fighter.MaxHealth, "maxHealth"); Assert.AreNotEqual(enemy.MaxMana, _fighter.MaxMana, "maxMana"); Assert.AreNotEqual(enemy.MagicStrength, _fighter.MagicStrength, "magicStrength"); Assert.AreNotEqual(enemy.MagicResistance, _fighter.MagicResistance, "magicResistance"); Assert.AreNotEqual(enemy.Strength, _fighter.Strength, "strength"); Assert.AreNotEqual(enemy.Defense, _fighter.Defense, "defense"); Assert.AreNotEqual(enemy.Speed, _fighter.Speed, "speed"); Assert.AreNotEqual(enemy.Evade, _fighter.Evade, "evade"); Assert.AreNotEqual(enemy.Luck, _fighter.Luck, "luck"); Assert.AreNotEqual(enemy.DisplayName, _fighter.DisplayName, "displayName"); _fighter.SetEnemy(enemy); Assert.AreEqual(enemy.MaxHealth, _fighter.MaxHealth, "maxHealth"); Assert.AreEqual(enemy.MaxMana, _fighter.MaxMana, "maxMana"); Assert.AreEqual(enemy.MagicStrength, _fighter.MagicStrength, "magicStrength"); Assert.AreEqual(enemy.MagicResistance, _fighter.MagicResistance, "magicResistance"); Assert.AreEqual(enemy.Strength, _fighter.Strength, "strength"); Assert.AreEqual(enemy.Defense, _fighter.Defense, "defense"); Assert.AreEqual(enemy.Speed, _fighter.Speed, "speed"); Assert.AreEqual(enemy.Evade, _fighter.Evade, "evade"); Assert.AreEqual(enemy.Luck, _fighter.Luck, "luck"); Assert.AreEqual(enemy.DisplayName, _fighter.DisplayName, "displayName"); }