Home | History | Annotate | Download | only in verification
      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