//Dstl (c) Crown Copyright 2017
package uk.gov.dstl.baleen.annotators.cleaners;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import org.apache.uima.fit.util.JCasUtil;
import org.junit.Test;
import uk.gov.dstl.baleen.annotators.testing.AbstractAnnotatorTest;
import uk.gov.dstl.baleen.types.common.Person;
import uk.gov.dstl.baleen.types.semantic.Location;
import uk.gov.dstl.baleen.types.semantic.ReferenceTarget;
public class EntityInitialsTest extends AbstractAnnotatorTest {
public EntityInitialsTest() {
super(EntityInitials.class);
}
@Test
public void test1() throws Exception{
jCas.setDocumentText("John Smith (JS) was last seen in London (LDN). JS has previously visited LDN.");
Person p = new Person(jCas, 0, 10);
p.addToIndexes();
Location l = new Location(jCas, 33, 39);
l.addToIndexes();
processJCas();
assertEquals(3, JCasUtil.select(jCas, Person.class).size());
assertEquals(3, JCasUtil.select(jCas, Location.class).size());
Person p0 = JCasUtil.selectByIndex(jCas, Person.class, 0);
assertEquals("John Smith", p0.getCoveredText());
ReferenceTarget rtP = p0.getReferent();
assertNotNull(rtP);
Person p1 = JCasUtil.selectByIndex(jCas, Person.class, 1);
assertEquals("JS", p1.getCoveredText());
assertEquals(rtP, p1.getReferent());
Person p2 = JCasUtil.selectByIndex(jCas, Person.class, 2);
assertEquals("JS", p2.getCoveredText());
assertEquals(rtP, p2.getReferent());
Location l0 = JCasUtil.selectByIndex(jCas, Location.class, 0);
assertEquals("London", l0.getCoveredText());
ReferenceTarget rtL = l0.getReferent();
assertNotNull(rtL);
Location l1 = JCasUtil.selectByIndex(jCas, Location.class, 1);
assertEquals("LDN", l1.getCoveredText());
assertEquals(rtL, l1.getReferent());
Location l2 = JCasUtil.selectByIndex(jCas, Location.class, 2);
assertEquals("LDN", l2.getCoveredText());
assertEquals(rtL, l2.getReferent());
}
@Test
public void test2() throws Exception{
jCas.setDocumentText("John Smith (UID123) (JS) was last seen in London (LDN) (NFDK). JSmith has previously visited MAN.");
Person p = new Person(jCas, 0, 10);
p.addToIndexes();
Location l = new Location(jCas, 42, 48);
l.addToIndexes();
processJCas();
assertEquals(2, JCasUtil.select(jCas, Person.class).size());
assertEquals(2, JCasUtil.select(jCas, Location.class).size());
Person p0 = JCasUtil.selectByIndex(jCas, Person.class, 0);
assertEquals("John Smith", p0.getCoveredText());
ReferenceTarget rtP = p0.getReferent();
assertNotNull(rtP);
Person p1 = JCasUtil.selectByIndex(jCas, Person.class, 1);
assertEquals("JS", p1.getCoveredText());
assertEquals(rtP, p1.getReferent());
Location l0 = JCasUtil.selectByIndex(jCas, Location.class, 0);
assertEquals("London", l0.getCoveredText());
ReferenceTarget rtL = l0.getReferent();
assertNotNull(rtL);
Location l1 = JCasUtil.selectByIndex(jCas, Location.class, 1);
assertEquals("LDN", l1.getCoveredText());
assertEquals(rtL, l1.getReferent());
}
@Test
public void test3() throws Exception{
jCas.setDocumentText("John Smith (JS) was last seen in London (LDN). JS has previously visited LDN.");
Person p = new Person(jCas, 0, 10);
p.addToIndexes();
Location l = new Location(jCas, 33, 39);
l.addToIndexes();
Person pJS = new Person(jCas, 47, 49);
ReferenceTarget rtJS = new ReferenceTarget(jCas);
pJS.setReferent(rtJS);
pJS.addToIndexes(jCas);
processJCas();
assertEquals(3, JCasUtil.select(jCas, Person.class).size());
assertEquals(3, JCasUtil.select(jCas, Location.class).size());
Person p0 = JCasUtil.selectByIndex(jCas, Person.class, 0);
assertEquals("John Smith", p0.getCoveredText());
ReferenceTarget rtP = p0.getReferent();
assertEquals(rtJS, rtP);
Person p1 = JCasUtil.selectByIndex(jCas, Person.class, 1);
assertEquals("JS", p1.getCoveredText());
assertEquals(rtJS, p1.getReferent());
Person p2 = JCasUtil.selectByIndex(jCas, Person.class, 2);
assertEquals("JS", p2.getCoveredText());
assertEquals(rtJS, p2.getReferent());
Location l0 = JCasUtil.selectByIndex(jCas, Location.class, 0);
assertEquals("London", l0.getCoveredText());
ReferenceTarget rtL = l0.getReferent();
assertNotNull(rtL);
Location l1 = JCasUtil.selectByIndex(jCas, Location.class, 1);
assertEquals("LDN", l1.getCoveredText());
assertEquals(rtL, l1.getReferent());
Location l2 = JCasUtil.selectByIndex(jCas, Location.class, 2);
assertEquals("LDN", l2.getCoveredText());
assertEquals(rtL, l2.getReferent());
}
@Test
public void test4() throws Exception{
jCas.setDocumentText("John Smith (JS) was last seen in London (LDN). JS has previously visited LDN.");
Person p = new Person(jCas, 0, 10);
ReferenceTarget rtP = new ReferenceTarget(jCas);
p.setReferent(rtP);
p.addToIndexes();
Location l = new Location(jCas, 33, 39);
l.addToIndexes();
Person pJS = new Person(jCas, 47, 49);
ReferenceTarget rtJS = new ReferenceTarget(jCas);
pJS.setReferent(rtJS);
pJS.addToIndexes(jCas);
processJCas();
assertEquals(3, JCasUtil.select(jCas, Person.class).size());
assertEquals(3, JCasUtil.select(jCas, Location.class).size());
Person p0 = JCasUtil.selectByIndex(jCas, Person.class, 0);
assertEquals("John Smith", p0.getCoveredText());
assertEquals(rtP, p0.getReferent());
Person p1 = JCasUtil.selectByIndex(jCas, Person.class, 1);
assertEquals("JS", p1.getCoveredText());
assertEquals(rtP, p1.getReferent());
Person p2 = JCasUtil.selectByIndex(jCas, Person.class, 2);
assertEquals("JS", p2.getCoveredText());
assertEquals(rtJS, p2.getReferent());
assertNotEquals(rtP, rtJS);
Location l0 = JCasUtil.selectByIndex(jCas, Location.class, 0);
assertEquals("London", l0.getCoveredText());
ReferenceTarget rtL = l0.getReferent();
assertNotNull(rtL);
Location l1 = JCasUtil.selectByIndex(jCas, Location.class, 1);
assertEquals("LDN", l1.getCoveredText());
assertEquals(rtL, l1.getReferent());
Location l2 = JCasUtil.selectByIndex(jCas, Location.class, 2);
assertEquals("LDN", l2.getCoveredText());
assertEquals(rtL, l2.getReferent());
}
@Test
public void test5() throws Exception{
jCas.setDocumentText("John Smith (JS) was last seen in London (LDN). JS has previously visited LDN.");
ReferenceTarget rtJohn = new ReferenceTarget(jCas);
ReferenceTarget rtJS = new ReferenceTarget(jCas);
Person pJohn = new Person(jCas, 0, 10);
pJohn.setReferent(rtJohn);
pJohn.addToIndexes();
Person pJS = new Person(jCas, 47, 49);
pJS.setReferent(rtJS);
pJS.addToIndexes();
Location l = new Location(jCas, 33, 39);
l.addToIndexes();
processJCas(EntityInitials.PARAM_MERGE_REFERENTS, true);
assertEquals(3, JCasUtil.select(jCas, Person.class).size());
assertEquals(3, JCasUtil.select(jCas, Location.class).size());
Person p0 = JCasUtil.selectByIndex(jCas, Person.class, 0);
assertEquals("John Smith", p0.getCoveredText());
ReferenceTarget rtP = p0.getReferent();
assertNotNull(rtP);
Person p1 = JCasUtil.selectByIndex(jCas, Person.class, 1);
assertEquals("JS", p1.getCoveredText());
assertEquals(rtP, p1.getReferent());
Person p2 = JCasUtil.selectByIndex(jCas, Person.class, 2);
assertEquals("JS", p2.getCoveredText());
assertEquals(rtP, p2.getReferent());
Location l0 = JCasUtil.selectByIndex(jCas, Location.class, 0);
assertEquals("London", l0.getCoveredText());
ReferenceTarget rtL = l0.getReferent();
assertNotNull(rtL);
Location l1 = JCasUtil.selectByIndex(jCas, Location.class, 1);
assertEquals("LDN", l1.getCoveredText());
assertEquals(rtL, l1.getReferent());
Location l2 = JCasUtil.selectByIndex(jCas, Location.class, 2);
assertEquals("LDN", l2.getCoveredText());
assertEquals(rtL, l2.getReferent());
}
@Test
public void test6() throws Exception{
jCas.setDocumentText("John Smith (JS) was last seen in London (LDN). JS has previously visited LDN.");
ReferenceTarget rtJohn = new ReferenceTarget(jCas);
ReferenceTarget rtJS = new ReferenceTarget(jCas);
Person pJohn = new Person(jCas, 0, 10);
pJohn.setReferent(rtJohn);
pJohn.addToIndexes();
Person pJS = new Person(jCas, 47, 49);
pJS.setReferent(rtJS);
pJS.addToIndexes();
Location l = new Location(jCas, 33, 39);
l.addToIndexes();
processJCas(EntityInitials.PARAM_MERGE_REFERENTS, false);
assertEquals(3, JCasUtil.select(jCas, Person.class).size());
assertEquals(3, JCasUtil.select(jCas, Location.class).size());
Person p0 = JCasUtil.selectByIndex(jCas, Person.class, 0);
assertEquals("John Smith", p0.getCoveredText());
ReferenceTarget rtP0 = p0.getReferent();
assertNotNull(rtP0);
Person p1 = JCasUtil.selectByIndex(jCas, Person.class, 1);
assertEquals("JS", p1.getCoveredText());
assertEquals(rtP0, p1.getReferent());
Person p2 = JCasUtil.selectByIndex(jCas, Person.class, 2);
assertEquals("JS", p2.getCoveredText());
ReferenceTarget rtP2 = p2.getReferent();
assertNotNull(rtP2);
assertNotEquals(rtP0, rtP2);
Location l0 = JCasUtil.selectByIndex(jCas, Location.class, 0);
assertEquals("London", l0.getCoveredText());
ReferenceTarget rtL = l0.getReferent();
assertNotNull(rtL);
Location l1 = JCasUtil.selectByIndex(jCas, Location.class, 1);
assertEquals("LDN", l1.getCoveredText());
assertEquals(rtL, l1.getReferent());
Location l2 = JCasUtil.selectByIndex(jCas, Location.class, 2);
assertEquals("LDN", l2.getCoveredText());
assertEquals(rtL, l2.getReferent());
}
}