AtLeastXNumberOfInvocationsInOrderChecker.java revision e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7
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.checkers;
7
8import java.util.List;
9
10import org.mockito.exceptions.Reporter;
11import org.mockito.internal.invocation.InvocationMarker;
12import org.mockito.internal.invocation.InvocationMatcher;
13import org.mockito.internal.invocation.InvocationsFinder;
14import org.mockito.internal.verification.api.InOrderContext;
15import org.mockito.invocation.Invocation;
16import org.mockito.invocation.Location;
17
18public 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}