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.InvocationMatcher;
11e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.internal.stubbing.InvocationContainer;
12e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.internal.util.ObjectMethodsGuru;
13e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.internal.verification.api.VerificationData;
14e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.invocation.Invocation;
15e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
16e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpublic class VerificationDataImpl implements VerificationData {
17e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
18e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    private final InvocationMatcher wanted;
19e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    private final InvocationContainer invocations;
20e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
21e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    public VerificationDataImpl(InvocationContainer invocations, InvocationMatcher wanted) {
22e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        this.invocations = invocations;
23e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        this.wanted = wanted;
24e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        this.assertWantedIsVerifiable();
25e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    }
26e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
27e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    public List<Invocation> getAllInvocations() {
28e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        return invocations.getInvocations();
29e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    }
30e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
31e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    public InvocationMatcher getWanted() {
32e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        return wanted;
33e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    }
34e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
35e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    void assertWantedIsVerifiable() {
36e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        if (wanted == null) {
37e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson            return;
38e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        }
39e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        ObjectMethodsGuru o = new ObjectMethodsGuru();
40e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        if (o.isToString(wanted.getMethod())) {
41e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson            new Reporter().cannotVerifyToString();
42e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        }
43e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    }
44e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson}