diff options
author | Paul Duffin <paulduffin@google.com> | 2016-12-14 12:42:07 +0000 |
---|---|---|
committer | Paul Duffin <paulduffin@google.com> | 2016-12-20 15:52:52 +0000 |
commit | 86f323b2a73c9c250fbe25b828435aa936704ab3 (patch) | |
tree | 5e35bd76d6575654fdba8c7d6d64c11e55327755 /src/main/java/org/junit/internal/matchers/IsCollectionContaining.java | |
parent | 4156f43b51c6f2d42df6e45535e1967aa46514d3 (diff) | |
download | junit-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.java | 67 |
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); + } + +} |