//Dstl (c) Crown Copyright 2017 // Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.collectionreaders; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.io.File; import org.apache.uima.fit.util.JCasUtil; import org.apache.uima.jcas.JCas; import org.apache.uima.jcas.tcas.DocumentAnnotation; import org.junit.Test; import uk.gov.dstl.baleen.collectionreaders.testing.AbstractReaderTest; import uk.gov.dstl.baleen.types.metadata.Metadata; import uk.gov.dstl.baleen.uima.BaleenCollectionReader; public class LineReaderTest extends AbstractReaderTest { public LineReaderTest() { super(LineReader.class); } @Test public void test() throws Exception { File f = new File(getClass().getResource("lineReader.txt").getPath()); BaleenCollectionReader bcr = getCollectionReader(LineReader.PARAM_FILE, f.getPath(), LineReader.PARAM_CONTENT_EXTRACTOR, "UimaContentExtractor"); assertTrue(bcr.doHasNext()); bcr.getNext(jCas.getCas()); assertEquals("This is the first line", jCas.getDocumentText()); assertEquals(2, JCasUtil.select(jCas, Metadata.class).size()); Metadata md = JCasUtil.selectByIndex(jCas, Metadata.class, 1); assertEquals("lineNumber", md.getKey()); assertEquals("1", md.getValue()); assertTrue(getSource(jCas).endsWith("#1")); jCas.reset(); assertTrue(bcr.doHasNext()); bcr.getNext(jCas.getCas()); assertEquals("This is the second line", jCas.getDocumentText()); assertEquals(2, JCasUtil.select(jCas, Metadata.class).size()); md = JCasUtil.selectByIndex(jCas, Metadata.class, 1); assertEquals("lineNumber", md.getKey()); assertEquals("2", md.getValue()); assertTrue(getSource(jCas).endsWith("#2")); jCas.reset(); assertTrue(bcr.doHasNext()); bcr.getNext(jCas.getCas()); assertEquals("This is the fourth line, but the third one we pick out", jCas.getDocumentText()); md = JCasUtil.selectByIndex(jCas, Metadata.class, 1); assertEquals("lineNumber", md.getKey()); assertEquals("4", md.getValue()); assertTrue(getSource(jCas).endsWith("#4")); jCas.reset(); assertTrue(bcr.doHasNext()); bcr.getNext(jCas.getCas()); assertEquals("This is the sixth line, but the fourth and final one we pick out", jCas.getDocumentText()); md = JCasUtil.selectByIndex(jCas, Metadata.class, 1); assertEquals("lineNumber", md.getKey()); assertEquals("6", md.getValue()); assertTrue(getSource(jCas).endsWith("#6")); jCas.reset(); assertFalse(bcr.doHasNext()); assertFalse(bcr.doHasNext()); bcr.close(); } private String getSource(JCas jCas) { DocumentAnnotation doc = (DocumentAnnotation) jCas.getDocumentAnnotationFs(); return doc.getSourceUri(); } }