View Javadoc
1   /*
2    * MIT License
3    * Copyright (c) 2006-2025 JMockit developers
4    * See LICENSE file for full license text.
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  }