//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.annotators.misc; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.List; 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.misc.MentionedAgain; import uk.gov.dstl.baleen.annotators.testing.AbstractAnnotatorTest; import uk.gov.dstl.baleen.types.common.Buzzword; import uk.gov.dstl.baleen.types.common.Person; import uk.gov.dstl.baleen.types.language.Text; import uk.gov.dstl.baleen.types.semantic.Entity; public class MentionedAgainTest extends AbstractAnnotatorTest { public MentionedAgainTest() { super(MentionedAgain.class); } @Test public void test() throws AnalysisEngineProcessException, ResourceInitializationException { jCas.setDocumentText("John went to London. I saw John there."); Person p = new Person(jCas); p.setBegin(0); p.setEnd(4); p.setValue("John"); p.addToIndexes(); processJCas(); List<Entity> select = new ArrayList<>(JCasUtil.select(jCas, Person.class)); assertEquals(2, select.size()); assertEquals("John", select.get(0).getValue()); assertEquals("John", select.get(1).getValue()); } @Test public void testWithText() throws AnalysisEngineProcessException, ResourceInitializationException { jCas.setDocumentText("John went to London. I saw John there. He's a great guy John."); new Text(jCas, 0, 21).addToIndexes(); // Omit the middle John new Text(jCas, 40, jCas.getDocumentText().length()).addToIndexes(); Person p = new Person(jCas); p.setBegin(0); p.setEnd(4); p.setValue("John"); p.addToIndexes(); processJCas(); List<Entity> select = new ArrayList<>(JCasUtil.select(jCas, Person.class)); assertEquals(2, select.size()); assertEquals("John", select.get(0).getValue()); assertEquals("John", select.get(1).getValue()); assertTrue(select.get(1).getBegin() > 40); } @Test public void testMultiple() throws AnalysisEngineProcessException, ResourceInitializationException { jCas.setDocumentText("John went to London. I saw John there. He's a great guy John."); Person p1 = new Person(jCas); p1.setBegin(0); p1.setEnd(4); p1.setValue("John"); p1.addToIndexes(); Person p2 = new Person(jCas); p2.setBegin(27); p2.setEnd(31); p2.setValue("John"); p2.addToIndexes(); processJCas(); List<Entity> select = new ArrayList<>(JCasUtil.select(jCas, Person.class)); assertEquals(3, select.size()); assertEquals("John", select.get(0).getValue()); assertEquals("John", select.get(1).getValue()); assertEquals("John", select.get(2).getValue()); } @Test public void testDifferentTypes() throws AnalysisEngineProcessException, ResourceInitializationException { jCas.setDocumentText("John went to London. I saw John there. He's a great guy John."); Person p1 = new Person(jCas); p1.setBegin(0); p1.setEnd(4); p1.setValue("John"); p1.addToIndexes(); Buzzword b = new Buzzword(jCas); b.setBegin(27); b.setEnd(31); b.setValue("John"); b.addToIndexes(); processJCas(); List<Entity> selectPerson = new ArrayList<>(JCasUtil.select(jCas, Person.class)); assertEquals(3, selectPerson.size()); assertEquals("John", selectPerson.get(0).getValue()); assertEquals("John", selectPerson.get(1).getValue()); assertEquals("John", selectPerson.get(2).getValue()); List<Entity> selectBuzzword = new ArrayList<>(JCasUtil.select(jCas, Buzzword.class)); assertEquals(3, selectBuzzword.size()); assertEquals("John", selectBuzzword.get(0).getValue()); assertEquals("John", selectBuzzword.get(1).getValue()); assertEquals("John", selectBuzzword.get(2).getValue()); } }