All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.amygdalum.extensions.assertj.iterables.IterableConditions Maven / Gradle / Ivy

Go to download

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 containingExactly(Condition... requirements) {
		return containingExactly(asList(requirements));
	}

	public static , E> Condition containingExactly(Iterable> requirements) {
		List requiredString = StreamSupport.stream(requirements.spliterator(), false).map(req -> req.description().value()).collect(toList());
		return new Condition(actual -> {
			Iterator 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