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;
6e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
7e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.internal.stubbing.answers.CallsRealMethods;
8e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.internal.stubbing.defaultanswers.GloballyConfiguredAnswer;
9e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.internal.stubbing.defaultanswers.ReturnsDeepStubs;
10e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.internal.stubbing.defaultanswers.ReturnsMocks;
11e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.internal.stubbing.defaultanswers.ReturnsSmartNulls;
12e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.stubbing.Answer;
13e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
14e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson/**
15e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Enumeration of pre-configured mock answers
16e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <p>
17e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * You can use it to pass extra parameters to &#064;Mock annotation, see more info here: {@link Mock}
18e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <p>
19e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Example:
20e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <pre class="code"><code class="java">
21e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson *   &#064;Mock(answer = RETURNS_DEEP_STUBS) UserProvider userProvider;
22e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * </code></pre>
23e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <b>This is not the full list</b> of Answers available in Mockito. Some interesting answers can be found in org.mockito.stubbing.answers package.
24e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */
25e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpublic enum Answers {
26e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
27e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
28e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * The default configured answer of every mock.
29e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     *
30e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * <p>Please see the {@link org.mockito.Mockito#RETURNS_DEFAULTS} documentation for more details.</p>
31e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     *
32e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * @see org.mockito.Mockito#RETURNS_DEFAULTS
33e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
34e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    RETURNS_DEFAULTS(new GloballyConfiguredAnswer()),
35e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
36e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
37e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * An answer that returns smart-nulls.
38e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     *
39e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * <p>Please see the {@link org.mockito.Mockito#RETURNS_SMART_NULLS} documentation for more details.</p>
40e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     *
41e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * @see org.mockito.Mockito#RETURNS_SMART_NULLS
42e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
43e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    RETURNS_SMART_NULLS(new ReturnsSmartNulls()),
44e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
45e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
46e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * An answer that returns <strong>mocks</strong> (not stubs).
47e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     *
48e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * <p>Please see the {@link org.mockito.Mockito#RETURNS_MOCKS} documentation for more details.</p>
49e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     *
50e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * @see org.mockito.Mockito#RETURNS_MOCKS
51e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
52e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    RETURNS_MOCKS(new ReturnsMocks()),
53e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
54e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
55e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
56e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * An answer that returns <strong>deep stubs</strong> (not mocks).
57e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     *
58e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * <p>Please see the {@link org.mockito.Mockito#RETURNS_DEEP_STUBS} documentation for more details.</p>
59e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     *
60e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * @see org.mockito.Mockito#RETURNS_DEEP_STUBS
61e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
62e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    RETURNS_DEEP_STUBS(new ReturnsDeepStubs()),
63e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
64e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
65e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * An answer that calls the real methods (used for partial mocks).
66e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     *
67e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * <p>Please see the {@link org.mockito.Mockito#CALLS_REAL_METHODS} documentation for more details.</p>
68e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     *
69e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * @see org.mockito.Mockito#CALLS_REAL_METHODS
70e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
71e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    CALLS_REAL_METHODS(new CallsRealMethods())
72e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    ;
73e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
74e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    private Answer<Object> implementation;
75e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
76e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    private Answers(Answer<Object> implementation) {
77e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        this.implementation = implementation;
78e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    }
79e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
80e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    public Answer<Object> get() {
81e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        return implementation;
82e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    }
83e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson}