mockit.coverage.dataItems.InstanceFieldData Maven / Gradle / Ivy
/*
* Copyright (c) 2006 JMockit developers
* This file is subject to the terms of the MIT license (see LICENSE.txt).
*/
package mockit.coverage.dataItems;
import static java.util.Collections.emptyList;
import edu.umd.cs.findbugs.annotations.NonNull;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import mockit.internal.state.TestRun;
public final class InstanceFieldData extends FieldData {
private static final long serialVersionUID = 6991762113575259754L;
@NonNull
private final transient Map> testIdsToAssignments = new HashMap<>();
void registerAssignment(@NonNull Object instance) {
List dataForRunningTest = getDataForRunningTest();
Integer instanceId = System.identityHashCode(instance);
if (!dataForRunningTest.contains(instanceId)) {
dataForRunningTest.add(instanceId);
}
writeCount++;
}
void registerRead(@NonNull Object instance) {
List dataForRunningTest = getDataForRunningTest();
Integer instanceId = System.identityHashCode(instance);
dataForRunningTest.remove(instanceId);
readCount++;
}
@NonNull
private List getDataForRunningTest() {
int testId = TestRun.getTestId();
List fieldData = testIdsToAssignments.get(testId);
if (fieldData == null) {
fieldData = new LinkedList<>();
testIdsToAssignments.put(testId, fieldData);
}
return fieldData;
}
@Override
void markAsCoveredIfNoUnreadValuesAreLeft() {
for (List unreadInstances : testIdsToAssignments.values()) {
if (unreadInstances.isEmpty()) {
covered = true;
break;
}
}
}
@NonNull
public List getOwnerInstancesWithUnreadAssignments() {
if (isCovered()) {
return emptyList();
}
Collection> assignments = testIdsToAssignments.values();
return assignments.iterator().next();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy