All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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