// primitive
AnalysisEngineDescription segmenterDesc = UIMAFramework.getXMLParser()
.parseAnalysisEngineDescription(
new XMLInputSource(JUnitExtension
.getFile("TextAnalysisEngineImplTest/NewlineResegmenter.xml")));
AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(segmenterDesc);
CAS inputCas1 = ae.newCAS();
Type sdiType = inputCas1.getTypeSystem().getType(
"org.apache.uima.examples.SourceDocumentInformation");
Feature uriFeat = sdiType.getFeatureByBaseName("uri");
inputCas1.setDocumentText("This is");
FeatureStructure sdiFS = inputCas1.createFS(sdiType);
sdiFS.setStringValue(uriFeat, "cas1");
inputCas1.getIndexRepository().addFS(sdiFS);
CAS inputCas2 = ae.newCAS();
inputCas2.setDocumentText(" one.\nThis is");
FeatureStructure sdiFS2 = inputCas2.createFS(sdiType);
sdiFS2.setStringValue(uriFeat, "cas2");
inputCas2.getIndexRepository().addFS(sdiFS2);
CAS inputCas3 = ae.newCAS();
inputCas3.setDocumentText(" two.\n");
FeatureStructure sdiFS3 = inputCas3.createFS(sdiType);
sdiFS3.setStringValue(uriFeat, "cas3");
inputCas3.getIndexRepository().addFS(sdiFS3);
// input first CAS. Should be no segments yet.
CasIterator iter = ae.processAndOutputNewCASes(inputCas1);
assertFalse(iter.hasNext());
// input second CAS. We should get back one segment.
iter = ae.processAndOutputNewCASes(inputCas2);
assertTrue(iter.hasNext());
CAS outCas = iter.next();
assertEquals("This is one.", outCas.getDocumentText());
// -- check SourceDocumentInformation FSs
Iterator<AnnotationFS> sdiIter = outCas.getAnnotationIndex(sdiType).iterator();
assertTrue(sdiIter.hasNext());
AnnotationFS outSdiFs = (AnnotationFS) sdiIter.next();
assertEquals("This is", outSdiFs.getCoveredText());
assertEquals("cas1", outSdiFs.getStringValue(uriFeat));
assertTrue(sdiIter.hasNext());
outSdiFs = (AnnotationFS) sdiIter.next();
assertEquals(" one.", outSdiFs.getCoveredText());
assertEquals("cas2", outSdiFs.getStringValue(uriFeat));
assertFalse(sdiIter.hasNext());
// --
assertFalse(iter.hasNext());
// input third CAS. We should get back one more segment.
iter = ae.processAndOutputNewCASes(inputCas3);
assertTrue(iter.hasNext());
outCas = iter.next();
assertEquals("This is two.", outCas.getDocumentText());
// -- check SourceDocumentInformation FSs
sdiIter = outCas.getAnnotationIndex(sdiType).iterator();