/* * Copyright (c) 2006 Rogério Liesenfeld * This file is subject to the terms of the MIT license (see LICENSE.txt). */ package mockit.coverage.testRedundancy; import java.lang.reflect.*; import java.util.*; import java.util.Map.*; import javax.annotation.*; public final class TestCoverage { @Nonnull public static final TestCoverage INSTANCE = new TestCoverage(); @Nonnull private final Map<Method, Integer> testsToItemsCovered = new LinkedHashMap<Method, Integer>(); @Nullable private Method currentTestMethod; private TestCoverage() {} public void setCurrentTestMethod(@Nullable Method testMethod) { if (testMethod != null) { testsToItemsCovered.put(testMethod, 0); } currentTestMethod = testMethod; } public void recordNewItemCoveredByTestIfApplicable(int previousExecutionCount) { if (previousExecutionCount == 0 && currentTestMethod != null) { Integer itemsCoveredByTest = testsToItemsCovered.get(currentTestMethod); testsToItemsCovered.put(currentTestMethod, itemsCoveredByTest == null ? 1 : itemsCoveredByTest + 1); } } @Nonnull public List<Method> getRedundantTests() { List<Method> redundantTests = new ArrayList<Method>(); for (Entry<Method, Integer> testAndItemsCovered : testsToItemsCovered.entrySet()) { Method testMethod = testAndItemsCovered.getKey(); Integer itemsCovered = testAndItemsCovered.getValue(); if (itemsCovered == 0) { redundantTests.add(testMethod); } } return redundantTests; } }