def mate(self, program): childA = Node.copy(self.root) childB = Node.copy(program.root) nodeA = random.choice(Node.traverseInOrder(childA)) nodeB = random.choice(Node.traverseInOrder(childB)) childA = Node.replace(childA, nodeA, nodeB) childB = Node.replace(childB, nodeB, nodeA) return [Program(childA), Program(childB)]
def testReplaceRoot(self): node = Node("1") node.left = Node("2") node.right = Node("3") node.left.left = Node("4") value = Node("5") node = Node.replace(node, node, value) self.assertEqual(node.value, "5") self.assertIsNone(node.left) self.assertIsNone(node.right)