package flow.netbeans.markdown.matchers; import java.util.Iterator; import org.hamcrest.Description; import org.hamcrest.Matcher; import org.junit.internal.matchers.TypeSafeMatcher; /** * * @author Holger */ public class EveryItem<T> extends TypeSafeMatcher<Iterable<? extends T>> { private final Matcher<T> itemMatcher; public EveryItem(Matcher<T> itemMatcher) { this.itemMatcher = itemMatcher; } @Override public boolean matchesSafely(Iterable<? extends T> item) { boolean result = true; Iterator<? extends T> iterator = item.iterator(); while (result && iterator.hasNext()) { final T element = iterator.next(); if (!itemMatcher.matches(element)) { result = false; } } return result; } @Override public void describeTo(Description description) { description.appendText("contains an element with "); description.appendDescriptionOf(itemMatcher); } }