//Dstl (c) Crown Copyright 2017
package uk.gov.dstl.baleen.annotators.cleaners;
import static org.junit.Assert.assertEquals;
import org.apache.uima.analysis_engine.AnalysisEngine;
import org.apache.uima.fit.factory.AnalysisEngineFactory;
import org.apache.uima.fit.util.JCasUtil;
import org.junit.Test;
import uk.gov.dstl.baleen.annotators.testing.AnnotatorTestBase;
import uk.gov.dstl.baleen.types.geo.Coordinate;
import uk.gov.dstl.baleen.types.semantic.Location;
/**
* @author Christopher McLean
*/
public class NormalizeOSGBTest extends AnnotatorTestBase {
private static final String CORRECT_FORMAT = "TQ299804";
private static final String PREFIX = "Trafalgar Square is at ";
private static final String SUB_TYPE = "osgb";
@Test
public void testSpaces() throws Exception {
AnalysisEngine ncAE = AnalysisEngineFactory.createEngine(NormalizeOSGB.class);
String coordinateValue = "TQ 299 804";
createAndAddCoordinateEntity(coordinateValue, SUB_TYPE);
ncAE.process(jCas);
assertEquals(1, JCasUtil.select(jCas, Coordinate.class).size());
assertEquals(CORRECT_FORMAT, JCasUtil.selectByIndex(jCas, Coordinate.class, 0).getValue());
assertEquals(true, JCasUtil.selectByIndex(jCas, Coordinate.class, 0).getIsNormalised());
}
@Test
public void testLowercase() throws Exception {
AnalysisEngine ncAE = AnalysisEngineFactory.createEngine(NormalizeOSGB.class);
String coordinateValue = "tq299804";
createAndAddCoordinateEntity(coordinateValue, SUB_TYPE);
ncAE.process(jCas);
assertEquals(1, JCasUtil.select(jCas, Coordinate.class).size());
assertEquals(CORRECT_FORMAT, JCasUtil.selectByIndex(jCas, Coordinate.class, 0).getValue());
assertEquals(true, JCasUtil.selectByIndex(jCas, Coordinate.class, 0).getIsNormalised());
}
@Test
public void testWrongType() throws Exception {
AnalysisEngine ncAE = AnalysisEngineFactory.createEngine(NormalizeOSGB.class);
String coordinateValue = "tq299804";
createAndAddLocationEntity(coordinateValue, "osgb");
ncAE.process(jCas);
assertEquals(1, JCasUtil.select(jCas, Location.class).size());
assertEquals("tq299804", JCasUtil.selectByIndex(jCas, Location.class, 0).getValue());
assertEquals(false, JCasUtil.selectByIndex(jCas, Location.class, 0).getIsNormalised());
}
@Test
public void testWrongSubType() throws Exception {
AnalysisEngine ncAE = AnalysisEngineFactory.createEngine(NormalizeOSGB.class);
String coordinateValue = "tq299804";
createAndAddCoordinateEntity(coordinateValue, "dms");
ncAE.process(jCas);
assertEquals(1, JCasUtil.select(jCas, Coordinate.class).size());
assertEquals("tq299804", JCasUtil.selectByIndex(jCas, Coordinate.class, 0).getValue());
assertEquals(false, JCasUtil.selectByIndex(jCas, Coordinate.class, 0).getIsNormalised());
}
private void createAndAddCoordinateEntity(String entityValue, String subType) {
jCas.setDocumentText(PREFIX + entityValue);
Coordinate coord = new Coordinate(jCas);
coord.setSubType(subType);
coord.setValue(entityValue);
coord.setBegin(PREFIX.length());
coord.setEnd(PREFIX.length() + entityValue.length());
coord.addToIndexes();
}
private void createAndAddLocationEntity(String entityValue, String subType) {
jCas.setDocumentText(PREFIX + entityValue);
Location coord = new Location(jCas);
coord.setSubType(subType);
coord.setValue(entityValue);
coord.setBegin(PREFIX.length());
coord.setEnd(PREFIX.length() + entityValue.length());
coord.addToIndexes();
}
}