/*
* Copyright (c) 2007 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockito.internal.util;
import org.junit.Test;
import org.mockito.exceptions.base.MockitoException;
import org.mockitousage.IMethods;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import static java.util.Arrays.asList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.fail;
@SuppressWarnings("unchecked")
public class MockCreationValidatorTest {
MockCreationValidator validator = new MockCreationValidator();
@Test
public void should_not_allow_extra_interface_that_is_the_same_as_the_mocked_type() throws Exception {
try {
//when
validator.validateExtraInterfaces(IMethods.class, (Collection) asList(IMethods.class));
fail();
} catch (MockitoException e) {
//then
assertThat(e.getMessage()).contains("You mocked following type: IMethods");
}
}
@Test(expected = MockitoException.class)
public void should_not_allow_inconsistent_types() throws Exception {
//when
validator.validateMockedType(List.class, new ArrayList());
//then
}
@Test
public void should_allow_only_consistent_types() throws Exception {
//when
validator.validateMockedType(ArrayList.class, new ArrayList());
//then no exception is thrown
}
@Test
public void should_validation_be_safe_when_nulls_passed() throws Exception {
//when
validator.validateMockedType(null, new ArrayList());
//or
validator.validateMockedType(ArrayList.class, null);
//then no exception is thrown
}
@Test
public void should_fail_when_type_not_mockable() throws Exception {
try {
validator.validateType(long.class);
} catch (MockitoException ex) {
assertThat(ex.getMessage()).contains("primitive");
}
}
}