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); }
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); }
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)); }
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); }
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); }