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 Parkinson 6e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpackage org.mockito.internal.invocation; 7e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 8e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.internal.InternalMockHandler; 9e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.internal.stubbing.StubbedInvocationMatcher; 10e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.internal.util.MockUtil; 11e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.invocation.Invocation; 12e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 13e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport java.util.*; 14e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 15e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpublic class UnusedStubsFinder { 16e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 17e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 18e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Finds all unused stubs for given mocks 19e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 20e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @param mocks 21e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 22e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public List<Invocation> find(List<?> mocks) { 23e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson List<Invocation> unused = new LinkedList<Invocation>(); 24e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson for (Object mock : mocks) { 25e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson InternalMockHandler<Object> handler = new MockUtil().getMockHandler(mock); 26e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson List<StubbedInvocationMatcher> fromSingleMock = handler.getInvocationContainer().getStubbedInvocations(); 27e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson for(StubbedInvocationMatcher s : fromSingleMock) { 28e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson if (!s.wasUsed()) { 29e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson unused.add(s.getInvocation()); 30e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 31e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 32e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 33e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return unused; 34e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 35e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson}