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

de.bechte.junit.runners.validation.BooleanValidator Maven / Gradle / Ivy

Go to download

This is a runner implementation that supports context hierarchies in JUnit. For more details please visit: https://github.com/bechte/junit-hierarchicalcontextrunner/wiki

There is a newer version: 4.12.2
Show newest version
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