예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
            }
        }