• 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 
6 package org.mockito.internal.verification;
7 
8 import static org.mockito.internal.verification.checkers.MissingInvocationChecker.checkMissingInvocation;
9 import static org.mockito.internal.verification.checkers.NumberOfInvocationsChecker.checkNumberOfInvocationsNonGreedy;
10 
11 import java.util.List;
12 import org.mockito.exceptions.base.MockitoException;
13 import org.mockito.internal.verification.api.VerificationData;
14 import org.mockito.internal.verification.api.VerificationDataInOrder;
15 import org.mockito.internal.verification.api.VerificationInOrderMode;
16 import org.mockito.invocation.Invocation;
17 import org.mockito.invocation.MatchableInvocation;
18 import org.mockito.verification.VerificationMode;
19 
20 public class Calls implements VerificationMode, VerificationInOrderMode {
21 
22     final int wantedCount;
23 
Calls(int wantedNumberOfInvocations)24     public Calls(int wantedNumberOfInvocations) {
25         if( wantedNumberOfInvocations <= 0 ) {
26             throw new MockitoException( "Negative and zero values are not allowed here" );
27         }
28         this.wantedCount = wantedNumberOfInvocations;
29     }
30 
31     @Override
verify(VerificationData data)32     public void verify(VerificationData data) {
33         throw new MockitoException( "calls is only intended to work with InOrder" );
34     }
35 
36     @Override
verifyInOrder(VerificationDataInOrder data)37     public void verifyInOrder(VerificationDataInOrder data) {
38         List<Invocation> allInvocations = data.getAllInvocations();
39         MatchableInvocation wanted = data.getWanted();
40 
41         checkMissingInvocation(allInvocations, wanted,  data.getOrderingContext());
42         checkNumberOfInvocationsNonGreedy(allInvocations, wanted, wantedCount, data.getOrderingContext());
43     }
44 
45     @Override
toString()46     public String toString() {
47         return "Wanted invocations count (non-greedy): " + wantedCount;
48     }
49 
50     @Override
description(String description)51     public VerificationMode description(String description) {
52         return VerificationModeFactory.description(this, description);
53     }
54 }
55