aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/zwobble/couscous/tests/util/ExtraMatchers.java
diff options
context:
space:
mode:
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.java21
1 files changed, 17 insertions, 4 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 d79cb05..074e449 100644
--- a/src/test/java/org/zwobble/couscous/tests/util/ExtraMatchers.java
+++ b/src/test/java/org/zwobble/couscous/tests/util/ExtraMatchers.java
@@ -1,12 +1,13 @@
package org.zwobble.couscous.tests.util;
-import org.hamcrest.Description;
-import org.hamcrest.DiagnosingMatcher;
-import org.hamcrest.FeatureMatcher;
-import org.hamcrest.Matcher;
+import org.hamcrest.*;
+import java.util.List;
import java.util.function.Function;
+import static org.hamcrest.Matchers.equalTo;
+import static org.zwobble.couscous.util.ExtraLists.eagerMap;
+
public class ExtraMatchers {
public static <T, U> Matcher<T> isInstance(Class<U> type, Matcher<? super U> downcastMatcher) {
return new DiagnosingMatcher<T>() {
@@ -51,4 +52,16 @@ public class ExtraMatchers {
}
};
}
+
+ public static <T> Matcher<Iterable<? extends T>> containsExactly(List<Matcher<? super T>> matchers) {
+ if (matchers.isEmpty()) {
+ return Matchers.emptyIterable();
+ } else {
+ return Matchers.contains(matchers);
+ }
+ }
+
+ public static <T> Matcher<Iterable<? extends T>> containsExactElements(List<T> values) {
+ return containsExactly(eagerMap(values, value -> equalTo(value)));
+ }
}