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