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 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));
        }