package org.mockito.internal.matchers;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
public class InstanceOfTest {
@Test
public void should_describe_the_matcher() {
assertThat(new InstanceOf(Object.class).toString()).contains("isA")
.contains("Object");
assertThat(new InstanceOf(Object[].class).toString()).contains("isA")
.contains("Object[]");
assertThat(new InstanceOf(Object.class, "matches something").toString()).isEqualTo("matches something");
}
@Test
public void should_check_instance_type() {
assertThat(new InstanceOf(Object.class).matches(new Object())).isTrue();
assertThat(new InstanceOf(Object.class).matches(new ArrayList())).isTrue();
assertThat(new InstanceOf(List.class).matches(new ArrayList())).isTrue();
assertThat(new InstanceOf(List.class).matches(new Object())).isFalse();
}
@Test
public void should_check_for_primitive_wrapper_types() {
assertThat(new InstanceOf(int.class).matches(1000)).isTrue();
assertThat(new InstanceOf(Integer.class).matches(1000)).isTrue();
assertThat(new InstanceOf(int.class).matches(new Integer(1000))).isTrue();
assertThat(new InstanceOf(Integer.class).matches(new Integer(1000))).isTrue();
assertThat(new InstanceOf(double.class).matches(1000.1)).isTrue();
assertThat(new InstanceOf(Double.class).matches(1000.1)).isTrue();
assertThat(new InstanceOf(double.class).matches(new Double(1000.1))).isTrue();
assertThat(new InstanceOf(Double.class).matches(new Double(1000.1))).isTrue();
assertThat(new InstanceOf(int.class).matches(1000L)).isFalse();
assertThat(new InstanceOf(Integer.class).matches(1000L)).isFalse();
assertThat(new InstanceOf(int.class).matches(new Long(1000))).isFalse();
assertThat(new InstanceOf(Integer.class).matches(new Long(1000))).isFalse();
assertThat(new InstanceOf(long.class).matches(1000L)).isTrue();
assertThat(new InstanceOf(Long.class).matches(1000L)).isTrue();
assertThat(new InstanceOf(long.class).matches(new Long(1000))).isTrue();
assertThat(new InstanceOf(Long.class).matches(new Long(1000))).isTrue();
assertThat(new InstanceOf(long.class).matches(1000)).isFalse();
assertThat(new InstanceOf(Long.class).matches(1000)).isFalse();
assertThat(new InstanceOf(long.class).matches(new Integer(1000))).isFalse();
assertThat(new InstanceOf(Long.class).matches(new Integer(1000))).isFalse();
}
@Test
public void can_be_vararg_aware() {
assertThat(new InstanceOf.VarArgAware(Number[].class)).isInstanceOf(VarargMatcher.class);
assertThat(new InstanceOf.VarArgAware(Number[].class).matches(new Integer[0])).isTrue();
assertThat(new InstanceOf.VarArgAware(Number[].class).matches(new Number[0])).isTrue();
assertThat(new InstanceOf.VarArgAware(Number[].class).matches(new Object[0])).isFalse();
}
}