StdProgramGenerator.java

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

Mutations

21

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.StdProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.StdProgramGeneratorTest]/[method:generateWithRootType()]
changed conditional boundary → KILLED

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

4.4
Location : generate
Killed by : none
removed call to java/util/random/RandomGenerator::nextDouble → SURVIVED Covering tests

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

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

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

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

9.9
Location : generate
Killed by : none
changed conditional boundary → SURVIVED Covering tests

10.10
Location : generate
Killed by : none
Substituted 0.5 with 1.0 → SURVIVED Covering tests

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

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

22

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

23

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

25

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

2.2
Location : generate
Killed by : net.bmahe.genetics4j.gp.mutation.ProgramRandomMutateMutatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.mutation.ProgramRandomMutateMutatorTest]/[method:simple()]
removed call to net/bmahe/genetics4j/gp/program/Program::inputSpec → KILLED

26

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

28

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

30

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

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

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

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

5.5
Location : generate
Killed by : net.bmahe.genetics4j.gp.chromosomes.factory.ProgramTreeChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.chromosomes.factory.ProgramTreeChromosomeFactoryTest]/[method:generateSimple()]
negated conditional → KILLED

32

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

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

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

34

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

37

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

44

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

45

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

54

1.1
Location : generate
Killed by : none
removed call to java/util/random/RandomGenerator::nextDouble → SURVIVED
Covering tests

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

3.3
Location : generate
Killed by : none
negated conditional → 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
Substituted 0.98 with 1.0 → SURVIVED Covering tests

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

55

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

56

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

58

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.StdProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.StdProgramGeneratorTest]/[method:generate()]
removed call to net/bmahe/genetics4j/gp/OperationFactory::build → KILLED

59

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

61

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

63

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

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

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.StdProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.StdProgramGeneratorTest]/[method:generate()]
changed conditional boundary → KILLED

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

65

1.1
Location : generate
Killed by : net.bmahe.genetics4j.gp.program.StdProgramGeneratorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.program.StdProgramGeneratorTest]/[method:generate()]
Substituted 1 with 0 → KILLED

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

67

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

70

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

75

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

2.2
Location : generate
Killed by : net.bmahe.genetics4j.gp.chromosomes.factory.ProgramTreeChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.chromosomes.factory.ProgramTreeChromosomeFactoryTest]/[method:generateSimple()]
removed call to net/bmahe/genetics4j/gp/program/StdProgramGenerator::generate → KILLED

3.3
Location : generate
Killed by : net.bmahe.genetics4j.gp.chromosomes.factory.ProgramTreeChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.gp.chromosomes.factory.ProgramTreeChromosomeFactoryTest]/[method:generateSimple()]
removed call to net/bmahe/genetics4j/gp/program/Program::maxDepth → KILLED

84

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

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

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

Active mutators

Tests examined


Report generated by PIT 1.25.7 support