MockUtilTest.java revision 2637d96c202372854a7c71466ddcc6e90fc4fc53
1/*
2 * Copyright (c) 2007 Mockito contributors
3 * This program is made available under the terms of the MIT License.
4 */
5
6package org.mockito.internal.util;
7
8import org.assertj.core.api.Assertions;
9import org.junit.Test;
10import org.mockito.Mockito;
11import org.mockito.exceptions.base.MockitoException;
12import org.mockito.exceptions.misusing.NotAMockException;
13import org.mockito.internal.configuration.plugins.Plugins;
14import org.mockitoutil.TestBase;
15
16import java.util.ArrayList;
17import java.util.List;
18
19import static junit.framework.TestCase.*;
20import static org.mockito.Mockito.withSettings;
21
22@SuppressWarnings("unchecked")
23public class MockUtilTest extends TestBase {
24
25    @Test
26    public void should_get_handler() {
27        List<?> mock = Mockito.mock(List.class);
28        assertNotNull(MockUtil.getMockHandler(mock));
29    }
30
31    @Test (expected=NotAMockException.class)
32    public void should_scream_when_not_a_mock_passed() {
33        MockUtil.getMockHandler("");
34    }
35
36    @Test (expected=MockitoException.class)
37    public void should_scream_when_null_passed() {
38        MockUtil.getMockHandler(null);
39    }
40
41    @Test
42    public void should_get_mock_settings() {
43        List<?> mock = Mockito.mock(List.class);
44        assertNotNull(MockUtil.getMockSettings(mock));
45    }
46
47    @Test
48    public void should_validate_mock() {
49        assertFalse(MockUtil.isMock("i mock a mock"));
50        assertTrue(MockUtil.isMock(Mockito.mock(List.class)));
51    }
52
53    @Test
54    public void should_validate_spy() {
55        assertFalse(MockUtil.isSpy("i mock a mock"));
56        assertFalse(MockUtil.isSpy(Mockito.mock(List.class)));
57        assertFalse(MockUtil.isSpy(null));
58
59        assertTrue(MockUtil.isSpy(Mockito.spy(new ArrayList())));
60        assertTrue(MockUtil.isSpy(Mockito.spy(ArrayList.class)));
61        assertTrue(MockUtil.isSpy(Mockito.mock(ArrayList.class, withSettings().defaultAnswer(Mockito.CALLS_REAL_METHODS))));
62    }
63
64    @Test
65    public void should_redefine_MockName_if_default() {
66        List<?> mock = Mockito.mock(List.class);
67        MockUtil.maybeRedefineMockName(mock, "newName");
68
69        Assertions.assertThat(MockUtil.getMockName(mock).toString()).isEqualTo("newName");
70    }
71
72    @Test
73    public void should_not_redefine_MockName_if_default() {
74        List<?> mock = Mockito.mock(List.class, "original");
75        MockUtil.maybeRedefineMockName(mock, "newName");
76
77        Assertions.assertThat(MockUtil.getMockName(mock).toString()).isEqualTo("original");
78    }
79
80    final class FinalClass {}
81    class SomeClass {}
82    interface SomeInterface {}
83
84    @Test
85    public void should_know_if_type_is_mockable() throws Exception {
86        Assertions.assertThat(MockUtil.typeMockabilityOf(FinalClass.class).mockable())
87                .isEqualTo(Plugins.getMockMaker().isTypeMockable(FinalClass.class).mockable());
88
89        assertFalse(MockUtil.typeMockabilityOf(int.class).mockable());
90
91        assertTrue(MockUtil.typeMockabilityOf(SomeClass.class).mockable());
92        assertTrue(MockUtil.typeMockabilityOf(SomeInterface.class).mockable());
93    }
94}
95