blob: 908fa5a6e7dd08407b0c80e20420085e782108ad [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.ctakes.necontexts;
import static org.junit.Assert.assertEquals;
import java.io.File;
import java.util.List;
import org.apache.uima.UimaContext;
import org.apache.uima.analysis_engine.AnalysisEngine;
import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
import org.apache.uima.analysis_engine.annotator.AnnotatorConfigurationException;
import org.apache.uima.jcas.JCas;
import org.apache.uima.jcas.tcas.Annotation;
import org.apache.uima.resource.ResourceInitializationException;
import org.junit.Test;
import org.apache.ctakes.typesystem.type.syntax.BaseToken;
import org.apache.ctakes.typesystem.type.textsem.IdentifiedAnnotation;
import org.apache.ctakes.typesystem.type.syntax.PunctuationToken;
import org.apache.ctakes.typesystem.type.textspan.Sentence;
import org.apache.ctakes.utils.test.TestUtil;
public class ContextAnnotatorTests {
static String unexpectedParamValueMsg = "unexpected parameter value for descriptor file desc/test/ContextTestAnnotator.xml for param: ";
/**
* This test tests ContextAnnotator.getLeftScopeTokens(JCas, Annotation,
* Annotation). The method takes in annotations for the focus and window so
* the descriptor file parameter settings for FocusAnnotationClass and
* WindowAnnotationClass are effectively ignored by the method. This means
* we can pass any annotation in as the focus and window test the results.
*
* @see ContextAnnotator#getLeftScopeContextAnnotations(JCas, Annotation, Annotation)
* @throws ResourceInitializationException
* @throws AnalysisEngineProcessException
*/
@Test
public void testLeftScopeTokens() throws ResourceInitializationException, AnalysisEngineProcessException {
String descriptor = "desc/test/TestContextAnnotator.xml";
AnalysisEngine contextAE = TestUtil.getAE(new File(descriptor));
UimaContext uimaContext = contextAE.getUimaContext();
ContextAnnotator contextAnnotator = new ContextAnnotator();
// contextAnnotator.initialize(uimaContext);
//
// TestUtil.testConfigParam(uimaContext, descriptor, ContextAnnotator.MAX_LEFT_SCOPE_SIZE_PARAM, new Integer(8));
// TestUtil.testConfigParam(uimaContext, descriptor, ContextAnnotator.CONTEXT_ANNOTATION_CLASS_PARAM, "org.apache.ctakes.typesystem.type.syntax.BaseToken");
//
// AnalysisEngine segmentTokenSentenceAE = TestUtil.getAE(new File("desc/test/SegmentTokenSentenceAggregate.xml"));
// // this gives us a JCas that has segments, tokens, and sentences
// JCas jCas = TestUtil
// .processAE(
// segmentTokenSentenceAE,
// "A farmer went trotting upon his gray mare, Bumpety, bumpety, bump, With his daughter behind him, so rosy and fair, Lumpety, lumpety, lump.");
//
// BaseToken firstToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 0);
// BaseToken secondToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 1);
// BaseToken thirdToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 2);
// BaseToken fifthToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 4);
// BaseToken eighthToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 7);
// BaseToken ninthToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 8);
// BaseToken tenthToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 9);
// BaseToken penultimateToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 30);
// BaseToken lastToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 31);
// Sentence sentence = TestUtil.getFeatureStructureAtIndex(jCas, Sentence.class, 0);
//
// // perform some sanity checks to make sure that we have the annotations
// // we think we have.
// assertEquals("A", firstToken.getCoveredText());
// assertEquals("farmer", secondToken.getCoveredText());
// assertEquals("went", thirdToken.getCoveredText());
// assertEquals("upon", fifthToken.getCoveredText());
// assertEquals("mare", eighthToken.getCoveredText());
// assertEquals(",", ninthToken.getCoveredText());
// assertEquals("Bumpety", tenthToken.getCoveredText());
// assertEquals("lump", penultimateToken.getCoveredText());
// assertEquals(".", lastToken.getCoveredText());
// assertEquals(0, sentence.getBegin());
// assertEquals(138, sentence.getEnd());
//
// // if focus is the first token then the left tokens should be empty
// Annotation focus = firstToken;
// List<Annotation> leftScopeTokens = contextAnnotator.getLeftScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(0, leftScopeTokens.size());
//
// // if focus is the second token then the left tokens should contain the
// // first token
// focus = secondToken;
// leftScopeTokens = contextAnnotator.getLeftScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(1, leftScopeTokens.size());
// assertEquals(firstToken, leftScopeTokens.get(0));
//
// // if focus is the third token then the left tokens should contain the
// // first two tokens
// focus = thirdToken;
// leftScopeTokens = contextAnnotator.getLeftScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(2, leftScopeTokens.size());
// assertEquals(firstToken, leftScopeTokens.get(0));
// assertEquals(secondToken, leftScopeTokens.get(1));
//
// // if focus is the ninth token then the left tokens should contain the
// // first eight tokens
// focus = ninthToken;
// leftScopeTokens = contextAnnotator.getLeftScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(8, leftScopeTokens.size());
// assertEquals(firstToken, leftScopeTokens.get(0));
// assertEquals(secondToken, leftScopeTokens.get(1));
// assertEquals(thirdToken, leftScopeTokens.get(2));
// assertEquals(eighthToken, leftScopeTokens.get(7));
//
// // if focus is the tenth token then the left tokens should contain the
// // eight tokens beginning with the second
// focus = tenthToken;
// leftScopeTokens = contextAnnotator.getLeftScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(8, leftScopeTokens.size());
// assertEquals(secondToken, leftScopeTokens.get(0));
// assertEquals(thirdToken, leftScopeTokens.get(1));
// assertEquals(eighthToken, leftScopeTokens.get(6));
// assertEquals(ninthToken, leftScopeTokens.get(7));
//
// focus = new PunctuationToken(jCas, 2, 12);
// assertEquals("farmer wen", focus.getCoveredText());
// leftScopeTokens = contextAnnotator.getLeftScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(1, leftScopeTokens.size());
// assertEquals(firstToken, leftScopeTokens.get(0));
// focus = new PunctuationToken(jCas, 1, 13);
// assertEquals(" farmer went", focus.getCoveredText());
// leftScopeTokens = contextAnnotator.getLeftScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(1, leftScopeTokens.size());
// assertEquals(firstToken, leftScopeTokens.get(0));
//
// // if focus is a token that overlaps on the left with other tokens, the
// // leftScopeTokens
// // should not include the partially overlapping tokens on the left
// focus = new PunctuationToken(jCas, 3, 11);
// assertEquals("armer we", focus.getCoveredText());
// leftScopeTokens = contextAnnotator.getLeftScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(1, leftScopeTokens.size());
// assertEquals(firstToken, leftScopeTokens.get(0));
// // it should be the same if the focus type is different
// focus = new IdentifiedAnnotation(jCas, 3, 11);
// assertEquals("armer we", focus.getCoveredText());
// leftScopeTokens = contextAnnotator.getLeftScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(1, leftScopeTokens.size());
// assertEquals(firstToken, leftScopeTokens.get(0));
//
// // if focus annotation is the last token then there should be 8 tokens
// // returned.
// focus = lastToken;
// leftScopeTokens = contextAnnotator.getLeftScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(8, leftScopeTokens.size());
//
// // "A farmer went trotting upon his gray mare"
// focus = new IdentifiedAnnotation(jCas, 9, 27);
// assertEquals("went trotting upon", focus.getCoveredText());
// leftScopeTokens = contextAnnotator.getLeftScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(2, leftScopeTokens.size());
// assertEquals(firstToken, leftScopeTokens.get(0));
// assertEquals(secondToken, leftScopeTokens.get(1));
//
// focus = new IdentifiedAnnotation(jCas, 7, 27);
// assertEquals("r went trotting upon", focus.getCoveredText());
// leftScopeTokens = contextAnnotator.getLeftScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(1, leftScopeTokens.size());
// assertEquals(firstToken, leftScopeTokens.get(0));
//
// focus = new IdentifiedAnnotation(jCas, 11, 27);
// assertEquals("nt trotting upon", focus.getCoveredText());
// leftScopeTokens = contextAnnotator.getLeftScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(2, leftScopeTokens.size());
// assertEquals(firstToken, leftScopeTokens.get(0));
// assertEquals(secondToken, leftScopeTokens.get(1));
//
// // If there are no complete words to left of focus because the window
// // cuts off the token - e.g. farmer, then
// // the token farmer should not be returned as part of left tokens
// sentence = new Sentence(jCas, 5, 27);
// assertEquals("mer went trotting upon", sentence.getCoveredText());
// focus = new IdentifiedAnnotation(jCas, 9, 27);
// assertEquals("went trotting upon", focus.getCoveredText());
// leftScopeTokens = contextAnnotator.getLeftScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(0, leftScopeTokens.size());
//
// // there are no complete tokens to the left of "went" inside the new
// // window
// focus = thirdToken;
// leftScopeTokens = contextAnnotator.getLeftScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(0, leftScopeTokens.size());
//
// // there are two complete tokens to the left of "upon" inside the new
// // window
// focus = fifthToken;
// leftScopeTokens = contextAnnotator.getLeftScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(2, leftScopeTokens.size());
// assertEquals(thirdToken, leftScopeTokens.get(0));
// assertEquals("trotting", leftScopeTokens.get(1).getCoveredText());
//
// /*
// * there are three complete tokens to the left of the first comma (the
// * tenth token) inside the new window but the tenth token itself is not
// * inside the window and so an empty array is returned.
// */
// focus = tenthToken;
// leftScopeTokens = contextAnnotator.getLeftScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(0, leftScopeTokens.size());
//
// focus = new BaseToken(jCas, 13,14);
// leftScopeTokens = contextAnnotator.getLeftScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(1, leftScopeTokens.size());
}
/**
* This test tests ContextAnnotator.getRightScopeTokens(JCas, Annotation,
* Annotation). The method takes in annotations for the focus and window so
* the descriptor file parameter settings for FocusAnnotationClass and
* WindowAnnotationClass are effectively ignored by the method. This means
* we can pass any annotation in as the focus and window test the results.
*
* @see ContextAnnotator#getRightScopeContextAnnotations(JCas, Annotation, Annotation)
* @throws ResourceInitializationException
* @throws AnalysisEngineProcessException
*/
@Test
public void testRightScopeTokens() throws ResourceInitializationException, AnalysisEngineProcessException {
String descriptor = "desc/test/TestContextAnnotator.xml";
AnalysisEngine contextAE = TestUtil.getAE(new File(descriptor));
UimaContext uimaContext = contextAE.getUimaContext();
ContextAnnotator contextAnnotator = new ContextAnnotator();
// contextAnnotator.initialize(uimaContext);
//
// TestUtil.testConfigParam(uimaContext, descriptor, ContextAnnotator.MAX_RIGHT_SCOPE_SIZE_PARAM, new Integer(4));
// TestUtil.testConfigParam(uimaContext, descriptor, ContextAnnotator.CONTEXT_ANNOTATION_CLASS_PARAM, "org.apache.ctakes.typesystem.type.syntax.BaseToken");
//
// AnalysisEngine segmentTokenSentenceAE = TestUtil.getAE(new File("desc/test/SegmentTokenSentenceAggregate.xml"));
// // this gives us a JCas that has segments, tokens, and sentences
// JCas jCas = TestUtil
// .processAE(
// segmentTokenSentenceAE,
// "A farmer went trotting upon his gray mare, Bumpety, bumpety, bump, With his daughter behind him, so rosy and fair, Lumpety, lumpety, lump.");
//
// BaseToken firstToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 0);
// BaseToken secondToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 1);
// BaseToken thirdToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 2);
// BaseToken fifthToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 4);
// BaseToken eighthToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 7);
// BaseToken ninthToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 8);
// BaseToken tenthToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 9);
// BaseToken fifthFromEndToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 27);
// BaseToken fourthFromEndToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 28);
// BaseToken thirdFromEndToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 29);
// BaseToken penultimateToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 30);
// BaseToken lastToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 31);
// Sentence sentence = TestUtil.getFeatureStructureAtIndex(jCas, Sentence.class, 0);
//
// // perform some sanity checks to make sure that we have the annotations
// // we think we have.
// assertEquals("A", firstToken.getCoveredText());
// assertEquals("farmer", secondToken.getCoveredText());
// assertEquals("went", thirdToken.getCoveredText());
// assertEquals("upon", fifthToken.getCoveredText());
// assertEquals("mare", eighthToken.getCoveredText());
// assertEquals(",", ninthToken.getCoveredText());
// assertEquals("Bumpety", tenthToken.getCoveredText());
// assertEquals(",", fifthFromEndToken.getCoveredText());
// assertEquals("lumpety", fourthFromEndToken.getCoveredText());
// assertEquals(",", thirdFromEndToken.getCoveredText());
// assertEquals("lump", penultimateToken.getCoveredText());
// assertEquals(".", lastToken.getCoveredText());
// assertEquals(0, sentence.getBegin());
// assertEquals(138, sentence.getEnd());
//
// // if focus is the first token then the right tokens should number 4
// Annotation focus = firstToken;
// List<Annotation> rightScopeTokens = contextAnnotator.getRightScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(4, rightScopeTokens.size());
// assertEquals(secondToken, rightScopeTokens.get(0));
// assertEquals(thirdToken, rightScopeTokens.get(1));
// assertEquals("trotting", rightScopeTokens.get(2).getCoveredText());
// assertEquals(fifthToken, rightScopeTokens.get(3));
//
// // if focus is the second token then the right tokens should number 4
// focus = secondToken;
// rightScopeTokens = contextAnnotator.getRightScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(4, rightScopeTokens.size());
// assertEquals(thirdToken, rightScopeTokens.get(0));
// assertEquals("trotting", rightScopeTokens.get(1).getCoveredText());
// assertEquals(fifthToken, rightScopeTokens.get(2));
// assertEquals("his", rightScopeTokens.get(3).getCoveredText());
//
// // if focus is the ninth token then the left tokens should number 4
// focus = ninthToken;
// rightScopeTokens = contextAnnotator.getRightScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(4, rightScopeTokens.size());
// assertEquals("Bumpety", rightScopeTokens.get(0).getCoveredText());
// assertEquals(",", rightScopeTokens.get(1).getCoveredText());
// assertEquals("bumpety", rightScopeTokens.get(2).getCoveredText());
// assertEquals(",", rightScopeTokens.get(3).getCoveredText());
//
// focus = new PunctuationToken(jCas, 2, 12);
// assertEquals("farmer wen", focus.getCoveredText());
// rightScopeTokens = contextAnnotator.getRightScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(4, rightScopeTokens.size());
// assertEquals("trotting", rightScopeTokens.get(0).getCoveredText());
// assertEquals("upon", rightScopeTokens.get(1).getCoveredText());
// assertEquals("his", rightScopeTokens.get(2).getCoveredText());
// assertEquals("gray", rightScopeTokens.get(3).getCoveredText());
//
// // if focus annotation is the last token then the right tokens should number 0
// focus = lastToken;
// rightScopeTokens = contextAnnotator.getRightScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(0, rightScopeTokens.size());
//
// // if focus annotation is the fifth-from-end token then the right tokens should number 4
// focus = fifthFromEndToken;
// rightScopeTokens = contextAnnotator.getRightScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(4, rightScopeTokens.size());
// assertEquals(fourthFromEndToken, rightScopeTokens.get(0));
// assertEquals(thirdFromEndToken, rightScopeTokens.get(1));
// assertEquals(penultimateToken, rightScopeTokens.get(2));
// assertEquals(lastToken, rightScopeTokens.get(3));
//
// // if focus annotation is the fourth-from-end token then the right tokens should number 3
// focus = fourthFromEndToken;
// rightScopeTokens = contextAnnotator.getRightScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(3, rightScopeTokens.size());
// assertEquals(thirdFromEndToken, rightScopeTokens.get(0));
// assertEquals(penultimateToken, rightScopeTokens.get(1));
// assertEquals(lastToken, rightScopeTokens.get(2));
//
// // if focus annotation is the third-from-end token then the right tokens should number 2
// focus = thirdFromEndToken;
// rightScopeTokens = contextAnnotator.getRightScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(2, rightScopeTokens.size());
// assertEquals(penultimateToken, rightScopeTokens.get(0));
// assertEquals(lastToken, rightScopeTokens.get(1));
//
// focus = new IdentifiedAnnotation(jCas, 9, 27);
// assertEquals("went trotting upon", focus.getCoveredText());
// rightScopeTokens = contextAnnotator.getRightScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(4, rightScopeTokens.size());
// assertEquals("his", rightScopeTokens.get(0).getCoveredText());
// assertEquals("gray", rightScopeTokens.get(1).getCoveredText());
// assertEquals("mare", rightScopeTokens.get(2).getCoveredText());
// assertEquals(",", rightScopeTokens.get(3).getCoveredText());
//
// focus = new IdentifiedAnnotation(jCas, 9, 29);
// assertEquals("went trotting upon h", focus.getCoveredText());
// rightScopeTokens = contextAnnotator.getRightScopeContextAnnotations(jCas, focus, sentence);
// assertEquals("gray", rightScopeTokens.get(0).getCoveredText());
// assertEquals("mare", rightScopeTokens.get(1).getCoveredText());
// assertEquals(ninthToken, rightScopeTokens.get(2));
// assertEquals(tenthToken, rightScopeTokens.get(3));
//
// focus = new BaseToken(jCas, 27, 28);
// assertEquals(" ", focus.getCoveredText());
// rightScopeTokens = contextAnnotator.getRightScopeContextAnnotations(jCas, focus, sentence);
// assertEquals("his", rightScopeTokens.get(0).getCoveredText());
// assertEquals("gray", rightScopeTokens.get(1).getCoveredText());
// assertEquals("mare", rightScopeTokens.get(2).getCoveredText());
// assertEquals(",", rightScopeTokens.get(3).getCoveredText());
//
//
// sentence = new Sentence(jCas, 120, 136);
// System.out.println(sentence.getCoveredText());
// assertEquals("ty, lumpety, lum", sentence.getCoveredText());
// focus = new IdentifiedAnnotation(jCas, 124, 131);
// assertEquals("lumpety", focus.getCoveredText());
// rightScopeTokens = contextAnnotator.getRightScopeContextAnnotations(jCas, focus, sentence);
// assertEquals(1, rightScopeTokens.size());
}
/**
* The test tests ContextAnnotator.getMiddleScopeTokens(JCas, Annotation).
* The method takes in an annotation for the focus and so the descriptor
* file parameter setting for FocusAnnotationClass is effectively ignored by
* the method. This means we can pass any annotation in as the focus and
* test the results. Similarly, the WindowAnnotationClass can be ignored as
* this is used to determine the focus annotations before this method is
* called. However, the list of returned annotations will be of the type
* specified in the parameter TokenAnnotationClass.
*
* @see ContextAnnotator#getMiddleScopeContextAnnotations(JCas, Annotation)
* @throws ResourceInitializationException
* @throws AnalysisEngineProcessException
*/
@Test
public void testMiddleScopeTokens() throws ResourceInitializationException, AnalysisEngineProcessException {
//TODO: Pei- For unit tests, we should wire up the pipeline programmatically.
//We can use uimafit instead of xml descriptor files.
String descriptor = "desc/test/TestContextAnnotator.xml";
AnalysisEngine contextAE = TestUtil.getAE(new File(descriptor));
UimaContext uimaContext = contextAE.getUimaContext();
ContextAnnotator contextAnnotator = new ContextAnnotator();
// contextAnnotator.initialize(uimaContext);
//
// TestUtil.testConfigParam(uimaContext, descriptor, ContextAnnotator.CONTEXT_ANNOTATION_CLASS_PARAM, "org.apache.ctakes.typesystem.type.syntax.BaseToken");
//
//
// AnalysisEngine segmentTokenSentenceAE = TestUtil.getAE(new File("desc/test/SegmentTokenSentenceAggregate.xml"));
// // this gives us a JCas that has segments, tokens, and sentences
// JCas jCas = TestUtil
// .processAE(
// segmentTokenSentenceAE,
// "A farmer went trotting upon his gray mare, Bumpety, bumpety, bump, With his daughter behind him, so rosy and fair, Lumpety, lumpety, lump.");
//
// BaseToken firstToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 0);
// BaseToken secondToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 1);
// BaseToken thirdToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 2);
// BaseToken penultimateToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 30);
// BaseToken lastToken = TestUtil.getFeatureStructureAtIndex(jCas, BaseToken.class, 31);
// Sentence sentence = TestUtil.getFeatureStructureAtIndex(jCas, Sentence.class, 0);
//
// // some sanity checks to verify that we have the tokens and sentence we
// // think we have.
// assertEquals("A", firstToken.getCoveredText());
// assertEquals("farmer", secondToken.getCoveredText());
// assertEquals("went", thirdToken.getCoveredText());
// assertEquals("lump", penultimateToken.getCoveredText());
// assertEquals(".", lastToken.getCoveredText());
// assertEquals(0, sentence.getBegin());
// assertEquals(138, sentence.getEnd());
//
// // if focus is the first token then the middle tokens should consist of
// // that token
// Annotation focus = firstToken;
// List<Annotation> middleScopeTokens = contextAnnotator.getMiddleScopeContextAnnotations(jCas, focus);
// assertEquals(1, middleScopeTokens.size());
// assertEquals(focus, middleScopeTokens.get(0));
//
// // if focus is the sentence, then the middle tokens should consist of
// // all of the tokens in the sentence
// focus = sentence;
// middleScopeTokens = contextAnnotator.getMiddleScopeContextAnnotations(jCas, focus);
// assertEquals(32, middleScopeTokens.size());
// assertEquals(firstToken, middleScopeTokens.get(0));
// assertEquals(secondToken, middleScopeTokens.get(1));
// assertEquals(penultimateToken, middleScopeTokens.get(30));
// assertEquals(lastToken, middleScopeTokens.get(31));
//
// // if focus is a token that contains within it other tokens, then the
// // middle tokens should consist of only the tokens that are completely
// // inside the token and not tokens that are partially inside and not the
// // large token itself.
// focus = new PunctuationToken(jCas, 2, 12);
// assertEquals("farmer wen", focus.getCoveredText());
// middleScopeTokens = contextAnnotator.getMiddleScopeContextAnnotations(jCas, focus);
// assertEquals(1, middleScopeTokens.size());
// assertEquals(secondToken, middleScopeTokens.get(0));
// focus = new PunctuationToken(jCas, 1, 13);
// assertEquals(" farmer went", focus.getCoveredText());
// middleScopeTokens = contextAnnotator.getMiddleScopeContextAnnotations(jCas, focus);
// assertEquals(2, middleScopeTokens.size());
// assertEquals(secondToken, middleScopeTokens.get(0));
// assertEquals("went", middleScopeTokens.get(1).getCoveredText());
//
// // if focus is a token overlaps with other tokens, but does not
// // completely contain other tokens, then middle tokens should contain
// // that one token
// focus = new PunctuationToken(jCas, 3, 11);
// assertEquals("armer we", focus.getCoveredText());
// middleScopeTokens = contextAnnotator.getMiddleScopeContextAnnotations(jCas, focus);
// assertEquals(1, middleScopeTokens.size());
//
// // if focus is a named entity that overlaps with other tokens, but does
// // not completely contain other tokens, then middle tokens should should
// // be empty
// focus = new IdentifiedAnnotation(jCas, 3, 11);
// assertEquals("armer we", focus.getCoveredText());
// middleScopeTokens = contextAnnotator.getMiddleScopeContextAnnotations(jCas, focus);
// assertEquals(0, middleScopeTokens.size());
//
// focus = new IdentifiedAnnotation(jCas, 0, 13);
// assertEquals("A farmer went", focus.getCoveredText());
// middleScopeTokens = contextAnnotator.getMiddleScopeContextAnnotations(jCas, focus);
// assertEquals(3, middleScopeTokens.size());
// assertEquals(firstToken, middleScopeTokens.get(0));
// assertEquals(secondToken, middleScopeTokens.get(1));
// assertEquals(thirdToken, middleScopeTokens.get(2));
}
@Test
public void testParseScopeOrder() throws AnnotatorConfigurationException {
ContextAnnotator ca = new ContextAnnotator();
ca.parseScopeOrder(new String[] { "MIDDLE", "LEFT", "RIGHT", "ALL" });
assertEquals(4, ca.scopes.size());
assertEquals(ContextAnnotator.MIDDLE_SCOPE, (int)ca.scopes.get(0));
assertEquals(ContextAnnotator.LEFT_SCOPE, (int)ca.scopes.get(1));
assertEquals(ContextAnnotator.RIGHT_SCOPE, (int)ca.scopes.get(2));
assertEquals(ContextAnnotator.ALL_SCOPE, (int)ca.scopes.get(3));
}
}