//Dstl (c) Crown Copyright 2017
package uk.gov.dstl.baleen.annotators.testing;
import org.apache.uima.analysis_engine.AnalysisEngine;
import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
import org.apache.uima.fit.factory.AnalysisEngineFactory;
import org.apache.uima.jcas.JCas;
import org.apache.uima.jcas.tcas.DocumentAnnotation;
import org.apache.uima.resource.ResourceInitializationException;
import uk.gov.dstl.baleen.uima.BaleenAnnotator;
import uk.gov.dstl.baleen.uima.utils.TypeSystemSingleton;
/** A base type for single annotator testing, with helper functions.
*
* Similar in nature to {@link AnnotatorTestBase} but assumes testing a single annotator.
*
*
*
*/
public class AbstractAnnotatorTest extends AnnotatorTestBase {
private Class<? extends BaleenAnnotator> annotatorClass;
/** New instance, which will test the supplied annotator class.
* @param annotatorClass
*/
public AbstractAnnotatorTest(Class<? extends BaleenAnnotator> annotatorClass) {
this.annotatorClass = annotatorClass;
}
/** Get an analysis engine for the
* @return
* @throws ResourceInitializationException
*/
protected AnalysisEngine getAnalysisEngine() throws ResourceInitializationException {
return AnalysisEngineFactory.createEngine(annotatorClass, TypeSystemSingleton.getTypeSystemDescriptionInstance());
}
/** Get an analysis engine for the
* @param args name-value pairs
* @return
* @throws ResourceInitializationException
*/
protected AnalysisEngine getAnalysisEngine(Object... args) throws ResourceInitializationException {
return AnalysisEngineFactory.createEngine(annotatorClass, TypeSystemSingleton.getTypeSystemDescriptionInstance(), args);
}
/** process the {@link AnnotatorTestBase}'s jCas with the annotator.
* @throws ResourceInitializationException
* @throws AnalysisEngineProcessException
*/
protected void processJCas() throws ResourceInitializationException, AnalysisEngineProcessException {
AnalysisEngine analysisEngine = getAnalysisEngine();
analysisEngine.process(jCas);
analysisEngine.destroy();
}
/** process the {@link AnnotatorTestBase}'s jCas with the annotator (configured with the args provided).
* @param args name-value pairs
* @throws ResourceInitializationException
* @throws AnalysisEngineProcessException
*/
protected void processJCas(Object... args) throws ResourceInitializationException, AnalysisEngineProcessException {
AnalysisEngine analysisEngine = getAnalysisEngine(args);
analysisEngine.process(jCas);
analysisEngine.destroy();
}
/** Get the document annotation from the default jCas.
* @return documentation annotation
*/
protected DocumentAnnotation getDocumentAnnotation() {
return getDocumentAnnotation(jCas);
}
/** Get the document annotation from a jCas.
* @param jCas
* @return documentation annotation
*/
protected DocumentAnnotation getDocumentAnnotation(JCas jCas) {
return (DocumentAnnotation) jCas.getDocumentAnnotationFs();
}
}