aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/junit/internal/matchers/IsCollectionContaining.java
diff options
context:
space:
mode:
authorPaul Duffin <paulduffin@google.com>2016-12-14 12:42:07 +0000
committerPaul Duffin <paulduffin@google.com>2016-12-20 15:52:52 +0000
commit86f323b2a73c9c250fbe25b828435aa936704ab3 (patch)
tree5e35bd76d6575654fdba8c7d6d64c11e55327755 /src/main/java/org/junit/internal/matchers/IsCollectionContaining.java
parent4156f43b51c6f2d42df6e45535e1967aa46514d3 (diff)
downloadjunit-86f323b2a73c9c250fbe25b828435aa936704ab3.tar.gz
Revert matchers back to 4.10 to compile against Hamcrest 1.1
JUnit 4.12 is supposed to be built against Hamcrest 1.3 or above but external/hamcrest is still at 1.1. This reverts affected files back to their 4.10 version so that they will compile against Hamcrest 1.1 for now. Bug: 33613916 Test: make checkbuild Change-Id: Ie3c15047aa5a942ed0987c31c345725bef4db3d4
Diffstat (limited to 'src/main/java/org/junit/internal/matchers/IsCollectionContaining.java')
-rw-r--r--src/main/java/org/junit/internal/matchers/IsCollectionContaining.java67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/main/java/org/junit/internal/matchers/IsCollectionContaining.java b/src/main/java/org/junit/internal/matchers/IsCollectionContaining.java
new file mode 100644
index 0000000..4436a83
--- /dev/null
+++ b/src/main/java/org/junit/internal/matchers/IsCollectionContaining.java
@@ -0,0 +1,67 @@
+package org.junit.internal.matchers;
+
+import static org.hamcrest.core.AllOf.allOf;
+import static org.hamcrest.core.IsEqual.equalTo;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.hamcrest.Description;
+import org.hamcrest.Factory;
+import org.hamcrest.Matcher;
+
+// Copied (hopefully temporarily) from hamcrest-library
+public class IsCollectionContaining<T> extends TypeSafeMatcher<Iterable<T>> {
+ private final Matcher<? extends T> elementMatcher;
+
+ public IsCollectionContaining(Matcher<? extends T> elementMatcher) {
+ this.elementMatcher = elementMatcher;
+ }
+
+ @Override
+ public boolean matchesSafely(Iterable<T> collection) {
+ for (T item : collection) {
+ if (elementMatcher.matches(item)){
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public void describeTo(Description description) {
+ description
+ .appendText("a collection containing ")
+ .appendDescriptionOf(elementMatcher);
+ }
+
+ @Factory
+ public static <T> Matcher<Iterable<T>> hasItem(Matcher<? extends T> elementMatcher) {
+ return new IsCollectionContaining<T>(elementMatcher);
+ }
+
+ @Factory
+ public static <T> Matcher<Iterable<T>> hasItem(T element) {
+ return hasItem(equalTo(element));
+ }
+
+ @Factory
+ public static <T> Matcher<Iterable<T>> hasItems(Matcher<? extends T>... elementMatchers) {
+ Collection<Matcher<? extends Iterable<T>>> all
+ = new ArrayList<Matcher<? extends Iterable<T>>>(elementMatchers.length);
+ for (Matcher<? extends T> elementMatcher : elementMatchers) {
+ all.add(hasItem(elementMatcher));
+ }
+ return allOf(all);
+ }
+
+ @Factory
+ public static <T> Matcher<Iterable<T>> hasItems(T... elements) {
+ Collection<Matcher<? extends Iterable<T>>> all
+ = new ArrayList<Matcher<? extends Iterable<T>>>(elements.length);
+ for (T element : elements) {
+ all.add(hasItem(element));
+ }
+ return allOf(all);
+ }
+
+}