1e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson/* 2e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Copyright (c) 2007 Mockito contributors 3e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * This program is made available under the terms of the MIT License. 4e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 5e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpackage org.mockito.internal.verification; 6e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 7e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport java.util.List; 8e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 9e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.exceptions.Reporter; 10e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.internal.invocation.InvocationMarker; 11e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.internal.invocation.InvocationMatcher; 12e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.internal.invocation.InvocationsFinder; 13e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.internal.verification.api.VerificationData; 14e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.invocation.Invocation; 15e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.verification.VerificationMode; 16e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 17e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpublic class Only implements VerificationMode { 18e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 19e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson private final InvocationsFinder finder = new InvocationsFinder(); 20e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson private final InvocationMarker marker = new InvocationMarker(); 21e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson private final Reporter reporter = new Reporter(); 22e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 23e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson @SuppressWarnings("unchecked") 24e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public void verify(VerificationData data) { 25e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson InvocationMatcher wantedMatcher = data.getWanted(); 26e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson List<Invocation> invocations = data.getAllInvocations(); 27e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson List<Invocation> chunk = finder.findInvocations(invocations,wantedMatcher); 28e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson if (invocations.size() != 1 && chunk.size() > 0) { 29e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson Invocation unverified = finder.findFirstUnverified(invocations); 30e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson reporter.noMoreInteractionsWanted(unverified, (List) invocations); 31e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } else if (invocations.size() != 1 || chunk.size() == 0) { 32e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson reporter.wantedButNotInvoked(wantedMatcher); 33e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 34e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson marker.markVerified(chunk.get(0), wantedMatcher); 35e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 36e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson} 37