public void Update_TwoBattlesWithFewerLossesFirst_HigherLossesAreStillListedFirst()
        {
            var vm = new SimulationResultsViewModel();
            _battleList[1].SurvivingAttackers.Returns(GetListWith2Infantry());

            vm.Update(_battleList);

            Assert.AreEqual(new Dictionary<int, double>() { { 6, 50.0 }, { 0, 50.0 } }, vm.AttackerLosses);
        }
        public void Update_TwoBattlesWithDifferentOutComes_AttackerLossesHasTwoEntries()
        {
            var vm = new SimulationResultsViewModel();
            _battleList[0].SurvivingAttackers.Returns(GetListWith2Infantry());

            vm.Update(_battleList);

            Assert.AreEqual(new Dictionary<int, double>() { { 6, 50.0 }, { 0, 50.0 } }, vm.AttackerLosses);
        }
        public void Update_TwoBattlesWithNoAttackerLosses_AttackerLossesHasOneEntry()
        {
            var vm = new SimulationResultsViewModel();
            _battleList[0].SurvivingAttackers.Returns(GetListWith2Infantry());
            _battleList[1].SurvivingAttackers.Returns(GetListWith2Infantry());

            vm.Update(_battleList);

            Assert.AreEqual(new Dictionary<int, double>() { {0,100.0} }, vm.AttackerLosses);
        }
        public MainWindowViewModel()
        {
            _unitTypesInBattle = GetAvailableUnitTypes();
            _currentDefenders = new Dictionary<CombatUnitType, int>();
            _currentAttackers = new Dictionary<CombatUnitType, int>();

            _simulationWorker = new BackgroundWorker();
            _simulationWorker.DoWork += HandleSimulationWorkerDoWork;
            _simulationWorker.ProgressChanged += HandleSimulationWorkerProgressChanged;
            _simulationWorker.WorkerReportsProgress = true;

            IsProgressBarVisible = false;
            SimulationRuns = 10000;
            _hitGenerator = new HitGenerator();

            _simulationResultsViewModel = new SimulationResultsViewModel();
            _attackerCasualtyOrderViewModel = new CasualtyOrderViewModel(GetInitialAttackerCasualtyOrder());
            _defenderCasualtyOrderViewModel = new CasualtyOrderViewModel(GetInitialDefenderCasualtyOrder());
        }