1f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabotpackage org.hamcrest.object; 2f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabot 3f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabotimport org.hamcrest.Description; 4f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabotimport org.hamcrest.Matcher; 5f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabotimport org.hamcrest.Factory; 6f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabotimport org.hamcrest.TypeSafeMatcher; 7f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabot 8f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabotpublic class IsCompatibleType<T> extends TypeSafeMatcher<Class<?>> { 9f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabot private final Class<T> type; 10f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabot 11f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabot public IsCompatibleType(Class<T> type) { 12f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabot this.type = type; 13f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabot } 14f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabot 15f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabot public boolean matchesSafely(Class<?> cls) { 16f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabot return type.isAssignableFrom(cls); 17f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabot } 18f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabot 19f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabot public void describeTo(Description description) { 20f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabot description.appendText("type < ").appendText(type.getName()); 21f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabot } 22f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabot 23f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabot @Factory 24f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabot public static <T> Matcher<Class<?>> typeCompatibleWith(Class<T> baseType) { 25f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabot return new IsCompatibleType<T>(baseType); 26f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabot } 27f5e9a2415ec42c425c2bb17db46f2a9649992d80Brett Chabot} 28