/* * Copyright (c) 2007 Mockito contributors * This program is made available under the terms of the MIT License. */ package org.mockito.internal.matchers; import org.mockito.ArgumentMatcher; import org.mockito.internal.matchers.text.ValuePrinter; import java.io.Serializable; public class Equals implements ArgumentMatcher<Object>, ContainsExtraTypeInfo, Serializable { private final Object wanted; public Equals(Object wanted) { this.wanted = wanted; } public boolean matches(Object actual) { return Equality.areEqual(this.wanted, actual); } public String toString() { return describe(wanted); } private String describe(Object object) { return ValuePrinter.print(object); } protected final Object getWanted() { return wanted; } @Override public boolean equals(Object o) { if (o == null || !this.getClass().equals(o.getClass())) { return false; } Equals other = (Equals) o; return this.wanted == null && other.wanted == null || this.wanted != null && this.wanted.equals(other.wanted); } @Override public int hashCode() { return 1; } public String toStringWithType() { return "("+ wanted.getClass().getSimpleName() +") " + describe(wanted); } public boolean typeMatches(Object target) { return wanted != null && target != null && target.getClass() == wanted.getClass(); } }