• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2007 Mockito contributors
3  * This program is made available under the terms of the MIT License.
4  */
5 package org.mockito.internal.stubbing;
6 
7 import org.mockito.internal.stubbing.answers.CallsRealMethods;
8 import org.mockito.internal.stubbing.answers.Returns;
9 import org.mockito.internal.stubbing.answers.ThrowsException;
10 import org.mockito.internal.stubbing.answers.ThrowsExceptionClass;
11 import org.mockito.stubbing.DeprecatedOngoingStubbing;
12 import org.mockito.stubbing.OngoingStubbing;
13 
14 public abstract class BaseStubbing<T> implements OngoingStubbing<T>, DeprecatedOngoingStubbing<T> {
thenReturn(T value)15     public OngoingStubbing<T> thenReturn(T value) {
16         return thenAnswer(new Returns(value));
17     }
18 
thenReturn(T value, T... values)19     public OngoingStubbing<T> thenReturn(T value, T... values) {
20         OngoingStubbing<T> stubbing = thenReturn(value);
21         if (values == null) {
22             return stubbing.thenReturn(null);
23         }
24         for (T v: values) {
25             stubbing = stubbing.thenReturn(v);
26         }
27         return stubbing;
28     }
29 
thenThrow(Throwable throwable)30     private OngoingStubbing<T> thenThrow(Throwable throwable) {
31         return thenAnswer(new ThrowsException(throwable));
32     }
33 
thenThrow(Throwable... throwables)34     public OngoingStubbing<T> thenThrow(Throwable... throwables) {
35         if (throwables == null) {
36             thenThrow((Throwable) null);
37         }
38         OngoingStubbing<T> stubbing = null;
39         for (Throwable t: throwables) {
40             if (stubbing == null) {
41                 stubbing = thenThrow(t);
42             } else {
43                 stubbing = stubbing.thenThrow(t);
44             }
45         }
46         return stubbing;
47     }
48 
thenThrow(Class<? extends Throwable> throwableClass)49     private OngoingStubbing<T> thenThrow(Class<? extends Throwable> throwableClass) {
50         return thenAnswer(new ThrowsExceptionClass(throwableClass));
51     }
52 
thenThrow(Class<? extends Throwable>.... throwableClasses)53     public OngoingStubbing<T> thenThrow(Class<? extends Throwable>... throwableClasses) {
54         if (throwableClasses == null) {
55             thenThrow((Throwable) null);
56         }
57         OngoingStubbing<T> stubbing = null;
58         for (Class<? extends Throwable> t: throwableClasses) {
59             if (stubbing == null) {
60                 stubbing = thenThrow(t);
61             } else {
62                 stubbing = stubbing.thenThrow(t);
63             }
64         }
65         return stubbing;
66     }
67 
thenCallRealMethod()68     public OngoingStubbing<T> thenCallRealMethod() {
69         return thenAnswer(new CallsRealMethods());
70     }
71 
toReturn(T value)72     public DeprecatedOngoingStubbing<T> toReturn(T value) {
73         return toAnswer(new Returns(value));
74     }
75 
toThrow(Throwable throwable)76     public DeprecatedOngoingStubbing<T> toThrow(Throwable throwable) {
77         return toAnswer(new ThrowsException(throwable));
78     }
79 }
80