//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.consumers; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import java.io.File; import java.nio.file.Files; import org.apache.uima.analysis_engine.AnalysisEngine; import org.apache.uima.fit.factory.AnalysisEngineFactory; import org.apache.uima.jcas.JCas; import org.apache.uima.jcas.tcas.DocumentAnnotation; import org.apache.uima.util.FileUtils; import org.junit.Before; import org.junit.Test; import uk.gov.dstl.baleen.types.common.CommsIdentifier; import uk.gov.dstl.baleen.types.common.Person; import uk.gov.dstl.baleen.uima.testing.JCasSingleton; import uk.gov.dstl.baleen.uima.utils.TypeSystemSingleton; public class EntityCountTest { private static final String OUTPUT_FILE = "outputFile"; private static final String TEST1_TXT = "test1.txt"; JCas jCas; @Before public void beforeTest() throws Exception{ jCas = JCasSingleton.getJCasInstance(); } @Test public void testEntityCountOutput() throws Exception{ File output = Files.createTempFile("baleen-entitycount", ".tsv").toFile(); AnalysisEngine consumer = AnalysisEngineFactory.createEngine(EntityCount.class, TypeSystemSingleton.getTypeSystemDescriptionInstance(), OUTPUT_FILE, output.getPath()); createDocument(); consumer.process(jCas); assertEquals("test1.txt\t2", FileUtils.file2String(output).trim()); consumer.destroy(); output.delete(); } @Test public void testEntityCountOutputNewFile() throws Exception{ File outputFolder = Files.createTempDirectory("baleen").toFile(); File output = new File(outputFolder, "baleen-entitycount.tsv"); AnalysisEngine consumer = AnalysisEngineFactory.createEngine(EntityCount.class, TypeSystemSingleton.getTypeSystemDescriptionInstance(), OUTPUT_FILE, output.getPath()); createDocument(); consumer.process(jCas); assertEquals("test1.txt\t2", FileUtils.file2String(output).trim()); consumer.destroy(); output.delete(); outputFolder.delete(); } private void createDocument() { DocumentAnnotation da = (DocumentAnnotation)jCas.getDocumentAnnotationFs(); da.setSourceUri(TEST1_TXT); CommsIdentifier ci = new CommsIdentifier(jCas); ci.addToIndexes(); Person p = new Person(jCas); p.addToIndexes(); } @Test public void testEntityCountOutputReadOnly() throws Exception{ File output = Files.createTempFile("baleen-entitycount", ".tsv").toFile(); output.setReadOnly(); try{ AnalysisEngineFactory.createEngine(EntityCount.class, TypeSystemSingleton.getTypeSystemDescriptionInstance(), OUTPUT_FILE, output.getPath()); fail("Expected exception not thrown"); }catch(Exception ex){ // Do nothing } output.delete(); } @Test public void testEntityCountOutputCantWrite() throws Exception{ File output = Files.createTempDirectory("baleen").toFile(); createDocument(); //Try writing to folder AnalysisEngine consumer = AnalysisEngineFactory.createEngine(EntityCount.class, TypeSystemSingleton.getTypeSystemDescriptionInstance(), OUTPUT_FILE, output.getPath()); consumer.process(jCas); consumer.destroy(); output.delete(); } }