public void HumanTeam_MultiTurnMove_MembersOfTeamIsDead() { var multiMove = (MultiTurnBattleMove)TestMoveFactory.Get(description: "testMultiTurn"); var attackMove = TestMoveFactory.Get(TargetType.SingleEnemy, "", BattleMoveType.Attack); _humanPlayer1.AddSpecialMove(multiMove); _humanTeam = new Team(_menuManager, _humanPlayer1, _humanPlayer2); _humanTeam.InitializeForBattle(_enemyTeam, _input, _output); _input.Push(new List <string> { "fight", "special", multiMove.Description, "1" }); _input.Push(new List <string> { "fight", "attack", "1" }); var inputs = _humanTeam.GetInputs(_enemyTeam); Assert.AreEqual(2, inputs.Count); Assert.AreEqual(multiMove.Moves[0], inputs[0].Move); Assert.AreEqual(attackMove, inputs[1].Move); _humanPlayer1.PhysicalDamage(_humanPlayer1.MaxHealth); _input.Push(new List <string> { "fight", "attack", "1" }); inputs = _humanTeam.GetInputs(_enemyTeam); Assert.AreEqual(1, inputs.Count); Assert.AreEqual(attackMove, inputs[0].Move); }
public void DamageMethod_AppropriatelyRaisesEvents_WhenFighterSurvives() { _fighter.SetHealth(5); _fighter.PhysicalDamage(2); var logs = _logger.Logs; Assert.AreEqual(1, logs.Count); Assert.AreEqual(EventType.DamageTaken, logs[0].Type); Assert.AreEqual(_fighter, logs[0].Sender); var e = logs[0].E as PhysicalDamageTakenEventArgs; Assert.NotNull(e); Assert.AreEqual(2, e.Damage); }
public void RemovedFromPlayer_WhenDestroyed_PhysicalDamage() { _humanPlayer1.SetBattleShield(_shield as BattleShield); IBattleShield shield = _humanPlayer1.BattleShield; _logger.SubscribeAll(shield); Assert.That(_humanPlayer1.BattleShield, Is.Not.Null); _humanPlayer1.PhysicalDamage(_shield.MaxHealth); Assert.That(_humanPlayer1.BattleShield, Is.Null); Assert.AreEqual(_humanPlayer1.MaxHealth, _humanPlayer1.CurrentHealth); var logs = _logger.Logs; Assert.AreEqual(2, logs.Count); //damage taken and destroyed var log = logs[1]; Assert.AreEqual(EventType.ShieldDestroyed, log.Type); Assert.IsInstanceOf <ShieldDestroyedEventArgs>(log.E); Assert.AreEqual(shield, log.Sender); }
public void PhysicalDamageMethod_AppropriatelyAltersCurrentHealth() { const int damage = FighterHealth - 1; var ret = _fighter.PhysicalDamage(damage); Assert.AreEqual(1, _fighter.CurrentHealth); Assert.AreEqual(FighterHealth, _fighter.MaxHealth); Assert.AreEqual(damage, ret); }
public void GetInputs_TeamBothHumanAndEnemyFighters_DoesNotGetInputFromDefeatedFighters() { TestEnemyFighter fighter3 = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1); TestHumanFighter fighter4 = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1); Team testTeam = new Team(_menuManager, _enemyPlayer1, _humanPlayer1, fighter3, fighter4); _enemyPlayer1.PhysicalDamage(_enemyPlayer1.MaxHealth); _humanPlayer1.PhysicalDamage(_humanPlayer1.MaxHealth); fighter4.PhysicalDamage(fighter4.MaxHealth); foreach (ITestFighter fighter in testTeam.Fighters.Cast <ITestFighter>()) { fighter.SetMove(_basicAttackMove); fighter.SetMoveTarget(_enemyPlayer1); } List <BattleMoveWithTarget> returnedInputs = testTeam.GetInputs(testTeam); Assert.AreEqual(1, returnedInputs.Count); BattleMoveWithTarget moveWithTarget = returnedInputs[0]; Assert.AreEqual(fighter3, moveWithTarget.Owner); }