/* * Copyright (c) 2007 Mockito contributors * This program is made available under the terms of the MIT License. */ package org.mockito.internal.util; import org.assertj.core.api.Assertions; import org.junit.Test; import org.mockito.Mockito; import org.mockito.exceptions.base.MockitoException; import org.mockito.exceptions.misusing.NotAMockException; import org.mockito.internal.configuration.plugins.Plugins; import org.mockitoutil.TestBase; import java.util.ArrayList; import java.util.List; import static junit.framework.TestCase.*; import static org.mockito.Mockito.withSettings; @SuppressWarnings("unchecked") public class MockUtilTest extends TestBase { @Test public void should_get_handler() { List<?> mock = Mockito.mock(List.class); assertNotNull(MockUtil.getMockHandler(mock)); } @Test (expected=NotAMockException.class) public void should_scream_when_not_a_mock_passed() { MockUtil.getMockHandler(""); } @Test (expected=MockitoException.class) public void should_scream_when_null_passed() { MockUtil.getMockHandler(null); } @Test public void should_get_mock_settings() { List<?> mock = Mockito.mock(List.class); assertNotNull(MockUtil.getMockSettings(mock)); } @Test public void should_validate_mock() { assertFalse(MockUtil.isMock("i mock a mock")); assertTrue(MockUtil.isMock(Mockito.mock(List.class))); } @Test public void should_validate_spy() { assertFalse(MockUtil.isSpy("i mock a mock")); assertFalse(MockUtil.isSpy(Mockito.mock(List.class))); assertFalse(MockUtil.isSpy(null)); assertTrue(MockUtil.isSpy(Mockito.spy(new ArrayList()))); assertTrue(MockUtil.isSpy(Mockito.spy(ArrayList.class))); assertTrue(MockUtil.isSpy(Mockito.mock(ArrayList.class, withSettings().defaultAnswer(Mockito.CALLS_REAL_METHODS)))); } @Test public void should_redefine_MockName_if_default() { List<?> mock = Mockito.mock(List.class); MockUtil.maybeRedefineMockName(mock, "newName"); Assertions.assertThat(MockUtil.getMockName(mock).toString()).isEqualTo("newName"); } @Test public void should_not_redefine_MockName_if_default() { List<?> mock = Mockito.mock(List.class, "original"); MockUtil.maybeRedefineMockName(mock, "newName"); Assertions.assertThat(MockUtil.getMockName(mock).toString()).isEqualTo("original"); } final class FinalClass {} class SomeClass {} interface SomeInterface {} @Test public void should_know_if_type_is_mockable() throws Exception { Assertions.assertThat(MockUtil.typeMockabilityOf(FinalClass.class).mockable()) .isEqualTo(Plugins.getMockMaker().isTypeMockable(FinalClass.class).mockable()); assertFalse(MockUtil.typeMockabilityOf(int.class).mockable()); assertTrue(MockUtil.typeMockabilityOf(SomeClass.class).mockable()); assertTrue(MockUtil.typeMockabilityOf(SomeInterface.class).mockable()); } }