public void CutAndCrossFill_Child_Contains_Unique_Values() { List <int> parent = new List <int> { 1, 2, 3, 4, 5, 6 }; List <int> child = new List <int>(); RecombinationAlgorithms <int> .CrossFill(child, parent, 5); Assert.Equal(child.Distinct().Count(), child.Count); }
public void CrossFill_Child_Content_Matches_Parent() { List <int> parent = new List <int> { 1, 2, 3, 4, 5, 6 }; List <int> child = new List <int>(); RecombinationAlgorithms <int> .CrossFill(child, parent, 4); Assert.Empty(child.Except(parent)); }
public void CrossFill_Handles_Start_To_End() { List <int> parent = new List <int> { 1, 2, 3, 4, 5, 6 }; List <int> child = new List <int>(); RecombinationAlgorithms <int> .CrossFill(child, parent, 0); Assert.Equal(1, child[0]); Assert.Equal(2, child[1]); Assert.Equal(3, child[2]); }
public void Swap_Returns_New_List_With_Swapped_Items() { List <int> original = new List <int> { 1, 2, 3, 4, 5, 6 }; List <int> swapped = RecombinationAlgorithms <int> .Swap(original, 0, 1); Assert.Equal(original.Count, swapped.Count); Assert.Equal(original[0], swapped[1]); Assert.Equal(original[1], swapped[0]); Assert.Equal(original[2], swapped[2]); }
public void CrossFill_Copies_Values_From_CutIndex_Onwards_To_Start() { List <int> parent = new List <int> { 1, 2, 3, 4, 5, 6 }; List <int> child = new List <int>(); RecombinationAlgorithms <int> .CrossFill(child, parent, 4); Assert.Equal(5, child[0]); Assert.Equal(6, child[1]); Assert.Equal(1, child[2]); Assert.Empty(child.Except(parent)); }
public void CutAndCrossFill_Copies_From_First_Fills_With_Remainder() { List <int> parent1 = new List <int> { 1, 2, 3, 4, 5, 6 }; List <int> parent2 = new List <int> { 2, 3, 5, 6, 4, 1 }; List <int> child = RecombinationAlgorithms <int> .CutAndCrossFill(parent1, parent2, 2); Assert.Equal(parent1.Count, child.Count); Assert.Equal(1, child[0]); Assert.Equal(2, child[1]); Assert.Equal(5, child[2]); Assert.Equal(6, child[3]); Assert.Equal(4, child[4]); Assert.Equal(3, child[5]); }