View Javadoc
1   /*
2    * Copyright (c) 2006 JMockit developers
3    * This file is subject to the terms of the MIT license (see LICENSE.txt).
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  }