//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.annotators.testing; import static org.junit.Assert.assertEquals; import org.apache.uima.UIMAException; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; import org.apache.uima.fit.util.JCasUtil; import org.apache.uima.jcas.JCas; import org.apache.uima.jcas.tcas.Annotation; import org.apache.uima.jcas.tcas.DocumentAnnotation; import org.apache.uima.resource.ResourceInitializationException; import org.junit.Before; import uk.gov.dstl.baleen.uima.testing.JCasSingleton; /** * */ public class AnnotatorTestBase { protected JCas jCas; @Before public void beforeTest() throws UIMAException { jCas = JCasSingleton.getJCasInstance(); } /** * Process the {@link AnnotatorTestBase} jCas object looking for supplied annotations. * * You must call processJcas (or equivalent first). * * @param size * total number of annotations to expect of this type * @param annotationClass * the annotation class to look for * @param annotations * (a subset of) annotations to test * @throws AnalysisEngineProcessException * @throws ResourceInitializationException */ @SafeVarargs protected final <T extends Annotation> void assertAnnotations(int size, Class<T> annotationClass, TestAnnotation<T>... annotations) throws AnalysisEngineProcessException, ResourceInitializationException { assertEquals(size, JCasUtil.select(jCas, annotationClass).size()); for (TestAnnotation<T> a : annotations) { T t = JCasUtil.selectByIndex(jCas, annotationClass, a.getIndex()); a.validate(t); } } /** * 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(); } }