//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.Annotations;
import uk.gov.dstl.baleen.annotators.testing.AnnotatorTestBase;
import uk.gov.dstl.baleen.types.semantic.Location;
/**
*
*/
public class RemoveNestedLocationsTest extends AnnotatorTestBase {
private static final String FAKE_GEOJSON = "geojson_london";
private static final String NORTH_LONDON = "North London";
private static final String LONDON = "London";
@Test
public void testNoGeoJson() throws Exception{
AnalysisEngine rneAE = AnalysisEngineFactory.createEngine(RemoveNestedLocations.class);
jCas.setDocumentText(NORTH_LONDON);
Annotations.createLocation(jCas, 6, 12, LONDON, null);
Location l2 = Annotations.createLocation(jCas, 0, 12, NORTH_LONDON, null);
rneAE.process(jCas);
assertEquals(1, JCasUtil.select(jCas, Location.class).size());
assertEquals(l2, JCasUtil.selectByIndex(jCas, Location.class, 0));
}
@Test
public void testSameGeoJson() throws Exception{
AnalysisEngine rneAE = AnalysisEngineFactory.createEngine(RemoveNestedLocations.class);
jCas.setDocumentText(NORTH_LONDON);
Annotations.createLocation(jCas, 6, 12, LONDON, FAKE_GEOJSON);
Location l2 = Annotations.createLocation(jCas, 0, 12, NORTH_LONDON, FAKE_GEOJSON);
rneAE.process(jCas);
assertEquals(1, JCasUtil.select(jCas, Location.class).size());
assertEquals(l2, JCasUtil.selectByIndex(jCas, Location.class, 0));
}
@Test
public void testDifferentGeoJson() throws Exception{
AnalysisEngine rneAE = AnalysisEngineFactory.createEngine(RemoveNestedLocations.class);
jCas.setDocumentText(NORTH_LONDON);
Location l1 = Annotations.createLocation(jCas, 6, 12, LONDON, FAKE_GEOJSON);
Location l2 = Annotations.createLocation(jCas, 0, 12, NORTH_LONDON, "different");
rneAE.process(jCas);
assertEquals(2, JCasUtil.select(jCas, Location.class).size());
assertEquals(l2, JCasUtil.selectByIndex(jCas, Location.class, 0));
assertEquals(l1, JCasUtil.selectByIndex(jCas, Location.class, 1));
}
@Test
public void testOneGeoJsonOuter() throws Exception{
AnalysisEngine rneAE = AnalysisEngineFactory.createEngine(RemoveNestedLocations.class);
jCas.setDocumentText(NORTH_LONDON);
Annotations.createLocation(jCas, 6, 12, LONDON, null);
Location l2 = Annotations.createLocation(jCas, 0, 12, NORTH_LONDON, "different");
rneAE.process(jCas);
assertEquals(1, JCasUtil.select(jCas, Location.class).size());
assertEquals(l2, JCasUtil.selectByIndex(jCas, Location.class, 0));
}
@Test
public void testOneGeoJsonInner() throws Exception{
AnalysisEngine rneAE = AnalysisEngineFactory.createEngine(RemoveNestedLocations.class);
jCas.setDocumentText(NORTH_LONDON);
Location l1 = Annotations.createLocation(jCas, 6, 12, LONDON, FAKE_GEOJSON);
Location l2 = Annotations.createLocation(jCas, 0, 12, NORTH_LONDON, null);
rneAE.process(jCas);
assertEquals(1, JCasUtil.select(jCas, Location.class).size());
Location l = JCasUtil.selectByIndex(jCas, Location.class, 0);
assertEquals(l1.getGeoJson(), l.getGeoJson());
l.setGeoJson(null);
assertEquals(l2, l);
}
}