Home | History | Annotate | Download | only in stubbing
      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.invocation.Invocation;
      8 import org.mockito.stubbing.Answer;
      9 import org.mockito.stubbing.OngoingStubbing;
     10 
     11 import static org.mockito.internal.exceptions.Reporter.incorrectUseOfApi;
     12 
     13 import java.util.List;
     14 
     15 public class OngoingStubbingImpl<T> extends BaseStubbing<T> {
     16 
     17     private final InvocationContainerImpl invocationContainer;
     18 
     19     public OngoingStubbingImpl(InvocationContainerImpl invocationContainer) {
     20         this.invocationContainer = invocationContainer;
     21     }
     22 
     23     @Override
     24     public OngoingStubbing<T> thenAnswer(Answer<?> answer) {
     25         if(!invocationContainer.hasInvocationForPotentialStubbing()) {
     26             throw incorrectUseOfApi();
     27         }
     28 
     29         invocationContainer.addAnswer(answer);
     30         return new ConsecutiveStubbing<T>(invocationContainer);
     31     }
     32 
     33     @Override
     34     public OngoingStubbing<T> then(Answer<?> answer) {
     35         return thenAnswer(answer);
     36     }
     37 
     38     public List<Invocation> getRegisteredInvocations() {
     39         //TODO interface for tests
     40         return invocationContainer.getInvocations();
     41     }
     42 
     43     @Override
     44     @SuppressWarnings("unchecked")
     45     public <M> M getMock() {
     46         return (M) invocationContainer.invokedMock();
     47     }
     48 }
     49 
     50 
     51