public void SetCurrentPopulation_EngineRunning_ThrowException() { Utils.RunTimedTest(() => { using (var engine = new TestGeneticSearchEngineBuilder(2, int.MaxValue, new TestPopulationManager(new double[] { 2, 2 })).Build()) { Task.Run(() => engine.Run()); while (!engine.IsRunning) { ; } engine.SetCurrentPopulation(new double[] { 3, 3 }.ToChromosomes("Converted")); if (engine.IsRunning) { Assert.Fail("Should have thrown an exception."); } else { Assert.Fail("For some reason, the engine is no longer running."); } } }); }
public void ConvertPopulation_PopulationConverted() { var newPopulationEvaluation = new double[] { 2, 2, 2 }; var populationManager = new TestPopulationManager(new double[] { 1, 1, 1 }); var engine = new TestGeneticSearchEngineBuilder(3, 10, populationManager).Build(); engine.Next(); var newPopulation = engine.SetCurrentPopulation(newPopulationEvaluation.ToChromosomes("Converted")); newPopulation.Population.GetChromosomes().AssertHasEvaluation(newPopulationEvaluation); newPopulation = engine.GetCurrentPopulation(); newPopulation.Population.GetChromosomes().AssertHasEvaluation(newPopulationEvaluation); }
public void SetCurrentPopulation_WrongNumberOfChromosomes_ThrowException() { Utils.RunTimedTest(() => { using (var engine = new TestGeneticSearchEngineBuilder(2, int.MaxValue, new TestPopulationManager(new double[] { 2, 2 })).Build()) { Task.Run(() => engine.Run()); while (!engine.IsRunning) { ; } engine.SetCurrentPopulation(new double[] { 3, 3, 3 }.ToChromosomes("Converted")); Assert.Fail("Should have thrown an exception by now"); } }); }