//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.annotators.grammatical; 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.Before; import org.junit.Test; import uk.gov.dstl.baleen.annotators.grammatical.QuantityNPEntity; import uk.gov.dstl.baleen.annotators.language.OpenNLP; import uk.gov.dstl.baleen.annotators.testing.AbstractAnnotatorTest; import uk.gov.dstl.baleen.annotators.testing.TestEntity; import uk.gov.dstl.baleen.resources.SharedOpenNLPModel; import uk.gov.dstl.baleen.types.common.Buzzword; import uk.gov.dstl.baleen.types.common.Quantity; import uk.gov.dstl.baleen.types.semantic.Entity; import uk.gov.dstl.baleen.types.semantic.Relation; import uk.gov.dstl.baleen.uima.utils.TypeSystemSingleton; /** * Tests for {@link QuantityNPEntity}. * * */ public class QuantityNPEntityTest extends AbstractAnnotatorTest { public QuantityNPEntityTest() { super(QuantityNPEntity.class); } @Before public void before() throws UIMAException{ jCas.setDocumentText("The bag contained 4kg of blue powder."); ExternalResourceDescription tokensDesc = ExternalResourceFactory.createExternalResourceDescription("tokens", SharedOpenNLPModel.class); ExternalResourceDescription sentencesDesc = ExternalResourceFactory.createExternalResourceDescription("sentences", SharedOpenNLPModel.class); ExternalResourceDescription posDesc = ExternalResourceFactory.createExternalResourceDescription("posTags", SharedOpenNLPModel.class); ExternalResourceDescription chunksDesc = ExternalResourceFactory.createExternalResourceDescription("phraseChunks", SharedOpenNLPModel.class); AnalysisEngineDescription desc = AnalysisEngineFactory.createEngineDescription(OpenNLP.class, TypeSystemSingleton.getTypeSystemDescriptionInstance(), "tokens", tokensDesc, "sentences", sentencesDesc, "posTags", posDesc, "phraseChunks", chunksDesc); AnalysisEngine languageAE = AnalysisEngineFactory.createEngine(desc); languageAE.process(jCas); } @Test public void testUnmarked() throws UIMAException{ Quantity q = new Quantity(jCas); q.setBegin(18); q.setEnd(21); q.addToIndexes(); processJCas(); assertAnnotations(2, Entity.class, new TestEntity<>(1, "blue powder")); assertEquals(1, JCasUtil.select(jCas, Relation.class).size()); Relation r = JCasUtil.selectByIndex(jCas, Relation.class, 0); assertEquals(18, r.getBegin()); assertEquals(q, r.getSource()); assertEquals(36, r.getEnd()); assertNotNull(r.getTarget()); assertEquals("QUANTITY", r.getRelationshipType()); } @Test public void testMarked() throws UIMAException { Quantity q = new Quantity(jCas); q.setBegin(18); q.setEnd(21); q.addToIndexes(); Buzzword e = new Buzzword(jCas); e.setBegin(25); e.setEnd(36); e.addToIndexes(); processJCas(); assertEquals(2, JCasUtil.select(jCas, Entity.class).size()); assertEquals(1, JCasUtil.select(jCas, Relation.class).size()); Relation r = JCasUtil.selectByIndex(jCas, Relation.class, 0); assertEquals(18, r.getBegin()); assertEquals(q, r.getSource()); assertEquals(36, e.getEnd()); assertEquals(e, r.getTarget()); assertEquals("QUANTITY", r.getRelationshipType()); } }