public void WhenCrossoverSelectionDefaultIsRequested_ShouldBeCorrect() { ConfigurationProvider.EnsureIsBuilt(); CrossoverProvider.AssertSelectionArray( new Crossover.CrossoverType[] { Crossover.CrossoverType.OnePoint, Crossover.CrossoverType.TwoPoint, Crossover.CrossoverType.Random }); }
public void WhenCrossoverSelectionDefaultIsRequested_RequestedCrossoversShouldHaveApproxEqualChance() { int onePoint = 0; int twoPoint = 0; int random = 0; int tries = 10000; int min = (int)(tries * ((double)3 / 10)); int max = (int)(tries * ((double)4 / 10)); ConfigurationProvider.EnsureIsBuilt(); for (int i = 0; i < tries; i++) { switch (CrossoverProvider.GetNextCrossover().CrossoverMethod) { case Crossover.CrossoverType.OnePoint: onePoint++; break; case Crossover.CrossoverType.TwoPoint: twoPoint++; break; case Crossover.CrossoverType.Random: random++; break; } } Assert.LessOrEqual(onePoint, max); Assert.GreaterOrEqual(onePoint, min); Assert.LessOrEqual(twoPoint, max); Assert.GreaterOrEqual(twoPoint, min); Assert.LessOrEqual(random, max); Assert.GreaterOrEqual(random, min); }