示例#1
0
        public void ResolveBattle_BattleshipHitOnce_ReplacedWithDamagedBattleship()
        {
            _hitGenerator.GenerateHits(Arg.Any<Dictionary<CombatUnitType, int>>(), Arg.Any<Func<CombatUnitType, int>>())
                .Returns(1);

            _attackers = new Dictionary<CombatUnitType, int>() { { TestUtils.CreateBattleshipType(), 1 } };
            _defenders = new Dictionary<CombatUnitType, int>() { { TestUtils.CreateFighterType(), 1 } };

            _battle = new Battle(_attackers, _defenders, _attackerCasualtyOrder, _defenderCasualtyOrder, _hitGenerator);

            _battle.ResolveBattle();

            Assert.AreEqual(1, _battle.SurvivingAttackers.Count);
            Assert.AreEqual(ValidCombatUnitTypes.DamagedBattleship, _battle.SurvivingAttackers.First().Key.Type);
        }
示例#2
0
        private Battle ResolveBattleForCurrentUnits()
        {
            var attackerCasualtyOrder = _attackerCasualtyOrderViewModel.CasualtyOrder.Select(u => u.ToCombatUnitType().Type).ToList();
            var defenderCasualtyOrder = _defenderCasualtyOrderViewModel.CasualtyOrder.Select(u => u.ToCombatUnitType().Type).ToList();

            var battle = new Battle(_currentAttackers, _currentDefenders, attackerCasualtyOrder, defenderCasualtyOrder, _hitGenerator);

            battle.ResolveBattle();
            return battle;
        }
示例#3
0
        public void ResolveBattle_OneOf2BattleshipsTakesHit_OneBattleshipAndOneDamagedBattleshipRemain()
        {
            _hitGenerator.GenerateHits(Arg.Any<Dictionary<CombatUnitType, int>>(), Arg.Any<Func<CombatUnitType, int>>())
                .Returns(1);

            _attackers = new Dictionary<CombatUnitType, int>() { { TestUtils.CreateBattleshipType(), 2 } };
            _defenders = new Dictionary<CombatUnitType, int>() { { TestUtils.CreateFighterType(), 1 } };

            _battle = new Battle(_attackers, _defenders, _attackerCasualtyOrder, _defenderCasualtyOrder, _hitGenerator);

            _battle.ResolveBattle();

            Assert.AreEqual(2, _battle.SurvivingAttackers.Count);
            Assert.AreEqual(2, _battle.SurvivingAttackers.Values.Sum());
            Assert.AreEqual(1, _battle.SurvivingAttackers.Count(a => a.Key.Type == ValidCombatUnitTypes.Battleship));
            Assert.AreEqual(1, _battle.SurvivingAttackers.Count(a => a.Key.Type == ValidCombatUnitTypes.DamagedBattleship));
        }
示例#4
0
 protected void Setup()
 {
     _attackers = new Dictionary<CombatUnitType, int>() { { TestUtils.CreateTankType(), 2 }, { TestUtils.CreateInfantryType(), 1 } };
     _defenders = new Dictionary<CombatUnitType, int>() { { TestUtils.CreateTankType(), 1 }, { TestUtils.CreateInfantryType(), 1 } };
     _attackerCasualtyOrder = TestUtils.CreateStandardCasualtyOrder();
     _defenderCasualtyOrder = TestUtils.CreateStandardCasualtyOrder();
     _hitGenerator = Substitute.For<IHitGenerator>();
     _battle = new Battle(_attackers, _defenders, _attackerCasualtyOrder, _defenderCasualtyOrder, _hitGenerator);
 }
示例#5
0
        public void ResolveRound_1DefenderHitsAndOneTankIsLowestRankingAttacker_AttackingTankRemoved()
        {
            _hitGenerator.GenerateHits(Arg.Any<Dictionary<CombatUnitType, int>>(), Arg.Any<Func<CombatUnitType, int>>())
                .Returns(0, 1);

            _attackers = new Dictionary<CombatUnitType, int>() { { TestUtils.CreateInfantryType(), 2 }, { TestUtils.CreateTankType(), 1 } };
            _attackerCasualtyOrder = new List<ValidCombatUnitTypes> { ValidCombatUnitTypes.Tank, ValidCombatUnitTypes.Infantry };

            _battle = new Battle(_attackers, _defenders, _attackerCasualtyOrder, _defenderCasualtyOrder, _hitGenerator);

            _battle.ResolveRound();

            Assert.AreEqual(0, _battle.SurvivingAttackers.Count(u => u.Key.Type == ValidCombatUnitTypes.Tank));
            Assert.AreEqual(2, _battle.SurvivingAttackers.Where(u => u.Key.Type == ValidCombatUnitTypes.Infantry).Sum(u => u.Value));
        }