1/* 2 * Copyright (c) 2007 Mockito contributors 3 * This program is made available under the terms of the MIT License. 4 */ 5 6package org.mockito.internal.verification; 7 8import static org.mockito.internal.verification.checkers.MissingInvocationChecker.checkMissingInvocation; 9import static org.mockito.internal.verification.checkers.NumberOfInvocationsChecker.checkNumberOfInvocations; 10 11import java.util.List; 12import org.mockito.exceptions.base.MockitoException; 13import org.mockito.invocation.MatchableInvocation; 14import org.mockito.internal.verification.api.VerificationData; 15import org.mockito.internal.verification.api.VerificationDataInOrder; 16import org.mockito.internal.verification.api.VerificationInOrderMode; 17import org.mockito.invocation.Invocation; 18import org.mockito.verification.VerificationMode; 19 20public class Times implements VerificationInOrderMode, VerificationMode { 21 22 final int wantedCount; 23 24 public Times(int wantedNumberOfInvocations) { 25 if (wantedNumberOfInvocations < 0) { 26 throw new MockitoException("Negative value is not allowed here"); 27 } 28 this.wantedCount = wantedNumberOfInvocations; 29 } 30 31 @Override 32 public void verify(VerificationData data) { 33 List<Invocation> invocations = data.getAllInvocations(); 34 MatchableInvocation wanted = data.getTarget(); 35 36 if (wantedCount > 0) { 37 checkMissingInvocation(data.getAllInvocations(), data.getTarget()); 38 } 39 checkNumberOfInvocations(invocations, wanted, wantedCount); 40 } 41 @Override 42 public void verifyInOrder(VerificationDataInOrder data) { 43 List<Invocation> allInvocations = data.getAllInvocations(); 44 MatchableInvocation wanted = data.getWanted(); 45 46 if (wantedCount > 0) { 47 checkMissingInvocation(allInvocations, wanted, data.getOrderingContext()); 48 } 49 checkNumberOfInvocations(allInvocations, wanted, wantedCount, data.getOrderingContext()); 50 } 51 52 @Override 53 public String toString() { 54 return "Wanted invocations count: " + wantedCount; 55 } 56 57 @Override 58 public VerificationMode description(String description) { 59 return VerificationModeFactory.description(this, description); 60 } 61} 62