• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2007 Mockito contributors
3  * This program is made available under the terms of the MIT License.
4  */
5 
6 package org.mockito.internal.util;
7 
8 import org.assertj.core.api.Assertions;
9 import org.junit.Test;
10 import org.mockito.Mockito;
11 import org.mockito.exceptions.base.MockitoException;
12 import org.mockito.exceptions.misusing.NotAMockException;
13 import org.mockito.internal.configuration.plugins.Plugins;
14 import org.mockitoutil.TestBase;
15 
16 import java.util.ArrayList;
17 import java.util.List;
18 
19 import static org.junit.Assert.*;
20 import static org.mockito.Mockito.withSettings;
21 
22 @SuppressWarnings("unchecked")
23 public class MockUtilTest extends TestBase {
24 
25     @Test
should_get_handler()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)
should_scream_when_not_a_mock_passed()32     public void should_scream_when_not_a_mock_passed() {
33         MockUtil.getMockHandler("");
34     }
35 
36     @Test (expected=MockitoException.class)
should_scream_when_null_passed()37     public void should_scream_when_null_passed() {
38         MockUtil.getMockHandler(null);
39     }
40 
41     @Test
should_get_mock_settings()42     public void should_get_mock_settings() {
43         List<?> mock = Mockito.mock(List.class);
44         assertNotNull(MockUtil.getMockSettings(mock));
45     }
46 
47     @Test
should_validate_mock()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
should_validate_spy()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
should_redefine_MockName_if_default()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
should_not_redefine_MockName_if_default()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
should_know_if_type_is_mockable()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