aboutsummaryrefslogtreecommitdiff
path: root/hamcrest-core/src/test/java/org/hamcrest/TypeSafeMatcherTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'hamcrest-core/src/test/java/org/hamcrest/TypeSafeMatcherTest.java')
-rw-r--r--hamcrest-core/src/test/java/org/hamcrest/TypeSafeMatcherTest.java40
1 files changed, 40 insertions, 0 deletions
diff --git a/hamcrest-core/src/test/java/org/hamcrest/TypeSafeMatcherTest.java b/hamcrest-core/src/test/java/org/hamcrest/TypeSafeMatcherTest.java
new file mode 100644
index 0000000..e23bab8
--- /dev/null
+++ b/hamcrest-core/src/test/java/org/hamcrest/TypeSafeMatcherTest.java
@@ -0,0 +1,40 @@
+package org.hamcrest;
+
+import org.junit.Test;
+
+import static org.hamcrest.AbstractMatcherTest.assertMismatchDescription;
+import static org.junit.Assert.assertFalse;
+
+public final class TypeSafeMatcherTest {
+ private final Matcher<String> matcher = new TypeSafeMatcherSubclass();
+
+ public static class TypeSafeMatcherSubclass extends TypeSafeMatcher<String> {
+ @Override
+ public boolean matchesSafely(String item) {
+ return false;
+ }
+
+ @Override
+ public void describeMismatchSafely(String item, Description mismatchDescription) {
+ mismatchDescription.appendText("The mismatch");
+ }
+
+ @Override
+ public void describeTo(Description description) {
+ }
+ }
+
+ @Test public void
+ canDetermineMatcherTypeFromProtectedMatchesSafelyMethod() {
+ assertFalse(matcher.matches(null));
+ assertFalse(matcher.matches(10));
+ }
+
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ @Test public void
+ describesMismatches() {
+ assertMismatchDescription("was null", matcher, null);
+ assertMismatchDescription("was a java.lang.Integer (<3>)", (Matcher)matcher, 3);
+ assertMismatchDescription("The mismatch", matcher, "a string");
+ }
+}