blob: 8432fdb56ffc92468179ad92e20727e5429e4570 [file] [log] [blame]
package org.hamcrest.object;
import org.hamcrest.AbstractMatcherTest;
import org.hamcrest.Matcher;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.object.IsCompatibleType.typeCompatibleWith;
public class IsCompatibleTypeTest extends AbstractMatcherTest {
public static class BaseClass {
}
public static class ExtendedClass extends BaseClass {
}
public interface BaseInterface {
}
public interface ExtendedInterface extends BaseInterface {
}
public static class ClassImplementingBaseInterface implements BaseInterface {
}
@Override
protected Matcher<?> createMatcher() {
return typeCompatibleWith(BaseClass.class);
}
public void testMatchesSameClass() {
assertThat(BaseClass.class, typeCompatibleWith(BaseClass.class));
}
public void testMatchesSameInterface() {
assertThat(BaseInterface.class, typeCompatibleWith(BaseInterface.class));
}
public void testMatchesExtendedClass() {
assertThat(ExtendedClass.class, typeCompatibleWith(BaseClass.class));
}
public void testMatchesClassImplementingInterface() {
assertThat(ClassImplementingBaseInterface.class, typeCompatibleWith(BaseInterface.class));
}
public void testMatchesExtendedInterface() {
assertThat(ExtendedInterface.class, typeCompatibleWith(BaseInterface.class));
}
// public void testDoesNotMatchIncompatibleTypes() {
// assertThat(BaseClass.class, not(compatibleType(ExtendedClass.class)));
// assertThat(Integer.class, not(compatibleType(String.class)));
// }
public void testHasReadableDescription() {
assertDescription("type < java.lang.Runnable", typeCompatibleWith(Runnable.class));
}
}