/*
* Copyright (c) 2006 Rogério Liesenfeld
* This file is subject to the terms of the MIT license (see LICENSE.txt).
*/
package mockit.internal.expectations.argumentMatching;
import java.util.*;
import javax.annotation.*;
public final class LenientEqualityMatcher extends EqualityMatcher
{
@Nonnull private final Map<Object, Object> instanceMap;
public LenientEqualityMatcher(@Nullable Object equalArg, @Nonnull Map<Object, Object> instanceMap)
{
super(equalArg);
this.instanceMap = instanceMap;
}
@Override
public boolean matches(@Nullable Object argValue)
{
if (argValue == null) {
return object == null;
}
else if (object == null) {
return false;
}
else if (argValue == object || instanceMap.get(argValue) == object) {
return true;
}
return areEqualWhenNonNull(argValue, object);
}
}