//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.annotators.cleaners; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import org.apache.uima.analysis_engine.AnalysisEngine; import org.apache.uima.fit.factory.AnalysisEngineFactory; import org.apache.uima.fit.util.JCasUtil; import org.apache.uima.jcas.JCas; import org.apache.uima.resource.ResourceInitializationException; import org.junit.Test; import uk.gov.dstl.baleen.annotators.testing.AnnotatorTestBase; import uk.gov.dstl.baleen.types.common.Person; import uk.gov.dstl.baleen.types.semantic.Location; import uk.gov.dstl.baleen.types.semantic.Relation; import uk.gov.dstl.baleen.types.semantic.Temporal; /** * */ public class BlacklistTest extends AnnotatorTestBase { private static final String NOVEMBER2 = "NOVEMBER"; private static final String LONDON = "London"; private static final String NOVEMBER = "November"; @Test public void test() throws Exception{ AnalysisEngine rneAE = AnalysisEngineFactory.createEngine(Blacklist.class, Blacklist.PARAM_BLACKLIST, new String[]{NOVEMBER2, LONDON}); createDocument(jCas); rneAE.process(jCas); assertCorrect(1, 0, 0); rneAE.destroy(); } @Test public void testCaseSensitive() throws Exception{ AnalysisEngine rneAE = AnalysisEngineFactory.createEngine(Blacklist.class, Blacklist.PARAM_BLACKLIST, new String[]{NOVEMBER2, LONDON}, Blacklist.PARAM_CASE_SENSITIVE, true); createDocument(jCas); rneAE.process(jCas); assertCorrect(1, 1, 0); rneAE.destroy(); } @Test public void testSpecifiedType() throws Exception{ AnalysisEngine rneAE = AnalysisEngineFactory.createEngine(Blacklist.class, Blacklist.PARAM_BLACKLIST, new String[]{NOVEMBER2, LONDON}, Blacklist.PARAM_TYPE, "uk.gov.dstl.baleen.types.semantic.Location"); createDocument(jCas); rneAE.process(jCas); assertCorrect(1, 1, 0); rneAE.destroy(); } @Test public void testBadTypes() throws Exception{ try{ AnalysisEngineFactory.createEngine(Blacklist.class, Blacklist.PARAM_BLACKLIST, new String[]{NOVEMBER2, LONDON}, Blacklist.PARAM_TYPE, "this.is.not.a.type"); fail("Expected exception not thrown"); }catch(ResourceInitializationException e){ // Expected exception } try{ AnalysisEngineFactory.createEngine(Blacklist.class, Blacklist.PARAM_BLACKLIST, new String[]{NOVEMBER2, LONDON}, Blacklist.PARAM_TYPE, Blacklist.class.getName()); fail("Expected exception not thrown"); }catch(ResourceInitializationException e){ // Expected exception } try{ AnalysisEngineFactory.createEngine(Blacklist.class, Blacklist.PARAM_BLACKLIST, new String[]{NOVEMBER2, LONDON}, Blacklist.PARAM_TYPE, Relation.class.getName()); fail("Expected exception not thrown"); }catch(ResourceInitializationException e){ // Expected exception } } private void createDocument(JCas jCas){ jCas.reset(); jCas.setDocumentText("Simon was born in November 1980 in London"); Person p = new Person(jCas); p.setValue("Simon"); p.setBegin(0); p.setEnd(5); p.addToIndexes(); Temporal d = new Temporal(jCas); d.setValue(NOVEMBER); d.setBegin(18); d.setEnd(26); d.addToIndexes(); Location l = new Location(jCas); l.setValue(LONDON); l.setBegin(35); l.setEnd(41); l.addToIndexes(); assertEquals(1, JCasUtil.select(jCas, Person.class).size()); assertEquals(1, JCasUtil.select(jCas, Temporal.class).size()); assertEquals(1, JCasUtil.select(jCas, Location.class).size()); } private void assertCorrect(int people, int datetypes, int locations){ assertEquals(people, JCasUtil.select(jCas, Person.class).size()); assertEquals(datetypes, JCasUtil.select(jCas, Temporal.class).size()); assertEquals(locations, JCasUtil.select(jCas, Location.class).size()); } }