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 APIs for the creation of the objects to be tested, for mocking dependencies, and for faking external APIs; JUnit (4 & 5) and TestNG test runners are supported. It also contains an advanced code coverage tool.

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




© 2015 - 2024 Weber Informatics LLC | Privacy Policy