aboutsummaryrefslogtreecommitdiff
path: root/hamcrest-library/src/main/java/org/hamcrest/object/IsCompatibleType.java
diff options
context:
space:
mode:
Diffstat (limited to 'hamcrest-library/src/main/java/org/hamcrest/object/IsCompatibleType.java')
-rw-r--r--hamcrest-library/src/main/java/org/hamcrest/object/IsCompatibleType.java27
1 files changed, 27 insertions, 0 deletions
diff --git a/hamcrest-library/src/main/java/org/hamcrest/object/IsCompatibleType.java b/hamcrest-library/src/main/java/org/hamcrest/object/IsCompatibleType.java
new file mode 100644
index 0000000..3a2dc7a
--- /dev/null
+++ b/hamcrest-library/src/main/java/org/hamcrest/object/IsCompatibleType.java
@@ -0,0 +1,27 @@
+package org.hamcrest.object;
+
+import org.hamcrest.Description;
+import org.hamcrest.Matcher;
+import org.hamcrest.Factory;
+import org.hamcrest.TypeSafeMatcher;
+
+public class IsCompatibleType<T> extends TypeSafeMatcher<Class<?>> {
+ private final Class<T> type;
+
+ public IsCompatibleType(Class<T> type) {
+ this.type = type;
+ }
+
+ public boolean matchesSafely(Class<?> cls) {
+ return type.isAssignableFrom(cls);
+ }
+
+ public void describeTo(Description description) {
+ description.appendText("type < ").appendText(type.getName());
+ }
+
+ @Factory
+ public static <T> Matcher<Class<?>> typeCompatibleWith(Class<T> baseType) {
+ return new IsCompatibleType<T>(baseType);
+ }
+}