blob: 8dd85af1c6d3e997d35496b4eea71183c429773b [file] [log] [blame]
package org.hamcrest.core;
import org.hamcrest.Matcher;
import org.junit.Test;
import static org.hamcrest.AbstractMatcherTest.*;
import static org.hamcrest.core.IsInstanceOf.any;
import static org.hamcrest.core.IsInstanceOf.instanceOf;
public final class IsInstanceOfTest {
@Test public void
copesWithNullsAndUnknownTypes() {
Matcher<?> matcher = instanceOf(Number.class);
assertNullSafe(matcher);
assertUnknownTypeSafe(matcher);
}
@Test public void
evaluatesToTrueIfArgumentIsInstanceOfASpecificClass() {
final Matcher<Object> matcher = instanceOf(Number.class);
assertMatches(matcher, 1);
assertMatches(matcher, 1.1);
assertDoesNotMatch(matcher, null);
assertDoesNotMatch(matcher, new Object());
}
@Test public void
hasAReadableDescription() {
assertDescription("an instance of java.lang.Number", instanceOf(Number.class));
}
@Test public void
describesActualClassInMismatchMessage() {
assertMismatchDescription("\"some text\" is a java.lang.String", instanceOf(Number.class), "some text");
}
@Test public void
matchesPrimitiveTypes() {
assertMatches(any(boolean.class), true);
assertMatches(any(byte.class), (byte)1);
assertMatches(any(char.class), 'x');
assertMatches(any(double.class), 5.0);
assertMatches(any(float.class), 5.0f);
assertMatches(any(int.class), 2);
assertMatches(any(long.class), 4L);
assertMatches(any(short.class), (short)1);
}
@Test public void
instanceOfRequiresACastToReturnTheCorrectTypeForUseInJMock() {
@SuppressWarnings("unused")
Integer anInteger = (Integer)with(instanceOf(Integer.class));
}
@Test public void
anyWillReturnTheCorrectTypeForUseInJMock() {
@SuppressWarnings("unused")
Integer anInteger = with(any(Integer.class));
}
private static <T> T with(@SuppressWarnings("unused") Matcher<T> matcher) {
return null;
}
}