| /* |
| * Copyright (c) 2016 Mockito contributors |
| * This program is made available under the terms of the MIT License. |
| */ |
| package org.mockito.internal.junit; |
| |
| import org.mockito.internal.util.MockitoLogger; |
| import org.mockito.invocation.Invocation; |
| |
| import java.util.LinkedHashMap; |
| import java.util.LinkedHashSet; |
| import java.util.Map; |
| import java.util.Set; |
| |
| /** |
| * Contains stubbing arg mismatches, knows how to format them |
| */ |
| class StubbingArgMismatches { |
| |
| final Map<Invocation, Set<Invocation>> mismatches = new LinkedHashMap<Invocation, Set<Invocation>>(); |
| |
| public void add(Invocation invocation, Invocation stubbing) { |
| Set<Invocation> matchingInvocations = mismatches.get(stubbing); |
| if (matchingInvocations == null) { |
| matchingInvocations = new LinkedHashSet<Invocation>(); |
| mismatches.put(stubbing, matchingInvocations); |
| } |
| matchingInvocations.add(invocation); |
| } |
| |
| public void format(String testName, MockitoLogger logger) { |
| if (mismatches.isEmpty()) { |
| return; |
| } |
| |
| StubbingHint hint = new StubbingHint(testName); |
| int x = 1; |
| for (Map.Entry<Invocation, Set<Invocation>> m : mismatches.entrySet()) { |
| hint.appendLine(x++, ". Unused... ", m.getKey().getLocation()); |
| for (Invocation invocation : m.getValue()) { |
| hint.appendLine(" ...args ok? ", invocation.getLocation()); |
| } |
| } |
| |
| logger.log(hint.toString()); |
| } |
| |
| public int size() { |
| return mismatches.size(); |
| } |
| |
| public String toString() { |
| return "" + mismatches; |
| } |
| } |