/* Copyright (c) 2000-2010 hamcrest.org */ package org.hamcrest.core; import static org.hamcrest.AbstractMatcherTest.assertDescription; import static org.hamcrest.AbstractMatcherTest.assertDoesNotMatch; import static org.hamcrest.AbstractMatcherTest.assertMatches; import static org.hamcrest.AbstractMatcherTest.assertMismatchDescription; import static org.hamcrest.AbstractMatcherTest.assertNullSafe; import static org.hamcrest.AbstractMatcherTest.assertUnknownTypeSafe; import static org.hamcrest.core.IsInstanceOf.any; import static org.hamcrest.core.IsInstanceOf.instanceOf; import org.hamcrest.Matcher; import org.junit.Test; 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; } }