public async Task Can_Evolve_Until_Cancelled_Whithout_Throwing() { const int time = 100; var population = MockObject.CreatePopulation(); population.Chromosomes = MockObject.CreateChromosomes(10).ToImmutableHashSet(); IGeneticAlgorithm genetic = new Core.GeneticAlgorithm(MockObject.CreateOperationStrategy()); using (var cts = new CancellationTokenSource()) { var evolution = genetic.TryEvolve(population, cts.Token); await Task.Delay(time); cts.Cancel(); var result = await evolution; Assert.True(result.EvolutionTime >= MockObject.CreateProximateAccuracyTimeSpan(time)); Assert.True(cts.IsCancellationRequested); } }
public async Task Can_Evolve_Until_Cancelled() { const int time = 100; var population = MockObject.CreatePopulation(); population.Chromosomes = MockObject.CreateChromosomes(10).ToImmutableHashSet(); IGeneticAlgorithm genetic = new Core.GeneticAlgorithm(MockObject.CreateOperationStrategy()); using (var cts = new CancellationTokenSource()) { var evolution = genetic.Evolve(population, cts.Token); await Task.Delay(time); cts.Cancel(); await Assert.ThrowsAnyAsync <OperationCanceledException>(() => evolution); Assert.True(cts.IsCancellationRequested); } }