GrowProgramGenerator.java

1
package net.bmahe.genetics4j.gp.program;
2
3
import org.apache.commons.lang3.Validate;
4
5
import net.bmahe.genetics4j.core.chromosomes.TreeNode;
6
import net.bmahe.genetics4j.gp.Operation;
7
import net.bmahe.genetics4j.gp.OperationFactory;
8
9
public class GrowProgramGenerator implements ProgramGenerator {
10
11
	private final ProgramHelper programHelper;
12
13
	@SuppressWarnings({ "unchecked", "rawtypes" })
14
	private <T, U> TreeNode<Operation<T>> generate(final Program program, final Class<U> acceptedType,
15
			final int maxDepth, final int depth) {
16
17 6 1. generate : Substituted 1 with 0 → SURVIVED
2. generate : removed conditional - replaced comparison check with false → SURVIVED
3. generate : Replaced integer subtraction with addition → SURVIVED
4. generate : negated conditional → SURVIVED
5. generate : removed conditional - replaced comparison check with true → KILLED
6. generate : changed conditional boundary → KILLED
		OperationFactory currentNode = depth < maxDepth - 1
18 1 1. generate : removed call to net/bmahe/genetics4j/gp/program/ProgramHelper::pickRandomFunctionOrTerminal → KILLED
				? programHelper.pickRandomFunctionOrTerminal(program, acceptedType)
19 1 1. generate : removed call to net/bmahe/genetics4j/gp/program/ProgramHelper::pickRandomTerminal → SURVIVED
				: programHelper.pickRandomTerminal(program, acceptedType);
20
21 2 1. generate : removed call to net/bmahe/genetics4j/gp/program/Program::inputSpec → SURVIVED
2. generate : removed call to net/bmahe/genetics4j/gp/OperationFactory::build → KILLED
		final Operation<T> currentOperation = currentNode.build(program.inputSpec());
22 1 1. generate : removed call to net/bmahe/genetics4j/core/chromosomes/TreeNode::<init> → KILLED
		final TreeNode<Operation<T>> currentTreeNode = new TreeNode<>(currentOperation);
23
24 1 1. generate : removed call to net/bmahe/genetics4j/gp/OperationFactory::acceptedTypes → KILLED
		final Class[] acceptedTypes = currentNode.acceptedTypes();
25
26 5 1. generate : Substituted 0 with 1 → SURVIVED
2. generate : removed conditional - replaced comparison check with false → SURVIVED
3. generate : negated conditional → KILLED
4. generate : removed conditional - replaced comparison check with true → KILLED
5. generate : changed conditional boundary → KILLED
		for (int i = 0; i < acceptedTypes.length; i++) {
27
			final Class childAcceptedType = acceptedTypes[i];
28 3 1. generate : Substituted 1 with 0 → SURVIVED
2. generate : Replaced integer addition with subtraction → KILLED
3. generate : removed call to net/bmahe/genetics4j/gp/program/GrowProgramGenerator::generate → KILLED
			final TreeNode<Operation<T>> operation = generate(program, childAcceptedType, maxDepth, depth + 1);
29
30 1 1. generate : removed call to net/bmahe/genetics4j/core/chromosomes/TreeNode::addChild → SURVIVED
			currentTreeNode.addChild(operation);
31
		}
32
33 1 1. generate : replaced return value with null for net/bmahe/genetics4j/gp/program/GrowProgramGenerator::generate → KILLED
		return currentTreeNode;
34
	}
35
36
	public GrowProgramGenerator(final ProgramHelper _programHelper) {
37
		Validate.notNull(_programHelper);
38
39 1 1. <init> : Removed assignment to member variable programHelper → KILLED
		this.programHelper = _programHelper;
40
	}
41
42
	@Override
43
	public TreeNode<Operation<?>> generate(final Program program) {
44 3 1. generate : replaced return value with null for net/bmahe/genetics4j/gp/program/GrowProgramGenerator::generate → NO_COVERAGE
2. generate : removed call to net/bmahe/genetics4j/gp/program/GrowProgramGenerator::generate → NO_COVERAGE
3. generate : removed call to net/bmahe/genetics4j/gp/program/Program::maxDepth → NO_COVERAGE
		return generate(program, program.maxDepth());
45
	}
46
47
	@SuppressWarnings("rawtypes")
48
	@Override
49
	public TreeNode<Operation<?>> generate(final Program program, final int maxDepth) {
50
		Validate.notNull(program);
51
		Validate.isTrue(maxDepth > 0);
52
53 1 1. generate : removed call to net/bmahe/genetics4j/gp/program/ProgramHelper::pickRandomFunctionOrTerminal → KILLED
		final OperationFactory currentNode = programHelper.pickRandomFunctionOrTerminal(program);
54
55 2 1. generate : removed call to net/bmahe/genetics4j/gp/program/Program::inputSpec → SURVIVED
2. generate : removed call to net/bmahe/genetics4j/gp/OperationFactory::build → KILLED
		final Operation currentOperation = currentNode.build(program.inputSpec());
56 1 1. generate : removed call to net/bmahe/genetics4j/core/chromosomes/TreeNode::<init> → KILLED
		final TreeNode<Operation<?>> currentTreeNode = new TreeNode<>(currentOperation);
57
58 1 1. generate : removed call to net/bmahe/genetics4j/gp/OperationFactory::acceptedTypes → KILLED
		final Class[] acceptedTypes = currentNode.acceptedTypes();
59
60 5 1. generate : negated conditional → SURVIVED
2. generate : removed conditional - replaced comparison check with false → SURVIVED
3. generate : Substituted 0 with 1 → SURVIVED
4. generate : removed conditional - replaced comparison check with true → KILLED
5. generate : changed conditional boundary → KILLED
		for (int i = 0; i < acceptedTypes.length; i++) {
61
			final Class acceptedType = acceptedTypes[i];
62 2 1. generate : Substituted 1 with 0 → SURVIVED
2. generate : removed call to net/bmahe/genetics4j/gp/program/GrowProgramGenerator::generate → KILLED
			final TreeNode<Operation<?>> operation = generate(program, acceptedType, maxDepth, 1);
63
64 1 1. generate : removed call to net/bmahe/genetics4j/core/chromosomes/TreeNode::addChild → SURVIVED
			currentTreeNode.addChild(operation);
65
		}
66
67 1 1. generate : replaced return value with null for net/bmahe/genetics4j/gp/program/GrowProgramGenerator::generate → KILLED
		return currentTreeNode;
68
	}
69
70
	@Override
71
	public <T, U> TreeNode<Operation<T>> generate(final Program program, final int maxDepth, final Class<U> rootType) {
72
		Validate.notNull(program);
73
		Validate.notNull(rootType);
74
		Validate.isTrue(maxDepth > 0);
75
76 3 1. generate : Substituted 0 with 1 → SURVIVED
2. generate : removed call to net/bmahe/genetics4j/gp/program/GrowProgramGenerator::generate → KILLED
3. generate : replaced return value with null for net/bmahe/genetics4j/gp/program/GrowProgramGenerator::generate → KILLED
		return generate(program, rootType, maxDepth, 0);
77
	}
78
}

Mutations

17

1.1
Location : generate
Killed by : net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest]/[method:generate()]
removed conditional - replaced comparison check with true → KILLED

2.2
Location : generate
Killed by : net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest]/[method:generate()]
changed conditional boundary → KILLED

3.3
Location : generate
Killed by : none
Substituted 1 with 0 → SURVIVED
Covering tests

4.4
Location : generate
Killed by : none
removed conditional - replaced comparison check with false → SURVIVED Covering tests

5.5
Location : generate
Killed by : none
Replaced integer subtraction with addition → SURVIVED Covering tests

6.6
Location : generate
Killed by : none
negated conditional → SURVIVED Covering tests

18

1.1
Location : generate
Killed by : net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest]/[method:generateWithRootType()]
removed call to net/bmahe/genetics4j/gp/program/ProgramHelper::pickRandomFunctionOrTerminal → KILLED

19

1.1
Location : generate
Killed by : none
removed call to net/bmahe/genetics4j/gp/program/ProgramHelper::pickRandomTerminal → SURVIVED
Covering tests

21

1.1
Location : generate
Killed by : none
removed call to net/bmahe/genetics4j/gp/program/Program::inputSpec → SURVIVED
Covering tests

2.2
Location : generate
Killed by : net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest]/[method:generateWithRootType()]
removed call to net/bmahe/genetics4j/gp/OperationFactory::build → KILLED

22

1.1
Location : generate
Killed by : net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest]/[method:generateWithRootType()]
removed call to net/bmahe/genetics4j/core/chromosomes/TreeNode::<init> → KILLED

24

1.1
Location : generate
Killed by : net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest]/[method:generateWithRootType()]
removed call to net/bmahe/genetics4j/gp/OperationFactory::acceptedTypes → KILLED

26

1.1
Location : generate
Killed by : none
Substituted 0 with 1 → SURVIVED
Covering tests

2.2
Location : generate
Killed by : net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest]/[method:generateWithRootType()]
negated conditional → KILLED

3.3
Location : generate
Killed by : none
removed conditional - replaced comparison check with false → SURVIVED Covering tests

4.4
Location : generate
Killed by : net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest]/[method:generateWithRootType()]
removed conditional - replaced comparison check with true → KILLED

5.5
Location : generate
Killed by : net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest]/[method:generateWithRootType()]
changed conditional boundary → KILLED

28

1.1
Location : generate
Killed by : none
Substituted 1 with 0 → SURVIVED
Covering tests

2.2
Location : generate
Killed by : net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest]/[method:generate()]
Replaced integer addition with subtraction → KILLED

3.3
Location : generate
Killed by : net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest]/[method:generateWithRootType()]
removed call to net/bmahe/genetics4j/gp/program/GrowProgramGenerator::generate → KILLED

30

1.1
Location : generate
Killed by : none
removed call to net/bmahe/genetics4j/core/chromosomes/TreeNode::addChild → SURVIVED
Covering tests

33

1.1
Location : generate
Killed by : net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest]/[method:generateWithRootType()]
replaced return value with null for net/bmahe/genetics4j/gp/program/GrowProgramGenerator::generate → KILLED

39

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest]/[method:generateWithRootType()]
Removed assignment to member variable programHelper → KILLED

44

1.1
Location : generate
Killed by : none
replaced return value with null for net/bmahe/genetics4j/gp/program/GrowProgramGenerator::generate → NO_COVERAGE

2.2
Location : generate
Killed by : none
removed call to net/bmahe/genetics4j/gp/program/GrowProgramGenerator::generate → NO_COVERAGE

3.3
Location : generate
Killed by : none
removed call to net/bmahe/genetics4j/gp/program/Program::maxDepth → NO_COVERAGE

53

1.1
Location : generate
Killed by : net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest]/[method:generate()]
removed call to net/bmahe/genetics4j/gp/program/ProgramHelper::pickRandomFunctionOrTerminal → KILLED

55

1.1
Location : generate
Killed by : net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest]/[method:generate()]
removed call to net/bmahe/genetics4j/gp/OperationFactory::build → KILLED

2.2
Location : generate
Killed by : none
removed call to net/bmahe/genetics4j/gp/program/Program::inputSpec → SURVIVED
Covering tests

56

1.1
Location : generate
Killed by : net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest]/[method:generate()]
removed call to net/bmahe/genetics4j/core/chromosomes/TreeNode::<init> → KILLED

58

1.1
Location : generate
Killed by : net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest]/[method:generate()]
removed call to net/bmahe/genetics4j/gp/OperationFactory::acceptedTypes → KILLED

60

1.1
Location : generate
Killed by : none
negated conditional → SURVIVED
Covering tests

2.2
Location : generate
Killed by : none
removed conditional - replaced comparison check with false → SURVIVED Covering tests

3.3
Location : generate
Killed by : net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest]/[method:generate()]
removed conditional - replaced comparison check with true → KILLED

4.4
Location : generate
Killed by : net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest]/[method:generate()]
changed conditional boundary → KILLED

5.5
Location : generate
Killed by : none
Substituted 0 with 1 → SURVIVED Covering tests

62

1.1
Location : generate
Killed by : net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest]/[method:generate()]
removed call to net/bmahe/genetics4j/gp/program/GrowProgramGenerator::generate → KILLED

2.2
Location : generate
Killed by : none
Substituted 1 with 0 → SURVIVED
Covering tests

64

1.1
Location : generate
Killed by : none
removed call to net/bmahe/genetics4j/core/chromosomes/TreeNode::addChild → SURVIVED
Covering tests

67

1.1
Location : generate
Killed by : net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest]/[method:generate()]
replaced return value with null for net/bmahe/genetics4j/gp/program/GrowProgramGenerator::generate → KILLED

76

1.1
Location : generate
Killed by : net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest]/[method:generateWithRootType()]
removed call to net/bmahe/genetics4j/gp/program/GrowProgramGenerator::generate → KILLED

2.2
Location : generate
Killed by : none
Substituted 0 with 1 → SURVIVED
Covering tests

3.3
Location : generate
Killed by : net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.GrowProgramGeneratorTest]/[method:generateWithRootType()]
replaced return value with null for net/bmahe/genetics4j/gp/program/GrowProgramGenerator::generate → KILLED

Active mutators

Tests examined


Report generated by PIT 1.19.6