@Test
public void testReproduceInternal1() throws Exception {

    this.operator.setCreateBothChildren(true);
    this.operator.setCrossPointCount(4);
    SimpleBinaryRepresentation repr1 = new SimpleBinaryRepresentation(new SimpleBinaryGenomeDescriptor()){
        @Override
        public int getTotalLength() {
            this.genome = genome1;
            return super.getTotalLength();
        }
    };
    repr1.getTotalLength();
    Individual first = new SimpleIndividual(1, 0.0, repr1);
    SimpleBinaryRepresentation repr2 = new SimpleBinaryRepresentation(new SimpleBinaryGenomeDescriptor()){
        @Override
        public int getTotalLength() {
            this.genome = genome2;
            return super.getTotalLength();
        }
    };
    repr2.getTotalLength();
    Individual second = new SimpleIndividual(1, 0.0, repr2);
    this.operator.reproduceInternal(new Individual[]{first}, new Individual[]{second});
    GenotypeRepresentation result1 = ((GenotypeRepresentation)first.getRepresentation());
    GenotypeRepresentation result2 = ((GenotypeRepresentation)second.getRepresentation());
    assertEquals(this.expectedGenome1.length, result1.getTotalLength());
    assertEquals(this.expectedGenome2.length, result2.getTotalLength());
    for (int i = 0; i < this.expectedGenome1.length; i++){
        assertEquals("at index " + i, expectedGenome1[i], result1.getGeneAt(i));
    }
    for (int i = 0; i < this.expectedGenome2.length; i++){
        assertEquals("at index " + i, expectedGenome2[i], result2.getGeneAt(i));
    }
}