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.MissingInvocationChecker.checkMissingInvocation;
      9 import static org.mockito.internal.verification.checkers.NumberOfInvocationsChecker.checkNumberOfInvocations;
     10 
     11 import java.util.List;
     12 import org.mockito.exceptions.base.MockitoException;
     13 import org.mockito.invocation.MatchableInvocation;
     14 import org.mockito.internal.verification.api.VerificationData;
     15 import org.mockito.internal.verification.api.VerificationDataInOrder;
     16 import org.mockito.internal.verification.api.VerificationInOrderMode;
     17 import org.mockito.invocation.Invocation;
     18 import org.mockito.verification.VerificationMode;
     19 
     20 public 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