Example #1
0
        public void FightWith_TwoCreaturesAndDefenderHasMoreDamage_DefenderWins()
        {
            var goblinAttacker = new Goblin(100, 20);
            var goblinDefender = new Goblin(100, 25);

            var result = goblinAttacker.AsParty().FightWith(goblinDefender.AsParty());

            Assert.IsFalse(result.DefenderDefeated);
        }
Example #2
0
        public void FightWith_TwoEquallyStrongCharacters_AttackerWins()
        {
            var goblinAttacker = new Goblin(100, 20);
            var goblinDefender = new Goblin(100, 20);

            var result = goblinAttacker.AsParty().FightWith(goblinDefender.AsParty());

            Assert.IsTrue(result.DefenderDefeated);
        }
Example #3
0
        public void FightWith_DefeatedPartyIsAllDead()
        {
            var legendaryGoblin = new Goblin(uint.MaxValue, uint.MaxValue);
            var weakGoblinHorde = Enumerable.Range(0, 100).Select(_ => new Goblin(70, 15)).ToList();

            var attackingParty = legendaryGoblin.AsParty();
            var defendingParty = new Party(weakGoblinHorde);

            attackingParty.FightWith(defendingParty);

            Assert.IsFalse(defendingParty.Creatures.Any(creature => creature.IsAlive));
        }
Example #4
0
        public void TwoGoblinsFightForShipAndWinnerTriesToEatTheShip_Succeeds()
        {
            var strongGoblin = new Goblin(200, 100);
            var weakGoblin   = new Goblin(100, 10);
            var sheep        = new Sheep(10, 1);

            var result = strongGoblin.AsParty().FightWith(weakGoblin.AsParty());

            Assert.True(result.DefenderDefeated);

            var success = strongGoblin.TryToEat(sheep);

            Assert.IsTrue(success);
        }
Example #5
0
        public void FightWith_DefenderPartyHasFewWeakCreaturesThatAreStrongerTogether_DefenderWins()
        {
            var strongGoblin = new Goblin(100, 20);
            var weakGoblin1  = new Goblin(70, 15);
            var weakGoblin2  = new Goblin(70, 15);

            var attackingParty = strongGoblin.AsParty();
            var defendingParty = new Party(new List <Creature> {
                weakGoblin1, weakGoblin2
            });

            var result = attackingParty.FightWith(defendingParty);

            Assert.IsFalse(result.DefenderDefeated);
        }