
de.bechte.junit.runners.validation.BooleanValidator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of junit-hierarchicalcontextrunner Show documentation
Show all versions of junit-hierarchicalcontextrunner Show documentation
This is a runner implementation that supports context hierarchies in JUnit. For more
details please visit: https://github.com/bechte/junit-hierarchicalcontextrunner/wiki
package de.bechte.junit.runners.validation;
import org.junit.runners.model.TestClass;
import java.util.ArrayList;
import java.util.List;
/**
* The {@link BooleanValidator}s allow to group {@link TestClassValidator}s with boolean algebra. All violations are
* reported in the {@link List} of errors.
*/
public abstract class BooleanValidator implements TestClassValidator {
public static BooleanValidator AND(final TestClassValidator... validators) {
return new AndValidator(validators);
}
public static BooleanValidator OR(final TestClassValidator... validators) {
return new OrValidator(validators);
}
protected final TestClassValidator[] validators;
private BooleanValidator(final TestClassValidator[] validators) {
this.validators = validators == null ? new TestClassValidator[0] : validators;
}
private static class AndValidator extends BooleanValidator {
public AndValidator(TestClassValidator[] validators) {
super(validators);
}
public void validate(final TestClass testClass, final List errors) {
for (final TestClassValidator validator : validators)
validator.validate(testClass, errors);
}
}
private static class OrValidator extends BooleanValidator {
public OrValidator(final TestClassValidator[] validators) {
super(validators);
}
public void validate(final TestClass testClass, final List errors) {
final List tempErrors = new ArrayList();
final List currentErrors = new ArrayList();
for (final TestClassValidator validator : validators) {
currentErrors.clear();
validator.validate(testClass, currentErrors);
if (!currentErrors.isEmpty()) {
tempErrors.addAll(currentErrors);
} else {
tempErrors.clear();
break;
}
}
errors.addAll(tempErrors);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy