public void PMXCrossover_CreateGeneMap_GetUniqueValue_ReturnUnique(int position, int expected)
        {
            var random       = new PredeterminedRandom(new double[0]);
            var parameterSet = new ParameterSet();
            var crossover    = new PMXCrossover(random, parameterSet, null);
            var chromosomes  = PermutationTestData.CreateTestChromosomes();
            var range        = new GeneRange(3, 4);
            var geneMap      = crossover.GenerateGeneMap(((PermutationChromosome)chromosomes[0]).Genes, range);

            var result = crossover.GetUniqueGeneValue(((PermutationChromosome)chromosomes[1]).Genes, geneMap, position);

            result.Should().Be(expected);
        }
        public void PMXCrossover_CopyWithDuplicationElimination_CopyData(int begin, int end, int[] expected)
        {
            var random       = new PredeterminedRandom(new double[0]);
            var parameterSet = new ParameterSet();
            var crossover    = new PMXCrossover(random, parameterSet, null);
            var chromosomes  = PermutationTestData.CreateTestChromosomes();
            var range        = new GeneRange(3, 3);
            var geneMap      = crossover.GenerateGeneMap(((PermutationChromosome)chromosomes[0]).Genes, range);
            var childGenes   = new int[((PermutationChromosome)chromosomes[0]).Genes.Length];

            var length = end - begin;

            crossover.CopyWithDuplicationElimination(((PermutationChromosome)chromosomes[1]).Genes, childGenes, geneMap, begin, end);
            var result = new int[length];

            Array.Copy(childGenes, begin, result, 0, length);

            result.Should().BeEquivalentTo(expected);
        }