Index: trunk/sources/HeuristicLab.Permutation/3.3/Tests/CyclicCrossoverTest.cs
===================================================================
--- trunk/sources/HeuristicLab.Permutation/3.3/Tests/CyclicCrossoverTest.cs	(revision 2865)
+++ trunk/sources/HeuristicLab.Permutation/3.3/Tests/CyclicCrossoverTest.cs	(revision 2867)
@@ -122,5 +122,17 @@
       Assert.IsTrue(actual.Validate());
       Assert.IsTrue(Auxiliary.PermutationIsEqualByPosition(expected, actual));
-     
+      // The following test is based on an example from Affenzeller, M. et al. 2009. Genetic Algorithms and Genetic Programming - Modern Concepts and Practical Applications. CRC Press. pp. 134.
+      random.Reset();
+      random.DoubleNumbers = new double[] { 0.9 };
+      parent1 = new Permutation(new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 });
+      Assert.IsTrue(parent1.Validate());
+      parent2 = new Permutation(new int[] { 2, 5, 6, 0, 7, 1, 3, 8, 4, 9 });
+      Assert.IsTrue(parent2.Validate());
+      expected = new Permutation(new int[] { 0, 5, 2, 3, 7, 1, 6, 8, 4, 9 });
+      Assert.IsTrue(expected.Validate());
+      actual = CyclicCrossover.Apply(random, parent1, parent2);
+      Assert.IsTrue(actual.Validate());
+      Assert.IsTrue(Auxiliary.PermutationIsEqualByPosition(expected, actual));
+
       // perform a test when the two permutations are of unequal length
       random.Reset();
Index: trunk/sources/HeuristicLab.Permutation/3.3/Tests/MaximalPreservativeCrossoverTest.cs
===================================================================
--- trunk/sources/HeuristicLab.Permutation/3.3/Tests/MaximalPreservativeCrossoverTest.cs	(revision 2865)
+++ trunk/sources/HeuristicLab.Permutation/3.3/Tests/MaximalPreservativeCrossoverTest.cs	(revision 2867)
@@ -86,5 +86,5 @@
     [TestMethod()]
     [DeploymentItem("HeuristicLab.Permutation-3.3.dll")]
-    public void CyclicCrossoverCrossTest() {
+    public void MaximalPreservativeCrossoverCrossTest() {
       TestRandom random = new TestRandom();
       MaximalPreservativeCrossover_Accessor target =
Index: trunk/sources/HeuristicLab.Permutation/3.3/Tests/OrderCrossoverTest.cs
===================================================================
--- trunk/sources/HeuristicLab.Permutation/3.3/Tests/OrderCrossoverTest.cs	(revision 2865)
+++ trunk/sources/HeuristicLab.Permutation/3.3/Tests/OrderCrossoverTest.cs	(revision 2867)
@@ -173,4 +173,17 @@
       Assert.IsTrue(actual.Validate());
       Assert.IsTrue(Auxiliary.PermutationIsEqualByPosition(expected, actual));
+      // The following test is based on an example from Affenzeller, M. et al. 2009. Genetic Algorithms and Genetic Programming - Modern Concepts and Practical Applications. CRC Press. p. 135.
+      random.Reset();
+      random.IntNumbers = new int[] { 2, 5 };
+      parent1 = new Permutation(new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 });
+      Assert.IsTrue(parent1.Validate());
+      parent2 = new Permutation(new int[] { 2, 5, 6, 0, 9, 1, 3, 8, 4, 7 });
+      Assert.IsTrue(parent2.Validate());
+      expected = new Permutation(new int[] { 2, 0, 9, 1, 3, 5, 6, 7, 8, 4 });
+      Assert.IsTrue(expected.Validate());
+      actual = OrderCrossover.Apply(random, parent1, parent2);
+      Assert.IsTrue(actual.Validate());
+      Assert.IsTrue(Auxiliary.PermutationIsEqualByPosition(expected, actual));
+
       // perform a test when the two permutations are of unequal length
       random.Reset();
Index: trunk/sources/HeuristicLab.Permutation/3.3/Tests/PartiallyMatchedCrossoverTest.cs
===================================================================
--- trunk/sources/HeuristicLab.Permutation/3.3/Tests/PartiallyMatchedCrossoverTest.cs	(revision 2865)
+++ trunk/sources/HeuristicLab.Permutation/3.3/Tests/PartiallyMatchedCrossoverTest.cs	(revision 2867)
@@ -122,5 +122,17 @@
       Assert.IsTrue(actual.Validate());
       Assert.IsTrue(Auxiliary.PermutationIsEqualByPosition(expected, actual));
-     
+      // The following test is based on an example from Affenzeller, M. et al. 2009. Genetic Algorithms and Genetic Programming - Modern Concepts and Practical Applications. CRC Press. p. 134.
+      random.Reset();
+      random.IntNumbers = new int[] { 5, 7 };
+      parent1 = new Permutation(new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 });
+      Assert.IsTrue(parent1.Validate());
+      parent2 = new Permutation(new int[] { 2, 5, 6, 0, 9, 1, 3, 8, 4, 7 });
+      Assert.IsTrue(parent2.Validate());
+      expected = new Permutation(new int[] { 2, 1, 3, 0, 9, 5, 6, 7, 4, 8 });
+      Assert.IsTrue(expected.Validate());
+      actual = PartiallyMatchedCrossover.Apply(random, parent1, parent2);
+      Assert.IsTrue(actual.Validate());
+      Assert.IsTrue(Auxiliary.PermutationIsEqualByPosition(expected, actual));
+
       // perform a test when the two permutations are of unequal length
       random.Reset();
