package org.test4j.hamcrest.matcher.clazz;
import ext.test4j.hamcrest.BaseMatcher;
import ext.test4j.hamcrest.Description;
@SuppressWarnings("rawtypes")
public class ClassAssignFromMatcher extends BaseMatcher {
private Class wanted;
public ClassAssignFromMatcher(Class wanted) {
this.wanted = wanted;
}
private Class actual = null;
@SuppressWarnings("unchecked")
public boolean matches(Object item) {
if( item == null) {
return true;
}
if (item instanceof Class) {
actual = (Class) item;
} else {
actual = item.getClass();
}
if (actual == null || wanted == null) {
return false;
}
return wanted.isAssignableFrom(actual);
}
public void describeTo(Description description) {
description.appendText(String.format("the class[%s] isn't assignable from class[%s]", actual == null ? "<null>"
: actual.getName(), wanted == null ? "<null>" : wanted.getName()));
}
}