//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.annotators.templates; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; import org.apache.uima.fit.util.JCasUtil; import org.apache.uima.resource.ResourceInitializationException; import org.junit.Test; import uk.gov.dstl.baleen.annotators.testing.AbstractAnnotatorTest; import uk.gov.dstl.baleen.types.templates.TemplateRecordDefinition; public class TemplateRecordDefinitionAnnotatorTest extends AbstractAnnotatorTest { private static final String RECORD_TEXT = " We may also find text of interest in table form, such as this:<<record:foo:begin>> \n" + " Full Name: \n" + " <<field:PersonFullName>> \n" + " Description: \n" + " <<field:Description>><<record:foo:end>>\n" + "Some text afterwards.\n"; private static final String REPEAT_RECORD_TEXT = " We may also find text of interest in table form, such as this:<<record:foo begin repeat>> \n" + " Full Name: \n" + " <<field:PersonFullName>> \n" + " Description: \n <<field:Description>><<record:foo>>\n" + "Some text afterwards.\n"; private static final String RECORD2_TEXT = RECORD_TEXT + RECORD_TEXT; public TemplateRecordDefinitionAnnotatorTest() { super(TemplateRecordDefinitionAnnotator.class); } @Test public void annotateRecord() throws AnalysisEngineProcessException, ResourceInitializationException { jCas.setDocumentText(RECORD_TEXT); processJCas(); TemplateRecordDefinition record = JCasUtil.selectByIndex(jCas, TemplateRecordDefinition.class, 0); assertEquals(83, record.getBegin()); assertEquals(169, record.getEnd()); assertFalse(record.getRepeat()); assertEquals(" \n" + " Full Name: \n" + " <<field:PersonFullName>> \n" + " Description: \n" + " <<field:Description>>", record.getCoveredText()); } @Test public void annotate2Record() throws AnalysisEngineProcessException, ResourceInitializationException { jCas.setDocumentText(RECORD2_TEXT); processJCas(); TemplateRecordDefinition record = JCasUtil.selectByIndex(jCas, TemplateRecordDefinition.class, 0); assertEquals(83, record.getBegin()); assertEquals(169, record.getEnd()); assertEquals(" \n" + " Full Name: \n" + " <<field:PersonFullName>> \n" + " Description: \n" + " <<field:Description>>", record.getCoveredText()); TemplateRecordDefinition record2 = JCasUtil.selectByIndex(jCas, TemplateRecordDefinition.class, 1); assertEquals(293, record2.getBegin()); assertEquals(379, record2.getEnd()); assertEquals(" \n" + " Full Name: \n" + " <<field:PersonFullName>> \n" + " Description: \n" + " <<field:Description>>", record2.getCoveredText()); } @Test public void annotateRepeatingRecord() throws AnalysisEngineProcessException, ResourceInitializationException { jCas.setDocumentText(REPEAT_RECORD_TEXT); processJCas(); TemplateRecordDefinition record = JCasUtil.selectByIndex(jCas, TemplateRecordDefinition.class, 0); assertEquals(90, record.getBegin()); assertEquals(176, record.getEnd()); assertTrue(record.getRepeat()); assertEquals(" \n" + " Full Name: \n" + " <<field:PersonFullName>> \n" + " Description: \n" + " <<field:Description>>", record.getCoveredText()); } }