/* * Copyright (c) 2007 Mockito contributors * This program is made available under the terms of the MIT License. */ package org.mockito.internal.stubbing; import org.mockito.internal.stubbing.answers.CallsRealMethods; import org.mockito.internal.stubbing.answers.Returns; import org.mockito.internal.stubbing.answers.ThrowsException; import org.mockito.stubbing.DeprecatedOngoingStubbing; import org.mockito.stubbing.OngoingStubbing; public abstract class BaseStubbing<T> implements OngoingStubbing<T>, DeprecatedOngoingStubbing<T> { public OngoingStubbing<T> thenReturn(T value) { return thenAnswer(new Returns(value)); } public OngoingStubbing<T> thenReturn(T value, T... values) { OngoingStubbing<T> stubbing = thenReturn(value); if (values == null) { return stubbing.thenReturn(null); } for (T v: values) { stubbing = stubbing.thenReturn(v); } return stubbing; } private OngoingStubbing<T> thenThrow(Throwable throwable) { return thenAnswer(new ThrowsException(throwable)); } public OngoingStubbing<T> thenThrow(Throwable... throwables) { if (throwables == null) { thenThrow((Throwable) null); } OngoingStubbing<T> stubbing = null; for (Throwable t: throwables) { if (stubbing == null) { stubbing = thenThrow(t); } else { stubbing = stubbing.thenThrow(t); } } return stubbing; } public OngoingStubbing<T> thenCallRealMethod() { return thenAnswer(new CallsRealMethods()); } public DeprecatedOngoingStubbing<T> toReturn(T value) { return toAnswer(new Returns(value)); } public DeprecatedOngoingStubbing<T> toThrow(Throwable throwable) { return toAnswer(new ThrowsException(throwable)); } }