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.mock;
7e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
8e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.Incubating;
9e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.listeners.InvocationListener;
10e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.stubbing.Answer;
11e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
12e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport java.util.List;
13e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport java.util.Set;
14e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
15e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson/**
16e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Informs about the mock settings. An immutable view of {@link org.mockito.MockSettings}.
17e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */
18e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson@Incubating
19e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpublic interface MockCreationSettings<T> {
20e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
21e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
22e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * Mocked type. An interface or class the mock should implement / extend.
23e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
24e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    Class<T> getTypeToMock();
25e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
26e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
27e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * the extra interfaces the mock object should implement.
28e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
29e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    Set<Class> getExtraInterfaces();
30e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
31e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
32e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * the name of this mock, as printed on verification errors; see {@link org.mockito.MockSettings#name}.
33e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
34e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    MockName getMockName();
35e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
36e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
37e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * the default answer for this mock, see {@link org.mockito.MockSettings#defaultAnswer}.
38e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
39e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    Answer getDefaultAnswer();
40e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
41e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
42e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * the spied instance - needed for spies.
43e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
44e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    Object getSpiedInstance();
45e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
46e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
47e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * if the mock is serializable, see {@link org.mockito.MockSettings#serializable}.
48e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
49e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    boolean isSerializable();
50e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
51e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
52e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * Whether the mock is only for stubbing, i.e. does not remember
53e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * parameters on its invocation and therefore cannot
54e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * be used for verification
55e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
56e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    boolean isStubOnly();
57e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
58e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
59e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * the invocation listeners attached to this mock, see {@link org.mockito.MockSettings#invocationListeners}.
60e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
61e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    List<InvocationListener> getInvocationListeners();
62e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson}