def test_generate(self): mutations = [ operators.Mutation( operator=operators.ArithmeticOperatorReplacement, node=ast.Sub(children=[])), operators.Mutation( operator=operators.ArithmeticOperatorReplacement, node=ast.Sub(children=[])), operators.Mutation( operator=operators.ArithmeticOperatorReplacement, node=ast.Sub(children=[])), ] def shuffler(mutations): mutations.reverse() hom_strategy = controller.RandomHOMStrategy(order=2, shuffler=shuffler) changes_to_apply = list(hom_strategy.generate(mutations)) self.assertEqual(len(changes_to_apply), 2) self.assertEqual(len(changes_to_apply[0]), 2) self.assertEqual(changes_to_apply[0][0], mutations[2]) self.assertEqual(changes_to_apply[0][1], mutations[1]) self.assertEqual(len(changes_to_apply[1]), 1) self.assertEqual(changes_to_apply[1][0], mutations[0])
def test_generate_if_three_operators(self): mutations = [ operators.Mutation( operator=operators.ArithmeticOperatorReplacement, node=ast.Sub(children=[])), operators.Mutation( operator=operators.ArithmeticOperatorReplacement, node=ast.Sub(children=[])), operators.Mutation( operator=operators.AssignmentOperatorReplacement, node=ast.Sub(children=[])), operators.Mutation(operator=operators.ConstantReplacement, node=ast.Sub(children=[])), ] hom_strategy = controller.BetweenOperatorsHOMStrategy(order=2) changes_to_apply = list(hom_strategy.generate(mutations)) self.assertEqual(len(changes_to_apply), 2) self.assertEqual(len(changes_to_apply[0]), 2) self.assertEqual(changes_to_apply[0][0], mutations[0]) self.assertEqual(changes_to_apply[0][1], mutations[2]) self.assertEqual(len(changes_to_apply[1]), 2) self.assertEqual(changes_to_apply[1][0], mutations[1]) self.assertEqual(changes_to_apply[1][1], mutations[3])
def test_generate_if_same_node(self): node = ast.Sub() mutations = [ operators.Mutation( operator=operators.ArithmeticOperatorReplacement, node=node), operators.Mutation( operator=operators.ArithmeticOperatorReplacement, node=node), ] hom_strategy = controller.FirstToLastHOMStrategy(order=2) changes_to_apply = list(hom_strategy.generate(mutations)) self.assertEqual(len(changes_to_apply), 2) self.assertEqual(len(changes_to_apply[0]), 1) self.assertEqual(changes_to_apply[0][0], mutations[0]) self.assertEqual(len(changes_to_apply[1]), 1) self.assertEqual(changes_to_apply[1][0], mutations[1])
def test_generate(self): mutations = [ operators.Mutation( operator=operators.ArithmeticOperatorReplacement, node=ast.Sub(children=[])), operators.Mutation( operator=operators.ArithmeticOperatorReplacement, node=ast.Sub(children=[])), operators.Mutation( operator=operators.ArithmeticOperatorReplacement, node=ast.Sub(children=[])), ] hom_strategy = controller.EachChoiceHOMStrategy(order=2) changes_to_apply = list(hom_strategy.generate(mutations)) self.assertEqual(len(changes_to_apply), 2) self.assertEqual(len(changes_to_apply[0]), 2) self.assertEqual(changes_to_apply[0][0], mutations[0]) self.assertEqual(changes_to_apply[0][1], mutations[1]) self.assertEqual(len(changes_to_apply[1]), 1) self.assertEqual(changes_to_apply[1][0], mutations[2])
def aor_mutation_on_subtraction(): return operators.Mutation( operator=operators.ArithmeticOperatorReplacement, node=ast.Sub(children=[]))
def crp_mutation(node): return operators.Mutation(operator=operators.ConstantReplacement, node=node)
def asr_mutation(node): return operators.Mutation( operator=operators.AssignmentOperatorReplacement, node=node)
def aor_mutation(node): return operators.Mutation( operator=operators.ArithmeticOperatorReplacement, node=node)