![JAR search and dependency download from the Maven repository](/logo.png)
net.amygdalum.extensions.assertj.iterables.IterableConditions Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of assertj-extensions Show documentation
Show all versions of assertj-extensions Show documentation
Assertj Extensions (advanced testing of conventions, iterables, strings, exceptions)
The newest version!
package net.amygdalum.extensions.assertj.iterables;
import static java.util.Arrays.asList;
import static java.util.stream.Collectors.toList;
import java.util.Iterator;
import java.util.List;
import java.util.stream.StreamSupport;
import org.assertj.core.api.Condition;
public final class IterableConditions {
private IterableConditions() {
}
@SafeVarargs
public static , E> Condition super T> containingExactly(Condition... requirements) {
return containingExactly(asList(requirements));
}
public static , E> Condition super T> containingExactly(Iterable> requirements) {
List requiredString = StreamSupport.stream(requirements.spliterator(), false).map(req -> req.description().value()).collect(toList());
return new Condition(actual -> {
Iterator extends E> actualIterator = actual.iterator();
Iterator> requirementsIterator = requirements.iterator();
while (actualIterator.hasNext() && requirementsIterator.hasNext()) {
Condition requirement = requirementsIterator.next();
E actualElement = actualIterator.next();
if (!requirement.matches(actualElement)) {
return false;
}
}
return !actualIterator.hasNext()
&& !requirementsIterator.hasNext();
}, "contains exactly: %s", requiredString);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy