diff options
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.java | 21 |
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))); + } } |
