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