Beispiel #1
0
    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])
Beispiel #2
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])
Beispiel #3
0
    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])
Beispiel #4
0
    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])
Beispiel #5
0
 def aor_mutation_on_subtraction():
     return operators.Mutation(
         operator=operators.ArithmeticOperatorReplacement,
         node=ast.Sub(children=[]))
Beispiel #6
0
 def crp_mutation(node):
     return operators.Mutation(operator=operators.ConstantReplacement,
                               node=node)
Beispiel #7
0
 def asr_mutation(node):
     return operators.Mutation(
         operator=operators.AssignmentOperatorReplacement, node=node)
Beispiel #8
0
 def aor_mutation(node):
     return operators.Mutation(
         operator=operators.ArithmeticOperatorReplacement, node=node)