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.AtLeastXNumberOfInvocationsChecker.checkAtLeastNumberOfInvocations; 9 import static org.mockito.internal.verification.checkers.MissingInvocationChecker.checkMissingInvocation; 10 11 import org.mockito.exceptions.base.MockitoException; 12 import org.mockito.internal.verification.api.VerificationData; 13 import org.mockito.internal.verification.api.VerificationDataInOrder; 14 import org.mockito.internal.verification.api.VerificationInOrderMode; 15 import org.mockito.verification.VerificationMode; 16 17 public class AtLeast implements VerificationInOrderMode, VerificationMode { 18 19 final int wantedCount; 20 21 public AtLeast(int wantedNumberOfInvocations) { 22 if (wantedNumberOfInvocations < 0) { 23 throw new MockitoException("Negative value is not allowed here"); 24 } 25 this.wantedCount = wantedNumberOfInvocations; 26 } 27 28 @Override 29 public void verify(VerificationData data) { 30 if (wantedCount == 1) { 31 checkMissingInvocation(data.getAllInvocations(), data.getTarget()); 32 } 33 checkAtLeastNumberOfInvocations(data.getAllInvocations(), data.getTarget(), wantedCount); 34 } 35 36 @Override 37 public void verifyInOrder(VerificationDataInOrder data) { 38 if (wantedCount == 1) { 39 checkMissingInvocation(data.getAllInvocations(), data.getWanted(), data.getOrderingContext()); 40 } 41 checkAtLeastNumberOfInvocations(data.getAllInvocations(), data.getWanted(), wantedCount, data.getOrderingContext()); 42 } 43 44 @Override 45 public String toString() { 46 return "Wanted invocations count: at least " + wantedCount; 47 } 48 49 @Override 50 public VerificationMode description(String description) { 51 return VerificationModeFactory.description(this, description); 52 } 53 } 54