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

mockit.coverage.dataItems.InstanceFieldData Maven / Gradle / Ivy

Go to download

JMockit is a Java toolkit for automated developer testing. It contains mocking/faking APIs and a code coverage tool, supporting both JUnit and TestNG. The mocking APIs allow all kinds of Java code, without testability restrictions, to be tested in isolation from selected dependencies.

There is a newer version: 1.49
Show newest version
/*
 * Copyright (c) 2006 JMockit developers
 * 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();
   }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy