1
2
3
4
5 package mockit.internal.expectations.argumentMatching;
6
7 import edu.umd.cs.findbugs.annotations.NonNull;
8 import edu.umd.cs.findbugs.annotations.Nullable;
9
10 import java.util.Map;
11
12 public final class LenientEqualityMatcher extends EqualityMatcher {
13 @NonNull
14 private final Map<Object, Object> instanceMap;
15
16 public LenientEqualityMatcher(@Nullable Object equalArg, @NonNull Map<Object, Object> instanceMap) {
17 super(equalArg);
18 this.instanceMap = instanceMap;
19 }
20
21 @Override
22 public boolean matches(@Nullable Object argValue) {
23 if (argValue == null) {
24 return object == null;
25 }
26 if (object == null) {
27 return false;
28 }
29 if (argValue == object || instanceMap.get(argValue) == object) {
30 return true;
31 }
32
33 return areEqualWhenNonNull(argValue, object);
34 }
35 }