//Dstl (c) Crown Copyright 2017
package uk.gov.dstl.baleen.annotators.cleaners;
import static org.junit.Assert.assertEquals;
import java.util.Collection;
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.common.Person;
public class AddTitleToPersonTest extends AbstractAnnotatorTest {
public AddTitleToPersonTest() {
super(AddTitleToPerson.class);
}
@Test
public void testSingle() throws AnalysisEngineProcessException, ResourceInitializationException {
jCas.setDocumentText("They refered to him as Sir John Smith");
Person p = new Person(jCas);
p.setBegin(jCas.getDocumentText().indexOf("John Smith"));
p.setEnd(p.getBegin() + "John Smith".length());
p.addToIndexes();
processJCas();
Collection<Person> select = JCasUtil.select(jCas, Person.class);
assertEquals(1, select.size());
Person out = select.iterator().next();
assertEquals("Sir", out.getTitle());
assertEquals(jCas.getDocumentText().indexOf("Sir"), out.getBegin());
}
@Test
public void testTwo() throws AnalysisEngineProcessException, ResourceInitializationException {
jCas.setDocumentText("They refered to him as Senator Col John Smith");
Person p = new Person(jCas);
p.setBegin(jCas.getDocumentText().indexOf("John Smith"));
p.setEnd(p.getBegin() + "John Smith".length());
p.addToIndexes();
processJCas();
Collection<Person> select = JCasUtil.select(jCas, Person.class);
assertEquals(1, select.size());
Person out = select.iterator().next();
assertEquals("Senator Col", out.getTitle());
assertEquals(jCas.getDocumentText().indexOf("Senator"), out.getBegin());
}
@Test
public void testThree() throws AnalysisEngineProcessException, ResourceInitializationException {
jCas.setDocumentText("They refered to him as Prime Minister John Smith");
Person p = new Person(jCas);
p.setBegin(jCas.getDocumentText().indexOf("John Smith"));
p.setEnd(p.getBegin() + "John Smith".length());
p.addToIndexes();
processJCas();
Collection<Person> select = JCasUtil.select(jCas, Person.class);
assertEquals(1, select.size());
Person out = select.iterator().next();
assertEquals("Prime Minister", out.getTitle());
assertEquals(jCas.getDocumentText().indexOf("Prime"), out.getBegin());
}
@Test
public void testExisting() throws AnalysisEngineProcessException, ResourceInitializationException {
jCas.setDocumentText("They refered to him as Senator Col John Smith");
Person p = new Person(jCas);
p.setBegin(jCas.getDocumentText().indexOf("Col John Smith"));
p.setEnd(p.getBegin() + "Col John Smith".length());
p.setTitle("Col");
p.addToIndexes();
processJCas();
Collection<Person> select = JCasUtil.select(jCas, Person.class);
assertEquals(1, select.size());
Person out = select.iterator().next();
assertEquals("Senator Col", out.getTitle());
assertEquals(jCas.getDocumentText().indexOf("Senator"), out.getBegin());
}
@Test
public void testSingleExisting() throws AnalysisEngineProcessException, ResourceInitializationException {
jCas.setDocumentText("They refered to him as Sir John Smith");
Person p = new Person(jCas);
p.setBegin(jCas.getDocumentText().indexOf("Sir John Smith"));
p.setEnd(p.getBegin() + "Sir John Smith".length());
p.addToIndexes();
processJCas();
Collection<Person> select = JCasUtil.select(jCas, Person.class);
assertEquals(1, select.size());
Person out = select.iterator().next();
assertEquals("Sir", out.getTitle());
assertEquals("Sir John Smith", out.getCoveredText());
}
@Test
public void testSingleExisting2() throws AnalysisEngineProcessException, ResourceInitializationException {
jCas.setDocumentText("They refered to him as Mr. John Smith");
Person p = new Person(jCas);
p.setBegin(jCas.getDocumentText().indexOf("Mr. John Smith"));
p.setEnd(p.getBegin() + "Mr. John Smith".length());
p.addToIndexes();
processJCas();
Collection<Person> select = JCasUtil.select(jCas, Person.class);
assertEquals(1, select.size());
Person out = select.iterator().next();
assertEquals("Mr", out.getTitle());
assertEquals("Mr. John Smith", out.getCoveredText());
}
@Test
public void testExistingMixed() throws AnalysisEngineProcessException, ResourceInitializationException {
jCas.setDocumentText("They refered to him as Senator Col John Smith");
Person p = new Person(jCas);
p.setBegin(jCas.getDocumentText().indexOf("Col John Smith"));
p.setEnd(p.getBegin() + "Col John Smith".length());
p.addToIndexes();
processJCas();
Collection<Person> select = JCasUtil.select(jCas, Person.class);
assertEquals(1, select.size());
Person out = select.iterator().next();
assertEquals("Senator Col", out.getTitle());
assertEquals("Senator Col John Smith", out.getCoveredText());
}
@Test
public void testExtendPeriod() throws AnalysisEngineProcessException, ResourceInitializationException {
jCas.setDocumentText("They called him Dr. John Watson.");
Person p = new Person(jCas);
p.setBegin(20);
p.setEnd(31);
p.addToIndexes();
processJCas();
Collection<Person> select = JCasUtil.select(jCas, Person.class);
assertEquals(1, select.size());
Person out = select.iterator().next();
assertEquals("Dr", out.getTitle());
assertEquals("Dr. John Watson", out.getCoveredText());
}
}