@Test(invocationCount = 10)
	public void crossover() {
		final UniformOderBasedCrossover<Integer, Double> pmco =
			new UniformOderBasedCrossover<>(1);

		final int length = 1000;
		final MSeq<Integer> alleles = MSeq.<Integer>ofLength(length).fill(Int());
		final ISeq<Integer> ialleles = alleles.toISeq();

		final MSeq<EnumGene<Integer>> that = alleles.map(i -> new EnumGene<>(i, ialleles));
		final MSeq<EnumGene<Integer>> other = alleles.map(i -> new EnumGene<>(i, ialleles));

		that.shuffle();
		other.shuffle();

		final PermutationChromosome<Integer> thatChrom1 = new PermutationChromosome<>(that.toISeq());
		Assert.assertTrue(thatChrom1.isValid(), "thatChrom1 not valid");

		final PermutationChromosome<Integer> otherChrom1 = new PermutationChromosome<>(other.toISeq());
		Assert.assertTrue(otherChrom1.isValid(), "otherChrom1 not valid");

		pmco.crossover(that, other);

		final PermutationChromosome<Integer> thatChrom2 = new PermutationChromosome<>(that.toISeq());
		Assert.assertTrue(thatChrom2.isValid(), "thatChrom2 not valid: " + thatChrom2);

		final PermutationChromosome<Integer> otherChrom2 = new PermutationChromosome<>(other.toISeq());
		Assert.assertTrue(otherChrom2.isValid(), "otherChrom2 not valid: " + otherChrom2);

		Assert.assertFalse(thatChrom1.equals(thatChrom2), "That chromosome must not be equal");
		Assert.assertFalse(otherChrom1.equals(otherChrom2), "That chromosome must not be equal");
	}
@author <a href="mailto:feichtenschlager10@gmail.com">Paul Feichtenschlager</a>
jenetics/src/test/java/io/jenetics/UniformOrderBasedCrossoverTest.java