//Dstl (c) Crown Copyright 2017
package uk.gov.dstl.baleen.annotators.regex;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import org.apache.uima.UIMAException;
import org.apache.uima.analysis_engine.AnalysisEngine;
import org.apache.uima.analysis_engine.AnalysisEngineDescription;
import org.apache.uima.fit.factory.AnalysisEngineFactory;
import org.apache.uima.fit.factory.ExternalResourceFactory;
import org.apache.uima.fit.util.JCasUtil;
import org.apache.uima.resource.ExternalResourceDescription;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import uk.gov.dstl.baleen.annotators.regex.internals.NationalityRegex;
import uk.gov.dstl.baleen.annotators.testing.AnnotatorTestBase;
import uk.gov.dstl.baleen.resources.SharedCountryResource;
import uk.gov.dstl.baleen.types.common.Nationality;
import uk.gov.dstl.baleen.types.language.Text;
/**
*
*/
public class NationalityTest extends AnnotatorTestBase{
AnalysisEngine ae;
@Override
@Before
public void beforeTest() throws UIMAException{
super.beforeTest();
ExternalResourceDescription erd = ExternalResourceFactory.createExternalResourceDescription("country", SharedCountryResource.class);
AnalysisEngineDescription aed = AnalysisEngineFactory.createEngineDescription(NationalityRegex.class, "country", erd);
ae = AnalysisEngineFactory.createEngine(aed);
}
@After
public void afterTest(){
ae.destroy();
}
@Test
public void test() throws Exception{
jCas.setDocumentText("James is a BRITISH national. Last month, he met an Irish bloke in the pub. He is friends with Bob, who is an Spanish.");
ae.process(jCas);
assertEquals(3, JCasUtil.select(jCas, Nationality.class).size());
Nationality british = JCasUtil.selectByIndex(jCas, Nationality.class, 0);
assertNotNull(british);
assertEquals("BRITISH", british.getCoveredText());
assertEquals("BRITISH", british.getValue());
assertEquals("GBR", british.getCountryCode());
Nationality irish = JCasUtil.selectByIndex(jCas, Nationality.class, 1);
assertNotNull(irish);
assertEquals("Irish", irish.getCoveredText());
assertEquals("Irish", irish.getValue());
assertEquals("IRL", irish.getCountryCode());
Nationality spanish = JCasUtil.selectByIndex(jCas, Nationality.class, 2);
assertNotNull(spanish);
assertEquals("Spanish", spanish.getCoveredText());
assertEquals("Spanish", spanish.getValue());
assertEquals("ESP", spanish.getCountryCode());
}
@Test
public void test2() throws Exception{
jCas.setDocumentText("Derek is from Afghanistan");
ae.process(jCas);
assertEquals(0, JCasUtil.select(jCas, Nationality.class).size());
}
@Test
public void testWithText() throws Exception{
jCas.setDocumentText("James is a BRITISH national. Last month, he met an Irish bloke in the pub. He is friends with Bob, who is an Spanish.");
new Text(jCas, 30, 75).addToIndexes();
new Text(jCas, 76, jCas.getDocumentText().length()).addToIndexes();
ae.process(jCas);
assertEquals(2, JCasUtil.select(jCas, Nationality.class).size());
Nationality irish = JCasUtil.selectByIndex(jCas, Nationality.class, 0);
assertNotNull(irish);
assertEquals("Irish", irish.getCoveredText());
assertEquals("Irish", irish.getValue());
assertEquals("IRL", irish.getCountryCode());
Nationality spanish = JCasUtil.selectByIndex(jCas, Nationality.class, 1);
assertNotNull(spanish);
assertEquals("Spanish", spanish.getCoveredText());
assertEquals("Spanish", spanish.getValue());
assertEquals("ESP", spanish.getCountryCode());
}
}