package com.tngtech.archunit.testutil;
import com.tngtech.archunit.core.domain.JavaCodeUnit;
import org.assertj.core.api.Condition;
import static com.tngtech.archunit.core.domain.JavaClass.namesOf;
public final class Conditions {
private Conditions() {}
public static <T> Condition<Iterable<? extends T>> containing(final Condition<T> condition) {
return new Condition<Iterable<? extends T>>() {
@Override
public boolean matches(Iterable<? extends T> value) {
boolean contains = false;
for (T t : value) {
contains = contains || condition.matches(t);
}
return contains;
}
}.as("containing an element that " + condition.description());
}
public static Condition<JavaCodeUnit> codeUnitWithSignature(final String name, final Class<?>... parameters) {
return new Condition<JavaCodeUnit>() {
@Override
public boolean matches(JavaCodeUnit value) {
return name.equals(value.getName()) && namesOf(parameters).equals(value.getParameters().getNames());
}
}.as("matches signature <" + name + ", " + namesOf(parameters) + ">");
}
}