
net.amygdalum.extensions.assertj.iterables.ArrayConditions Maven / Gradle / Ivy
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 ArrayConditions {
private ArrayConditions() {
}
@SafeVarargs
public static Condition containingExactly(Condition... requirements) {
return containingExactly(asList(requirements));
}
public static Condition containingExactly(Iterable> requirements) {
List requiredString = StreamSupport.stream(requirements.spliterator(), false).map(Object::toString).collect(toList());
return new Condition(actual -> {
Iterator actualIterator = asList(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