package org.concordion;
import java.io.IOException;
import org.concordion.api.EvaluatorFactory;
import org.concordion.api.Resource;
import org.concordion.api.ResultSummary;
import org.concordion.api.Specification;
import org.concordion.api.SpecificationLocator;
import org.concordion.api.SpecificationReader;
import org.concordion.internal.SummarizingResultRecorder;
public class Concordion {
private final SpecificationLocator specificationLocator;
private final EvaluatorFactory evaluatorFactory;
private final SpecificationReader specificationReader;
public Concordion(SpecificationLocator specificationLocator, SpecificationReader specificationReader, EvaluatorFactory evaluatorFactory) {
this.specificationLocator = specificationLocator;
this.specificationReader = specificationReader;
this.evaluatorFactory = evaluatorFactory;
}
public ResultSummary process(Object fixture) throws IOException {
return process(specificationLocator.locateSpecification(fixture), fixture);
}
public ResultSummary process(Resource resource, Object fixture) throws IOException {
Specification specification = specificationReader.readSpecification(resource);
SummarizingResultRecorder resultRecorder = new SummarizingResultRecorder();
specification.process(evaluatorFactory.createEvaluator(fixture), resultRecorder);
return resultRecorder;
}
}