mockit.coverage.dataItems.InstanceFieldData Maven / Gradle / Ivy
/*
* Copyright (c) 2006 Rogério Liesenfeld
* This file is subject to the terms of the MIT license (see LICENSE.txt).
*/
package mockit.coverage.dataItems;
import java.util.*;
import javax.annotation.*;
import mockit.internal.state.*;
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 Collections.emptyList();
}
Collection> assignments = testIdsToAssignments.values();
return assignments.iterator().next();
}
}