//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.GenericVehicle;
import uk.gov.dstl.baleen.annotators.testing.AbstractAnnotatorTest;
import uk.gov.dstl.baleen.annotators.testing.types.TestVehicle;
import uk.gov.dstl.baleen.types.common.Vehicle;
import uk.gov.dstl.baleen.types.language.Sentence;
import uk.gov.dstl.baleen.types.language.WordToken;
public class GenericVehicleTest extends AbstractAnnotatorTest {
public GenericVehicleTest(){
super(GenericVehicle.class);
}
@Test
public void testSingleVehicle() throws UIMAException{
jCas.setDocumentText("Natalie was seen driving an old rusty, blue boat.");
createSentences(jCas);
createWordTokens(jCas);
processJCas();
assertAnnotations(1, Vehicle.class, new TestVehicle(0, "old rusty, blue boat", "MARITIME"));
}
@Test
public void testMultipleVehicle() throws UIMAException{
jCas.setDocumentText("Natalie owns a lime green van and a red jumbo jet.");
createSentences(jCas);
createWordTokens(jCas);
processJCas();
assertAnnotations(2, Vehicle.class,
new TestVehicle(0, "lime green van", "ROAD"),
new TestVehicle(1, "red jumbo jet", "AIR"));
}
@Test
public void testPlural() throws UIMAException{
jCas.setDocumentText("Old Sam owned four cars.");
createSentences(jCas);
createWordTokens(jCas);
processJCas();
assertAnnotations(1, Vehicle.class, new TestVehicle(0, "cars", "ROAD"));
}
@Test
public void testNoDescriptor() throws UIMAException{
jCas.setDocumentText("Sam owned a locomotive.");
createSentences(jCas);
createWordTokens(jCas);
processJCas();
assertAnnotations(1, Vehicle.class, new TestVehicle(0, "locomotive", "RAIL"));
}
@Test
public void testMultipleSentences() throws UIMAException{
jCas.setDocumentText("It was red. Hovercraft was the password. A blue satellite was the future.");
createSentences(jCas);
createWordTokens(jCas);
processJCas();
assertAnnotations(2, Vehicle.class, new TestVehicle(0, "Hovercraft", "OTHER"), new TestVehicle(1, "blue satellite", "SPACE"));
}
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();
}
}
}