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.debugging; 6e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 7e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.internal.invocation.InvocationMatcher; 8e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.invocation.Invocation; 9e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 10e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport java.util.Iterator; 11e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport java.util.LinkedList; 12e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport java.util.List; 13e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 14e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson@SuppressWarnings("unchecked") 15e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpublic class WarningsFinder { 16e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson private final List<Invocation> baseUnusedStubs; 17e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson private final List<InvocationMatcher> baseAllInvocations; 18e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 19e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public WarningsFinder(List<Invocation> unusedStubs, List<InvocationMatcher> allInvocations) { 20e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson this.baseUnusedStubs = unusedStubs; 21e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson this.baseAllInvocations = allInvocations; 22e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 23e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 24e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public void find(FindingsListener findingsListener) { 25e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson List<Invocation> unusedStubs = new LinkedList(this.baseUnusedStubs); 26e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson List<InvocationMatcher> allInvocations = new LinkedList(this.baseAllInvocations); 27e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 28e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson Iterator<Invocation> unusedIterator = unusedStubs.iterator(); 29e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson while(unusedIterator.hasNext()) { 30e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson Invocation unused = unusedIterator.next(); 31e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson Iterator<InvocationMatcher> unstubbedIterator = allInvocations.iterator(); 32e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson while(unstubbedIterator.hasNext()) { 33e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson InvocationMatcher unstubbed = unstubbedIterator.next(); 34e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson if(unstubbed.hasSimilarMethod(unused)) { 35e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson findingsListener.foundStubCalledWithDifferentArgs(unused, unstubbed); 36e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson unusedIterator.remove(); 37e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson unstubbedIterator.remove(); 38e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 39e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 40e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 41e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 42e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson for (Invocation i : unusedStubs) { 43e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson findingsListener.foundUnusedStub(i); 44e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 45e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 46e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson for (InvocationMatcher i : allInvocations) { 47e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson findingsListener.foundUnstubbed(i); 48e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 49e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 50e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson} 51