Home | History | Annotate | Download | only in checkers
      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.checkers;
      7 
      8 import java.util.List;
      9 
     10 import org.mockito.exceptions.Reporter;
     11 import org.mockito.internal.invocation.InvocationMarker;
     12 import org.mockito.internal.invocation.InvocationMatcher;
     13 import org.mockito.internal.invocation.InvocationsFinder;
     14 import org.mockito.internal.verification.api.InOrderContext;
     15 import org.mockito.invocation.Invocation;
     16 import org.mockito.invocation.Location;
     17 
     18 public class AtLeastXNumberOfInvocationsInOrderChecker {
     19 
     20     private final Reporter reporter = new Reporter();
     21     private final InvocationsFinder finder = new InvocationsFinder();
     22     private final InvocationMarker invocationMarker = new InvocationMarker();
     23     private final InOrderContext orderingContext;
     24 
     25     public AtLeastXNumberOfInvocationsInOrderChecker(InOrderContext orderingContext) {
     26         this.orderingContext = orderingContext;
     27     }
     28 
     29     public void check(List<Invocation> invocations, InvocationMatcher wanted, int wantedCount) {
     30         List<Invocation> chunk = finder.findAllMatchingUnverifiedChunks(invocations, wanted, orderingContext);
     31 
     32         int actualCount = chunk.size();
     33 
     34         if (wantedCount > actualCount) {
     35             Location lastLocation = finder.getLastLocation(chunk);
     36             reporter.tooLittleActualInvocationsInOrder(new AtLeastDiscrepancy(wantedCount, actualCount), wanted, lastLocation);
     37         }
     38 
     39         invocationMarker.markVerifiedInOrder(chunk, wanted, orderingContext);
     40     }
     41 }