new XMLInputSource(JUnitExtension
.getFile("TextAnalysisEngineImplTest/NewlineSegmenter.xml")));
AnalysisEngine tae = UIMAFramework.produceAnalysisEngine(segmenterDesc);
CAS cas = tae.newCAS();
cas.setDocumentText("Line one\nLine two\nLine three");
CasIterator iter = tae.processAndOutputNewCASes(cas);
assertTrue(iter.hasNext());
CAS outCas = iter.next();
assertEquals("Line one", outCas.getDocumentText());
outCas.release();
assertTrue(iter.hasNext());
outCas = iter.next();
assertEquals("Line two", outCas.getDocumentText());
outCas.release();
assertTrue(iter.hasNext());
outCas = iter.next();
assertEquals("Line three", outCas.getDocumentText());
outCas.release();
assertFalse(iter.hasNext());
// aggregate
AnalysisEngineDescription aggSegDesc = UIMAFramework.getXMLParser()
.parseAnalysisEngineDescription(
new XMLInputSource(JUnitExtension
.getFile("TextAnalysisEngineImplTest/AggregateWithSegmenter.xml")));
tae = UIMAFramework.produceAnalysisEngine(aggSegDesc);
cas = tae.newCAS();
cas.setDocumentText("Line one\nLine two\nLine three");
iter = tae.processAndOutputNewCASes(cas);
assertTrue(iter.hasNext());
outCas = iter.next();
assertEquals("Line one", outCas.getDocumentText());
assertEquals("Line one", TestAnnotator.lastDocument);
outCas.release();
assertTrue(iter.hasNext());
outCas = iter.next();
assertEquals("Line two", outCas.getDocumentText());
assertEquals("Line two", TestAnnotator.lastDocument);
outCas.release();
assertTrue(iter.hasNext());
outCas = iter.next();
assertEquals("Line three", outCas.getDocumentText());
assertEquals("Line three", TestAnnotator.lastDocument);
outCas.release();
assertFalse(iter.hasNext());
// Annotator should NOT get the original CAS according to the default flow
assertEquals("Line three", TestAnnotator.lastDocument);
// nested aggregate
AnalysisEngineDescription nestedAggSegDesc = UIMAFramework
.getXMLParser()
.parseAnalysisEngineDescription(
new XMLInputSource(
JUnitExtension
.getFile("TextAnalysisEngineImplTest/AggregateContainingAggregateSegmenter.xml")));
tae = UIMAFramework.produceAnalysisEngine(nestedAggSegDesc);
cas = tae.newCAS();
cas.setDocumentText("Line one\nLine two\nLine three");
iter = tae.processAndOutputNewCASes(cas);
assertTrue(iter.hasNext());
outCas = iter.next();
assertEquals("Line one", outCas.getDocumentText());
assertEquals("Line one", TestAnnotator.lastDocument);
outCas.release();
assertTrue(iter.hasNext());
outCas = iter.next();
assertEquals("Line two", outCas.getDocumentText());
assertEquals("Line two", TestAnnotator.lastDocument);
outCas.release();
assertTrue(iter.hasNext());
outCas = iter.next();
assertEquals("Line three", outCas.getDocumentText());
assertEquals("Line three", TestAnnotator.lastDocument);
outCas.release();
assertFalse(iter.hasNext());
// Annotator should NOT get the original CAS according to the default flow
assertEquals("Line three", TestAnnotator.lastDocument);
// two segmenters
AnalysisEngineDescription twoSegDesc = UIMAFramework.getXMLParser()
.parseAnalysisEngineDescription(
new XMLInputSource(JUnitExtension
.getFile("TextAnalysisEngineImplTest/AggregateWith2Segmenters.xml")));
tae = UIMAFramework.produceAnalysisEngine(twoSegDesc);
cas = tae.newCAS();
cas.setDocumentText("One\tTwo\nThree\tFour");
iter = tae.processAndOutputNewCASes(cas);
assertTrue(iter.hasNext());
outCas = iter.next();
assertEquals("One", outCas.getDocumentText());
assertEquals("One", TestAnnotator.lastDocument);
outCas.release();
assertTrue(iter.hasNext());
outCas = iter.next();
assertEquals("Two", outCas.getDocumentText());
assertEquals("Two", TestAnnotator.lastDocument);
outCas.release();
assertTrue(iter.hasNext());
outCas = iter.next();
assertEquals("Three", outCas.getDocumentText());
assertEquals("Three", TestAnnotator.lastDocument);
outCas.release();
assertTrue(iter.hasNext());
outCas = iter.next();
assertEquals("Four", outCas.getDocumentText());
assertEquals("Four", TestAnnotator.lastDocument);
outCas.release();
assertFalse(iter.hasNext());
// Annotator should NOT get the original CAS according to the default flow
assertEquals("Four", TestAnnotator.lastDocument);
// dropping segments
aggSegDesc = UIMAFramework.getXMLParser().parseAnalysisEngineDescription(
new XMLInputSource(JUnitExtension
.getFile("TextAnalysisEngineImplTest/AggregateSegmenterForDropTest.xml")));
tae = UIMAFramework.produceAnalysisEngine(aggSegDesc);
cas = tae.newCAS();
cas.setDocumentText("Line one\nDROP\nLine two\nDROP\nLine three");
// results should be the same as the first aggregate segmenter test.
// segmetns whose text is DROP should not be output.
iter = tae.processAndOutputNewCASes(cas);
assertTrue(iter.hasNext());
outCas = iter.next();
assertEquals("Line one", outCas.getDocumentText());
assertEquals("Line one", TestAnnotator.lastDocument);
outCas.release();
assertTrue(iter.hasNext());
outCas = iter.next();
assertEquals("Line two", outCas.getDocumentText());
assertEquals("Line two", TestAnnotator.lastDocument);
outCas.release();
assertTrue(iter.hasNext());
outCas = iter.next();
assertEquals("Line three", outCas.getDocumentText());
assertEquals("Line three", TestAnnotator.lastDocument);
outCas.release();
assertFalse(iter.hasNext());
// Annotator should NOT get the original CAS according to the default flow
assertEquals("Line three", TestAnnotator.lastDocument);
} catch (Exception e) {
JUnitExtension.handleException(e);
}