| 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; |
| } |
| } |
| |