/* * Copyright (c) 2007 Mockito contributors * This program is made available under the terms of the MIT License. */ package org.mockito.internal.handler; import org.mockito.invocation.DescribedInvocation; import org.mockito.invocation.Invocation; import org.mockito.listeners.MethodInvocationReport; import static org.mockito.internal.matchers.Equality.areEqual; /** * Report on a method call */ public class NotifiedMethodInvocationReport implements MethodInvocationReport { private final Invocation invocation; private final Object returnedValue; private final Throwable throwable; /** * Build a new {@link org.mockito.listeners.MethodInvocationReport} with a return value. * * * @param invocation Information on the method call * @param returnedValue The value returned by the method invocation */ public NotifiedMethodInvocationReport(Invocation invocation, Object returnedValue) { this.invocation = invocation; this.returnedValue = returnedValue; this.throwable = null; } /** * Build a new {@link org.mockito.listeners.MethodInvocationReport} with a return value. * * * @param invocation Information on the method call * @param throwable Tha throwable raised by the method invocation */ public NotifiedMethodInvocationReport(Invocation invocation, Throwable throwable) { this.invocation = invocation; this.returnedValue = null; this.throwable = throwable; } public DescribedInvocation getInvocation() { return invocation; } public Object getReturnedValue() { return returnedValue; } public Throwable getThrowable() { return throwable; } public boolean threwException() { return throwable != null; } public String getLocationOfStubbing() { return (invocation.stubInfo() == null) ? null : invocation.stubInfo().stubbedAt().toString(); } public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; NotifiedMethodInvocationReport that = (NotifiedMethodInvocationReport) o; return areEqual(invocation, that.invocation) && areEqual(returnedValue, that.returnedValue) && areEqual(throwable, that.throwable); } public int hashCode() { int result = invocation != null ? invocation.hashCode() : 0; result = 31 * result + (returnedValue != null ? returnedValue.hashCode() : 0); result = 31 * result + (throwable != null ? throwable.hashCode() : 0); return result; } }