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.invocation;
6e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
7e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.Incubating;
8e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
9e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson/**
10e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * A method call on a mock object. Contains all information and state needed for the Mockito framework to operate.
11e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * This API might be useful for developers who extend Mockito.
12e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <p>
13e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * The javadoc does not have lots of examples or documentation because its audience is different.
14e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Vast majority of users don't need to use the Invocation. It's mostly useful for other framework authors
15e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * that extend Mockito.
16e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson *
17e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.9.5
18e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */
19e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson@Incubating
20e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpublic interface Invocation extends InvocationOnMock, DescribedInvocation {
21e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
22e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
23e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * @return whether the invocation has been already verified.
24e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * Needed for {@link org.mockito.Mockito#verifyNoMoreInteractions(Object...)}
25e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
26e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    boolean isVerified();
27e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
28e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
29e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * @return the sequence number of the Invocation. Useful to determine the order of invocations.
30e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * Used by verification in order.
31e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
32e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    int getSequenceNumber();
33e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
34e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
35e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * @return the location in code of this invocation.
36e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
37e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    Location getLocation();
38e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
39e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
40e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * Returns unprocessed arguments whereas {@link #getArguments()} returns
41e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * arguments already processed (e.g. varargs expended, etc.).
42e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     *
43e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * @return unprocessed arguments, exactly as provided to this invocation.
44e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
45e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    Object[] getRawArguments();
46e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
47e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
48e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * Marks this invocation as verified so that it will not cause verification error at
49e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * {@link org.mockito.Mockito#verifyNoMoreInteractions(Object...)}
50e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
51e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    void markVerified();
52e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
53e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
54e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * @return the stubbing information for this invocation. May return null - this means
55e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * the invocation was not stubbed.
56e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
57e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    StubInfo stubInfo();
58e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
59e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
60e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * Marks this invocation as stubbed.
61e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     *
62e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * @param stubInfo the information about stubbing.
63e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
64e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    void markStubbed(StubInfo stubInfo);
65e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
66e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
67e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * Informs if the invocation participates in verify-no-more-invocations or verification in order.
68e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     *
69e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * @return whether this invocation should be ignored for the purposes of
70e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * verify-no-more-invocations or verification in order.
71e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
72e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    boolean isIgnoredForVerification();
73e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
74e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
75e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * Configures this invocation to be ignored for verify-no-more-invocations or verification in order.
76e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * See also {@link #isIgnoredForVerification()}
77e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
78e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    void ignoreForVerification();
79e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson}
80