//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.factory.ExternalResourceFactory; import org.apache.uima.fit.util.JCasUtil; import org.apache.uima.resource.ExternalResourceDescription; import org.apache.uima.resource.ResourceInitializationException; import org.junit.Test; import uk.gov.dstl.baleen.annotators.testing.AbstractAnnotatorTest; import uk.gov.dstl.baleen.resources.SharedGenderMultiplicityResource; import uk.gov.dstl.baleen.types.common.Person; public class AddGenderToPersonTest extends AbstractAnnotatorTest { private final ExternalResourceDescription erd = ExternalResourceFactory.createExternalResourceDescription(AddGenderToPerson.KEY_GENDER_MULTIPLICITY, SharedGenderMultiplicityResource.class); public AddGenderToPersonTest(){ super(AddGenderToPerson.class); } @Test public void testMale() throws AnalysisEngineProcessException, ResourceInitializationException { jCas.setDocumentText("Professor Brian Cox"); Person p = new Person(jCas); p.setBegin(10); p.setEnd(19); p.addToIndexes(); processJCas(AddGenderToPerson.KEY_GENDER_MULTIPLICITY, erd); Collection<Person> select = JCasUtil.select(jCas, Person.class); assertEquals(1, select.size()); Person out = select.iterator().next(); assertEquals("MALE", out.getGender()); } @Test public void testFemale() throws AnalysisEngineProcessException, ResourceInitializationException { jCas.setDocumentText("Alice Samantha"); Person p = new Person(jCas); p.setBegin(0); p.setEnd(14); p.addToIndexes(); processJCas(AddGenderToPerson.KEY_GENDER_MULTIPLICITY, erd); Collection<Person> select = JCasUtil.select(jCas, Person.class); assertEquals(1, select.size()); Person out = select.iterator().next(); assertEquals("FEMALE", out.getGender()); } @Test public void testMixed() throws AnalysisEngineProcessException, ResourceInitializationException { jCas.setDocumentText("Alice Brian Smith"); Person p = new Person(jCas); p.setBegin(0); p.setEnd(17); p.addToIndexes(); processJCas(AddGenderToPerson.KEY_GENDER_MULTIPLICITY, erd); Collection<Person> select = JCasUtil.select(jCas, Person.class); assertEquals(1, select.size()); Person out = select.iterator().next(); assertEquals("UNKNOWN", out.getGender()); } @Test public void testExisting() throws AnalysisEngineProcessException, ResourceInitializationException { jCas.setDocumentText("Alice Cox"); Person p = new Person(jCas); p.setBegin(10); p.setEnd(19); p.setGender("MALE"); p.addToIndexes(); processJCas(AddGenderToPerson.KEY_GENDER_MULTIPLICITY, erd); //If the entity is not ignored, it will be made female. Collection<Person> select = JCasUtil.select(jCas, Person.class); assertEquals(1, select.size()); Person out = select.iterator().next(); assertEquals("MALE", out.getGender()); } }