/*
* 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;
}
}