//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.annotators.misc; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.uima.UIMAException; import org.apache.uima.jcas.JCas; import org.junit.Test; import uk.gov.dstl.baleen.annotators.misc.GenericMilitaryPlatform; import uk.gov.dstl.baleen.annotators.testing.AbstractAnnotatorTest; import uk.gov.dstl.baleen.annotators.testing.types.TestMilitaryPlatform; import uk.gov.dstl.baleen.types.language.Sentence; import uk.gov.dstl.baleen.types.language.WordToken; import uk.gov.dstl.baleen.types.military.MilitaryPlatform; public class GenericMilitaryPlatformTest extends AbstractAnnotatorTest { public GenericMilitaryPlatformTest(){ super(GenericMilitaryPlatform.class); } @Test public void testSingleVehicle() throws UIMAException{ jCas.setDocumentText("A fighter jet was scrambled."); createSentences(jCas); createWordTokens(jCas); processJCas(); assertAnnotations(1, MilitaryPlatform.class, new TestMilitaryPlatform(0, "fighter jet", "AIR")); } @Test public void testMultipleVehicle() throws UIMAException{ jCas.setDocumentText("The aircraft carrier carried a number of attack helicopters"); createSentences(jCas); createWordTokens(jCas); processJCas(); assertAnnotations(2, MilitaryPlatform.class, new TestMilitaryPlatform(0, "aircraft carrier", "NAVAL"), new TestMilitaryPlatform(1, "attack helicopters", "AIR")); } @Test public void testPlural() throws UIMAException{ jCas.setDocumentText("There were four tanks."); createSentences(jCas); createWordTokens(jCas); processJCas(); assertAnnotations(1, MilitaryPlatform.class, new TestMilitaryPlatform(0, "tanks", "GROUND")); } @Test public void testMultipleSentences() throws UIMAException{ jCas.setDocumentText("The armoured vehicle was hidden in the forest. The UAV couldn't see it."); createSentences(jCas); createWordTokens(jCas); processJCas(); assertAnnotations(2, MilitaryPlatform.class, new TestMilitaryPlatform(0, "armoured vehicle", "GROUND"), new TestMilitaryPlatform(1, "UAV", "AIR")); } private void createSentences(JCas jCas){ Pattern p = Pattern.compile("[^ ].*?\\."); Matcher m = p.matcher(jCas.getDocumentText()); while(m.find()){ new Sentence(jCas, m.start(), m.end()).addToIndexes(); } } private void createWordTokens(JCas jCas){ Pattern p = Pattern.compile("[A-Za-z]+"); Matcher m = p.matcher(jCas.getDocumentText()); while(m.find()){ new WordToken(jCas, m.start(), m.end()).addToIndexes(); } } }