blob: 9b3801df209a0b4f947993d50ee41996227a21e7 [file] [log] [blame]
/*
* 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());
}
}