NodeIdManager.java

1
package net.bmahe.genetics4j.neat;
2
3
import java.util.Collection;
4
import java.util.Set;
5
import java.util.concurrent.ConcurrentHashMap;
6
import java.util.concurrent.atomic.AtomicLong;
7
8
import org.apache.commons.lang3.Validate;
9
10
import net.bmahe.genetics4j.neat.spec.NeatNodeLayout;
11
12
/**
13
 * Allocates collision-safe hidden-node IDs for one semantic node layout.
14
 *
15
 * <p>A manager is intended to be shared by every chromosome in an evolving population. It tracks IDs already present
16
 * in chromosomes and assigns one stable hidden-node ID to each ancestral connection innovation that is split by an
17
 * add-node mutation. Consequently, homologous mutations receive the same node ID even when they occur in different
18
 * genomes.
19
 *
20
 * <p>Allocation and registration methods are synchronized so a manager can safely be used by concurrent mutation
21
 * workers. IDs are drawn exclusively from the layout's hidden-node range and exhaustion is reported with an
22
 * {@link IllegalStateException}.
23
 *
24
 * @see NodeIdManagerRegistry
25
 * @see InnovationManager
26
 */
27
public class NodeIdManager {
28
29
	private final NeatNodeLayout nodeLayout;
30
	private final AtomicLong nextNodeId;
31 2 1. <init> : Removed assignment to member variable allocatedNodeIds → KILLED
2. <init> : removed call to java/util/concurrent/ConcurrentHashMap::newKeySet → KILLED
	private final Set<Integer> allocatedNodeIds = ConcurrentHashMap.newKeySet();
32 2 1. <init> : removed call to java/util/concurrent/ConcurrentHashMap::<init> → KILLED
2. <init> : Removed assignment to member variable splitNodeIds → KILLED
	private final ConcurrentHashMap<Integer, Integer> splitNodeIds = new ConcurrentHashMap<>();
33 2 1. <init> : Removed assignment to member variable splitInnovationsByNodeId → KILLED
2. <init> : removed call to java/util/concurrent/ConcurrentHashMap::<init> → KILLED
	private final ConcurrentHashMap<Integer, Integer> splitInnovationsByNodeId = new ConcurrentHashMap<>();
34
35
	/**
36
	 * Creates a manager for one node layout.
37
	 *
38
	 * @param _nodeLayout layout defining the external IDs and hidden-node range
39
	 * @throws NullPointerException if {@code _nodeLayout} is {@code null}
40
	 */
41
	public NodeIdManager(final NeatNodeLayout _nodeLayout) {
42
		nodeLayout = Validate.notNull(_nodeLayout);
43 3 1. <init> : Removed assignment to member variable nextNodeId → KILLED
2. <init> : removed call to net/bmahe/genetics4j/neat/spec/NeatNodeLayout::hiddenNodeIdStartInclusive → KILLED
3. <init> : removed call to java/util/concurrent/atomic/AtomicLong::<init> → KILLED
		nextNodeId = new AtomicLong(nodeLayout.hiddenNodeIdStartInclusive());
44
	}
45
46
	/**
47
	 * Returns the hidden-node ID associated with splitting an ancestral connection.
48
	 *
49
	 * <p>The first call allocates an ID; subsequent calls with the same innovation return that ID.
50
	 *
51
	 * @param connectionInnovation non-negative connection innovation number
52
	 * @return the stable hidden-node ID for the split
53
	 * @throws IllegalArgumentException if the innovation number is negative
54
	 * @throws IllegalStateException    if the hidden-node range is exhausted
55
	 */
56
	public synchronized int nodeIdForSplit(final int connectionInnovation) {
57
		Validate.isTrue(connectionInnovation >= 0, "Connection innovation must be non-negative");
58 5 1. nodeIdForSplit : removed call to java/util/concurrent/ConcurrentHashMap::computeIfAbsent → KILLED
2. nodeIdForSplit : removed call to java/lang/Integer::valueOf → KILLED
3. nodeIdForSplit : replaced int return with 0 for net/bmahe/genetics4j/neat/NodeIdManager::nodeIdForSplit → KILLED
4. nodeIdForSplit : replaced call to java/util/concurrent/ConcurrentHashMap::computeIfAbsent with argument → KILLED
5. nodeIdForSplit : removed call to java/lang/Integer::intValue → KILLED
		return splitNodeIds.computeIfAbsent(connectionInnovation, ignored -> {
59 1 1. lambda$nodeIdForSplit$0 : removed call to net/bmahe/genetics4j/neat/NodeIdManager::allocateNodeId → KILLED
			final int nodeId = allocateNodeId();
60 4 1. lambda$nodeIdForSplit$0 : replaced call to java/util/concurrent/ConcurrentHashMap::put with argument → SURVIVED
2. lambda$nodeIdForSplit$0 : removed call to java/util/concurrent/ConcurrentHashMap::put → SURVIVED
3. lambda$nodeIdForSplit$0 : removed call to java/lang/Integer::valueOf → KILLED
4. lambda$nodeIdForSplit$0 : removed call to java/lang/Integer::valueOf → KILLED
			splitInnovationsByNodeId.put(nodeId, connectionInnovation);
61 2 1. lambda$nodeIdForSplit$0 : removed call to java/lang/Integer::valueOf → KILLED
2. lambda$nodeIdForSplit$0 : replaced Integer return value with 0 for net/bmahe/genetics4j/neat/NodeIdManager::lambda$nodeIdForSplit$0 → KILLED
			return nodeId;
62
		});
63
	}
64
65
	/**
66
	 * Registers node IDs already present in a chromosome before new IDs are allocated.
67
	 *
68
	 * <p>External IDs are accepted but do not consume hidden-node allocation slots. Every other ID must belong to the
69
	 * layout's hidden-node range.
70
	 *
71
	 * @param nodeIds IDs referenced by an existing chromosome
72
	 * @throws NullPointerException     if the collection or one of its elements is {@code null}
73
	 * @throws IllegalArgumentException if an ID is outside the layout namespaces
74
	 */
75
	public synchronized void registerExistingNodeIds(final Collection<Integer> nodeIds) {
76
		Validate.notNull(nodeIds);
77
		for (final Integer nodeId : nodeIds) {
78
			Validate.notNull(nodeId);
79 5 1. registerExistingNodeIds : removed conditional - replaced equality check with true → KILLED
2. registerExistingNodeIds : negated conditional → KILLED
3. registerExistingNodeIds : removed call to java/lang/Integer::intValue → KILLED
4. registerExistingNodeIds : removed conditional - replaced equality check with false → KILLED
5. registerExistingNodeIds : removed call to net/bmahe/genetics4j/neat/spec/NeatNodeLayout::isExternal → KILLED
			if (nodeLayout.isExternal(nodeId) == false) {
80
				Validate.isTrue(nodeLayout.isHidden(nodeId), "Node ID %d is outside the layout namespaces", nodeId);
81 1 1. registerExistingNodeIds : removed call to java/util/Set::add → KILLED
				allocatedNodeIds.add(nodeId);
82
			}
83
		}
84
	}
85
86
	/**
87
	 * Registers a known relationship between an ancestral connection and an existing hidden node.
88
	 *
89
	 * @param connectionInnovation non-negative connection innovation number
90
	 * @param nodeId               hidden-node ID assigned to the split
91
	 * @throws IllegalArgumentException if the ID is outside the hidden range or either value conflicts with a previous
92
	 *                                  registration
93
	 */
94
	public synchronized void registerSplit(final int connectionInnovation, final int nodeId) {
95
		Validate.isTrue(connectionInnovation >= 0, "Connection innovation must be non-negative");
96
		Validate.isTrue(nodeLayout.isHidden(nodeId), "Node ID %d is outside the hidden-node range", nodeId);
97 3 1. registerSplit : removed call to java/util/concurrent/ConcurrentHashMap::get → NO_COVERAGE
2. registerSplit : replaced call to java/util/concurrent/ConcurrentHashMap::get with argument → NO_COVERAGE
3. registerSplit : removed call to java/lang/Integer::valueOf → NO_COVERAGE
		final Integer existing = splitNodeIds.get(connectionInnovation);
98 7 1. registerSplit : removed call to java/lang/Integer::intValue → NO_COVERAGE
2. registerSplit : removed conditional - replaced equality check with false → NO_COVERAGE
3. registerSplit : removed conditional - replaced equality check with false → NO_COVERAGE
4. registerSplit : negated conditional → NO_COVERAGE
5. registerSplit : negated conditional → NO_COVERAGE
6. registerSplit : removed conditional - replaced equality check with true → NO_COVERAGE
7. registerSplit : removed conditional - replaced equality check with true → NO_COVERAGE
		if (existing != null && existing != nodeId) {
99 2 1. registerSplit : Substituted 2 with 3 → NO_COVERAGE
2. registerSplit : Substituted 0 with 1 → NO_COVERAGE
			throw new IllegalArgumentException("Connection innovation %d is already mapped to hidden node %d"
100 5 1. registerSplit : Substituted 1 with 0 → NO_COVERAGE
2. registerSplit : removed call to java/lang/String::formatted → NO_COVERAGE
3. registerSplit : replaced call to java/lang/String::formatted with receiver → NO_COVERAGE
4. registerSplit : removed call to java/lang/Integer::valueOf → NO_COVERAGE
5. registerSplit : removed call to java/lang/IllegalArgumentException::<init> → NO_COVERAGE
					.formatted(connectionInnovation, existing));
101
		}
102 3 1. registerSplit : replaced call to java/util/concurrent/ConcurrentHashMap::get with argument → NO_COVERAGE
2. registerSplit : removed call to java/lang/Integer::valueOf → NO_COVERAGE
3. registerSplit : removed call to java/util/concurrent/ConcurrentHashMap::get → NO_COVERAGE
		final Integer existingInnovation = splitInnovationsByNodeId.get(nodeId);
103 7 1. registerSplit : removed conditional - replaced equality check with false → NO_COVERAGE
2. registerSplit : removed conditional - replaced equality check with false → NO_COVERAGE
3. registerSplit : removed conditional - replaced equality check with true → NO_COVERAGE
4. registerSplit : removed call to java/lang/Integer::intValue → NO_COVERAGE
5. registerSplit : removed conditional - replaced equality check with true → NO_COVERAGE
6. registerSplit : negated conditional → NO_COVERAGE
7. registerSplit : negated conditional → NO_COVERAGE
		if (existingInnovation != null && existingInnovation != connectionInnovation) {
104 2 1. registerSplit : Substituted 2 with 3 → NO_COVERAGE
2. registerSplit : Substituted 0 with 1 → NO_COVERAGE
			throw new IllegalArgumentException(
105 5 1. registerSplit : removed call to java/lang/IllegalArgumentException::<init> → NO_COVERAGE
2. registerSplit : removed call to java/lang/Integer::valueOf → NO_COVERAGE
3. registerSplit : Substituted 1 with 0 → NO_COVERAGE
4. registerSplit : removed call to java/lang/String::formatted → NO_COVERAGE
5. registerSplit : replaced call to java/lang/String::formatted with receiver → NO_COVERAGE
					"Hidden node ID %d is already mapped to connection innovation %d".formatted(nodeId, existingInnovation));
106
		}
107 4 1. registerSplit : removed call to java/lang/Integer::valueOf → NO_COVERAGE
2. registerSplit : removed call to java/util/concurrent/ConcurrentHashMap::put → NO_COVERAGE
3. registerSplit : replaced call to java/util/concurrent/ConcurrentHashMap::put with argument → NO_COVERAGE
4. registerSplit : removed call to java/lang/Integer::valueOf → NO_COVERAGE
		splitNodeIds.put(connectionInnovation, nodeId);
108 4 1. registerSplit : removed call to java/lang/Integer::valueOf → NO_COVERAGE
2. registerSplit : removed call to java/lang/Integer::valueOf → NO_COVERAGE
3. registerSplit : removed call to java/util/concurrent/ConcurrentHashMap::put → NO_COVERAGE
4. registerSplit : replaced call to java/util/concurrent/ConcurrentHashMap::put with argument → NO_COVERAGE
		splitInnovationsByNodeId.put(nodeId, connectionInnovation);
109 2 1. registerSplit : removed call to java/lang/Integer::valueOf → NO_COVERAGE
2. registerSplit : removed call to java/util/Set::add → NO_COVERAGE
		allocatedNodeIds.add(nodeId);
110
	}
111
112
	private int allocateNodeId() {
113
		while (true) {
114 1 1. allocateNodeId : removed call to java/util/concurrent/atomic/AtomicLong::getAndIncrement → KILLED
			final long candidate = nextNodeId.getAndIncrement();
115 5 1. allocateNodeId : changed conditional boundary → KILLED
2. allocateNodeId : negated conditional → KILLED
3. allocateNodeId : removed conditional - replaced comparison check with true → KILLED
4. allocateNodeId : removed conditional - replaced comparison check with false → KILLED
5. allocateNodeId : removed call to net/bmahe/genetics4j/neat/spec/NeatNodeLayout::hiddenNodeIdEndExclusive → KILLED
			if (candidate >= nodeLayout.hiddenNodeIdEndExclusive()) {
116 2 1. allocateNodeId : Substituted 0 with 1 → SURVIVED
2. allocateNodeId : Substituted 2 with 3 → SURVIVED
				throw new IllegalStateException("Hidden-node ID range [%d, %d) is exhausted"
117 8 1. allocateNodeId : removed call to net/bmahe/genetics4j/neat/spec/NeatNodeLayout::hiddenNodeIdEndExclusive → SURVIVED
2. allocateNodeId : Substituted 1 with 0 → SURVIVED
3. allocateNodeId : removed call to java/lang/Long::valueOf → SURVIVED
4. allocateNodeId : removed call to net/bmahe/genetics4j/neat/spec/NeatNodeLayout::hiddenNodeIdStartInclusive → SURVIVED
5. allocateNodeId : removed call to java/lang/Long::valueOf → SURVIVED
6. allocateNodeId : replaced call to java/lang/String::formatted with receiver → SURVIVED
7. allocateNodeId : removed call to java/lang/String::formatted → SURVIVED
8. allocateNodeId : removed call to java/lang/IllegalStateException::<init> → KILLED
						.formatted(nodeLayout.hiddenNodeIdStartInclusive(), nodeLayout.hiddenNodeIdEndExclusive()));
118
			}
119 1 1. allocateNodeId : removed call to java/lang/Math::toIntExact → KILLED
			final int nodeId = Math.toIntExact(candidate);
120 5 1. allocateNodeId : removed conditional - replaced equality check with false → KILLED
2. allocateNodeId : removed conditional - replaced equality check with true → KILLED
3. allocateNodeId : removed call to java/lang/Integer::valueOf → KILLED
4. allocateNodeId : removed call to java/util/Set::add → KILLED
5. allocateNodeId : negated conditional → KILLED
			if (allocatedNodeIds.add(nodeId)) {
121 1 1. allocateNodeId : replaced int return with 0 for net/bmahe/genetics4j/neat/NodeIdManager::allocateNodeId → KILLED
				return nodeId;
122
			}
123
		}
124
	}
125
}

Mutations

31

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
Removed assignment to member variable allocatedNodeIds → KILLED

2.2
Location : <init>
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
removed call to java/util/concurrent/ConcurrentHashMap::newKeySet → KILLED

32

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
removed call to java/util/concurrent/ConcurrentHashMap::<init> → KILLED

2.2
Location : <init>
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
Removed assignment to member variable splitNodeIds → KILLED

33

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
Removed assignment to member variable splitInnovationsByNodeId → KILLED

2.2
Location : <init>
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
removed call to java/util/concurrent/ConcurrentHashMap::<init> → KILLED

43

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
Removed assignment to member variable nextNodeId → KILLED

2.2
Location : <init>
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
removed call to net/bmahe/genetics4j/neat/spec/NeatNodeLayout::hiddenNodeIdStartInclusive → KILLED

3.3
Location : <init>
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
removed call to java/util/concurrent/atomic/AtomicLong::<init> → KILLED

58

1.1
Location : nodeIdForSplit
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
removed call to java/util/concurrent/ConcurrentHashMap::computeIfAbsent → KILLED

2.2
Location : nodeIdForSplit
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
removed call to java/lang/Integer::valueOf → KILLED

3.3
Location : nodeIdForSplit
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
replaced int return with 0 for net/bmahe/genetics4j/neat/NodeIdManager::nodeIdForSplit → KILLED

4.4
Location : nodeIdForSplit
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
replaced call to java/util/concurrent/ConcurrentHashMap::computeIfAbsent with argument → KILLED

5.5
Location : nodeIdForSplit
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
removed call to java/lang/Integer::intValue → KILLED

59

1.1
Location : lambda$nodeIdForSplit$0
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
removed call to net/bmahe/genetics4j/neat/NodeIdManager::allocateNodeId → KILLED

60

1.1
Location : lambda$nodeIdForSplit$0
Killed by : none
replaced call to java/util/concurrent/ConcurrentHashMap::put with argument → SURVIVED
Covering tests

2.2
Location : lambda$nodeIdForSplit$0
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
removed call to java/lang/Integer::valueOf → KILLED

3.3
Location : lambda$nodeIdForSplit$0
Killed by : none
removed call to java/util/concurrent/ConcurrentHashMap::put → SURVIVED Covering tests

4.4
Location : lambda$nodeIdForSplit$0
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
removed call to java/lang/Integer::valueOf → KILLED

61

1.1
Location : lambda$nodeIdForSplit$0
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
removed call to java/lang/Integer::valueOf → KILLED

2.2
Location : lambda$nodeIdForSplit$0
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
replaced Integer return value with 0 for net/bmahe/genetics4j/neat/NodeIdManager::lambda$nodeIdForSplit$0 → KILLED

79

1.1
Location : registerExistingNodeIds
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.SparseStructuralMutationTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.SparseStructuralMutationTest]/[method:homologousSplitsAcrossChromosomesReuseHiddenNodeId()]
removed conditional - replaced equality check with true → KILLED

2.2
Location : registerExistingNodeIds
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:skipsExistingIdsAndReportsExhaustion()]
negated conditional → KILLED

3.3
Location : registerExistingNodeIds
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.SparseStructuralMutationTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.SparseStructuralMutationTest]/[method:homologousSplitsAcrossChromosomesReuseHiddenNodeId()]
removed call to java/lang/Integer::intValue → KILLED

4.4
Location : registerExistingNodeIds
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:skipsExistingIdsAndReportsExhaustion()]
removed conditional - replaced equality check with false → KILLED

5.5
Location : registerExistingNodeIds
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.SparseStructuralMutationTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.SparseStructuralMutationTest]/[method:homologousSplitsAcrossChromosomesReuseHiddenNodeId()]
removed call to net/bmahe/genetics4j/neat/spec/NeatNodeLayout::isExternal → KILLED

81

1.1
Location : registerExistingNodeIds
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:skipsExistingIdsAndReportsExhaustion()]
removed call to java/util/Set::add → KILLED

97

1.1
Location : registerSplit
Killed by : none
removed call to java/util/concurrent/ConcurrentHashMap::get → NO_COVERAGE

2.2
Location : registerSplit
Killed by : none
replaced call to java/util/concurrent/ConcurrentHashMap::get with argument → NO_COVERAGE

3.3
Location : registerSplit
Killed by : none
removed call to java/lang/Integer::valueOf → NO_COVERAGE

98

1.1
Location : registerSplit
Killed by : none
removed call to java/lang/Integer::intValue → NO_COVERAGE

2.2
Location : registerSplit
Killed by : none
removed conditional - replaced equality check with false → NO_COVERAGE

3.3
Location : registerSplit
Killed by : none
removed conditional - replaced equality check with false → NO_COVERAGE

4.4
Location : registerSplit
Killed by : none
negated conditional → NO_COVERAGE

5.5
Location : registerSplit
Killed by : none
negated conditional → NO_COVERAGE

6.6
Location : registerSplit
Killed by : none
removed conditional - replaced equality check with true → NO_COVERAGE

7.7
Location : registerSplit
Killed by : none
removed conditional - replaced equality check with true → NO_COVERAGE

99

1.1
Location : registerSplit
Killed by : none
Substituted 2 with 3 → NO_COVERAGE

2.2
Location : registerSplit
Killed by : none
Substituted 0 with 1 → NO_COVERAGE

100

1.1
Location : registerSplit
Killed by : none
Substituted 1 with 0 → NO_COVERAGE

2.2
Location : registerSplit
Killed by : none
removed call to java/lang/String::formatted → NO_COVERAGE

3.3
Location : registerSplit
Killed by : none
replaced call to java/lang/String::formatted with receiver → NO_COVERAGE

4.4
Location : registerSplit
Killed by : none
removed call to java/lang/Integer::valueOf → NO_COVERAGE

5.5
Location : registerSplit
Killed by : none
removed call to java/lang/IllegalArgumentException::<init> → NO_COVERAGE

102

1.1
Location : registerSplit
Killed by : none
replaced call to java/util/concurrent/ConcurrentHashMap::get with argument → NO_COVERAGE

2.2
Location : registerSplit
Killed by : none
removed call to java/lang/Integer::valueOf → NO_COVERAGE

3.3
Location : registerSplit
Killed by : none
removed call to java/util/concurrent/ConcurrentHashMap::get → NO_COVERAGE

103

1.1
Location : registerSplit
Killed by : none
removed conditional - replaced equality check with false → NO_COVERAGE

2.2
Location : registerSplit
Killed by : none
removed conditional - replaced equality check with false → NO_COVERAGE

3.3
Location : registerSplit
Killed by : none
removed conditional - replaced equality check with true → NO_COVERAGE

4.4
Location : registerSplit
Killed by : none
removed call to java/lang/Integer::intValue → NO_COVERAGE

5.5
Location : registerSplit
Killed by : none
removed conditional - replaced equality check with true → NO_COVERAGE

6.6
Location : registerSplit
Killed by : none
negated conditional → NO_COVERAGE

7.7
Location : registerSplit
Killed by : none
negated conditional → NO_COVERAGE

104

1.1
Location : registerSplit
Killed by : none
Substituted 2 with 3 → NO_COVERAGE

2.2
Location : registerSplit
Killed by : none
Substituted 0 with 1 → NO_COVERAGE

105

1.1
Location : registerSplit
Killed by : none
removed call to java/lang/IllegalArgumentException::<init> → NO_COVERAGE

2.2
Location : registerSplit
Killed by : none
removed call to java/lang/Integer::valueOf → NO_COVERAGE

3.3
Location : registerSplit
Killed by : none
Substituted 1 with 0 → NO_COVERAGE

4.4
Location : registerSplit
Killed by : none
removed call to java/lang/String::formatted → NO_COVERAGE

5.5
Location : registerSplit
Killed by : none
replaced call to java/lang/String::formatted with receiver → NO_COVERAGE

107

1.1
Location : registerSplit
Killed by : none
removed call to java/lang/Integer::valueOf → NO_COVERAGE

2.2
Location : registerSplit
Killed by : none
removed call to java/util/concurrent/ConcurrentHashMap::put → NO_COVERAGE

3.3
Location : registerSplit
Killed by : none
replaced call to java/util/concurrent/ConcurrentHashMap::put with argument → NO_COVERAGE

4.4
Location : registerSplit
Killed by : none
removed call to java/lang/Integer::valueOf → NO_COVERAGE

108

1.1
Location : registerSplit
Killed by : none
removed call to java/lang/Integer::valueOf → NO_COVERAGE

2.2
Location : registerSplit
Killed by : none
removed call to java/lang/Integer::valueOf → NO_COVERAGE

3.3
Location : registerSplit
Killed by : none
removed call to java/util/concurrent/ConcurrentHashMap::put → NO_COVERAGE

4.4
Location : registerSplit
Killed by : none
replaced call to java/util/concurrent/ConcurrentHashMap::put with argument → NO_COVERAGE

109

1.1
Location : registerSplit
Killed by : none
removed call to java/lang/Integer::valueOf → NO_COVERAGE

2.2
Location : registerSplit
Killed by : none
removed call to java/util/Set::add → NO_COVERAGE

114

1.1
Location : allocateNodeId
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
removed call to java/util/concurrent/atomic/AtomicLong::getAndIncrement → KILLED

115

1.1
Location : allocateNodeId
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:skipsExistingIdsAndReportsExhaustion()]
changed conditional boundary → KILLED

2.2
Location : allocateNodeId
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
negated conditional → KILLED

3.3
Location : allocateNodeId
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
removed conditional - replaced comparison check with true → KILLED

4.4
Location : allocateNodeId
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:skipsExistingIdsAndReportsExhaustion()]
removed conditional - replaced comparison check with false → KILLED

5.5
Location : allocateNodeId
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
removed call to net/bmahe/genetics4j/neat/spec/NeatNodeLayout::hiddenNodeIdEndExclusive → KILLED

116

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

2.2
Location : allocateNodeId
Killed by : none
Substituted 2 with 3 → SURVIVED Covering tests

117

1.1
Location : allocateNodeId
Killed by : none
removed call to net/bmahe/genetics4j/neat/spec/NeatNodeLayout::hiddenNodeIdEndExclusive → SURVIVED
Covering tests

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

3.3
Location : allocateNodeId
Killed by : none
removed call to java/lang/Long::valueOf → SURVIVED Covering tests

4.4
Location : allocateNodeId
Killed by : none
removed call to net/bmahe/genetics4j/neat/spec/NeatNodeLayout::hiddenNodeIdStartInclusive → SURVIVED Covering tests

5.5
Location : allocateNodeId
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:skipsExistingIdsAndReportsExhaustion()]
removed call to java/lang/IllegalStateException::<init> → KILLED

6.6
Location : allocateNodeId
Killed by : none
removed call to java/lang/Long::valueOf → SURVIVED Covering tests

7.7
Location : allocateNodeId
Killed by : none
replaced call to java/lang/String::formatted with receiver → SURVIVED Covering tests

8.8
Location : allocateNodeId
Killed by : none
removed call to java/lang/String::formatted → SURVIVED Covering tests

119

1.1
Location : allocateNodeId
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
removed call to java/lang/Math::toIntExact → KILLED

120

1.1
Location : allocateNodeId
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
removed conditional - replaced equality check with false → KILLED

2.2
Location : allocateNodeId
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:skipsExistingIdsAndReportsExhaustion()]
removed conditional - replaced equality check with true → KILLED

3.3
Location : allocateNodeId
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
removed call to java/lang/Integer::valueOf → KILLED

4.4
Location : allocateNodeId
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
removed call to java/util/Set::add → KILLED

5.5
Location : allocateNodeId
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
negated conditional → KILLED

121

1.1
Location : allocateNodeId
Killed by : net.bmahe.genetics4j.neat.NodeIdManagerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.NodeIdManagerTest]/[method:homologousSplitsReuseIdsAndDistinctSplitsDoNot()]
replaced int return with 0 for net/bmahe/genetics4j/neat/NodeIdManager::allocateNodeId → KILLED

Active mutators

Tests examined


Report generated by PIT 1.23.1 support