
com.annimon.stream.test.hamcrest.StreamMatcher Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of stream-test Show documentation
Show all versions of stream-test Show documentation
Hamcrest and Mockito matchers for Lightweight-Stream-API
package com.annimon.stream.test.hamcrest;
import com.annimon.stream.Collectors;
import com.annimon.stream.Stream;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
import org.hamcrest.TypeSafeDiagnosingMatcher;
import java.util.List;
import static org.hamcrest.CoreMatchers.not;
public class StreamMatcher {
private StreamMatcher() { }
public static Matcher> isEmpty() {
return new IsEmptyMatcher();
}
/**
* @deprecated Use not({@link StreamMatcher#isEmpty()}) or {@link StreamMatcher#hasElements()} instead
*/
@Deprecated
public static Matcher> isNotEmpty() {
return not(isEmpty());
}
public static Matcher> hasElements() {
return new HasElementsMatcher();
}
public static Matcher> elements(Matcher> matcher) {
return new ElementsMatcher(matcher);
}
public static class IsEmptyMatcher extends TypeSafeDiagnosingMatcher> {
@Override
protected boolean matchesSafely(Stream> stream, Description mismatchDescription) {
mismatchDescription.appendText("Stream was not empty");
return stream.count() == 0;
}
@Override
public void describeTo(Description description) {
description.appendText("an empty stream");
}
}
public static class HasElementsMatcher extends TypeSafeDiagnosingMatcher> {
@Override
protected boolean matchesSafely(Stream> stream, Description mismatchDescription) {
mismatchDescription.appendText("Stream was empty");
return stream.count() > 0;
}
@Override
public void describeTo(Description description) {
description.appendText("a non-empty stream");
}
}
public static class ElementsMatcher extends TypeSafeDiagnosingMatcher> {
private final Matcher> matcher;
private List streamElements;
public ElementsMatcher(Matcher> matcher) {
this.matcher = matcher;
}
@Override
protected boolean matchesSafely(Stream stream, Description mismatchDescription) {
final List elements;
if (streamElements == null) {
elements = stream.collect(Collectors.toList());
streamElements = elements;
} else {
elements = streamElements;
}
if (!matcher.matches(elements)) {
mismatchDescription.appendText("Stream elements ");
matcher.describeMismatch(elements, mismatchDescription);
return false;
}
return true;
}
@Override
public void describeTo(Description description) {
description.appendText("Stream elements ").appendDescriptionOf(matcher);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy