Home | History | Annotate | Download | only in defaultanswers
      1 /*
      2  * Copyright (c) 2016 Mockito contributors
      3  * This program is made available under the terms of the MIT License.
      4  */
      5 package org.mockito.internal.stubbing.defaultanswers;
      6 
      7 import org.mockito.internal.util.MockUtil;
      8 import org.mockito.invocation.InvocationOnMock;
      9 import org.mockito.stubbing.Answer;
     10 
     11 import java.io.Serializable;
     12 
     13 public class TriesToReturnSelf implements Answer<Object>, Serializable{
     14 
     15     private final ReturnsEmptyValues defaultReturn = new ReturnsEmptyValues();
     16 
     17     public Object answer(InvocationOnMock invocation) throws Throwable {
     18         Class<?> methodReturnType = invocation.getMethod().getReturnType();
     19         Object mock = invocation.getMock();
     20         Class<?> mockType = MockUtil.getMockHandler(mock).getMockSettings().getTypeToMock();
     21 
     22         if (methodReturnType.isAssignableFrom(mockType)) {
     23             return invocation.getMock();
     24         }
     25 
     26         return defaultReturn.returnValueFor(methodReturnType);
     27     }
     28 
     29 }
     30