public void NoCommonRegionCrossoverTest() { var converter = new MathExpressionConverter(MathPrimitiveSets.Default); var prog1 = converter.FromNormalNotation("sin((1-2))"); var prog2 = converter.FromNormalNotation("((2+3)-1)"); Console.WriteLine($"{prog1}, {prog2}"); var op = new OnePointCrossover <MathProgram, double>(); var allProgs = new HashSet <MathProgram>(op.GetAllOffspring(prog1, prog2)); var prog = op.Crossover(prog1, prog2); Assert.IsTrue(allProgs.Contains(prog2), $"{prog} should be a valid crossover between {prog1} and {prog2}."); Assert.IsTrue(prog.Equals(prog2), $"{prog} should be the only valid crossover between {prog1} and {prog2}."); Assert.AreEqual(allProgs.Count, 1, double.Epsilon, $"Crossover between {prog1} and {prog2} should only have 1 element."); }