Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }