private void UpdateGeneticSettings(int index) { IGeneticSettings settings = null; _visitor = new AlgorithmOptionVisitorParam(null, (x) => settings = x); _visitor.Visit(AlgorithmElements[index]); if (settings != null) { IGeneticSettings newSettings = ConvertToViewModelSettings( _model.UpdateAlgorithm(index, ConvertToModelSettings(settings))); if (settings != newSettings) { settings.SelectionRate = newSettings.SelectionRate; settings.AbsoluteSelection = newSettings.AbsoluteSelection; settings.MutationChance = newSettings.MutationChance; settings.StablePairWeight = newSettings.StablePairWeight; settings.GroupHappinessWeight = newSettings.GroupHappinessWeight; settings.EgalitarianHappinessWeight = newSettings.EgalitarianHappinessWeight; settings.Size = newSettings.Size; settings.Generations = newSettings.Generations; } OnPropertyChanged("AlgorithmOptions"); } }
private void OnDeleteAlgorithmCommand(int index) { _model.DeleteAlgorithm(index); AlgorithmOptions.RemoveAt(index); AlgorithmElements.RemoveAt(index); _visitor = new AlgorithmOptionVisitorParam((x) => x.Index--, (x) => x.Index--); for (int i = index; i < AlgorithmOptions.Count(); i++) { _visitor.Visit(AlgorithmElements[i]); } OnPropertyChanged("AlgorithmOptions"); }
public void EditGeneticAlgorithm() { int changedCount = 0; NewViewModel(); _viewModel.NewGeneticAlgorithmCommand.Execute(null); _viewModel.AlgorithmOptions[0].Changed += (s, e) => changedCount++; AlgorithmOptionVisitorParam visitor = new AlgorithmOptionVisitorParam( (x) => Assert.Fail(), (x) => { x.AbsoluteSelection = 0; x.SelectionRate = 0; x.MutationChance = 0; }); visitor.Visit(_viewModel.AlgorithmElements[0]); _viewModel.AlgorithmOptions[0].Name = "test"; Assert.AreEqual(4, changedCount); }