aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/zwobble/couscous/tests/util/ExtraMatchers.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-03-31 11:44:39 +0100
committerMichael Williamson <mike@zwobble.org>2016-03-31 11:44:39 +0100
commit3368f70469871921c12df73273c9a3a06709e4ed (patch)
tree3d46a225a4b822ef450860c0919517997d5bdd9c /src/test/java/org/zwobble/couscous/tests/util/ExtraMatchers.java
parent04c3c57ca6b0f7e2985425d07faa9a72bc1817fa (diff)
Move hasFeature to ExtraMatchers
Diffstat (limited to 'src/test/java/org/zwobble/couscous/tests/util/ExtraMatchers.java')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/util/ExtraMatchers.java15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/util/ExtraMatchers.java b/src/test/java/org/zwobble/couscous/tests/util/ExtraMatchers.java
index 3107d53..d79cb05 100644
--- a/src/test/java/org/zwobble/couscous/tests/util/ExtraMatchers.java
+++ b/src/test/java/org/zwobble/couscous/tests/util/ExtraMatchers.java
@@ -2,8 +2,11 @@ package org.zwobble.couscous.tests.util;
import org.hamcrest.Description;
import org.hamcrest.DiagnosingMatcher;
+import org.hamcrest.FeatureMatcher;
import org.hamcrest.Matcher;
+import java.util.function.Function;
+
public class ExtraMatchers {
public static <T, U> Matcher<T> isInstance(Class<U> type, Matcher<? super U> downcastMatcher) {
return new DiagnosingMatcher<T>() {
@@ -36,4 +39,16 @@ public class ExtraMatchers {
}
};
}
+
+ public static <T, U> Matcher<T> hasFeature(
+ String name,
+ Function<? super T, U> extract,
+ Matcher<? super U> subMatcher) {
+ return new FeatureMatcher<T, U>(subMatcher, name, name) {
+ @Override
+ protected U featureValueOf(T actual) {
+ return extract.apply(actual);
+ }
+ };
+ }
}