You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by pk...@apache.org on 2014/02/06 15:43:55 UTC
svn commit: r1565285 - in /uima/ruta/trunk/ruta-core/src:
main/java/org/apache/uima/ruta/ main/java/org/apache/uima/ruta/action/
main/java/org/apache/uima/ruta/condition/
main/java/org/apache/uima/ruta/expression/
main/java/org/apache/uima/ruta/rule/ t...
Author: pkluegl
Date: Thu Feb 6 14:43:55 2014
New Revision: 1565285
URL: http://svn.apache.org/r1565285
Log:
UIMA-3598
- evaluate inner matches also when complete composed element matched on nothing
- additionally organized imports and fixed another potential bug
Added:
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/OptionalDisjunctiveBeforeAnchoringTest.java (with props)
Modified:
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/CallAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/GatherAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ImplicitFeatureAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/UnmarkAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/UnmarkAllAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ContextCountCondition.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ImplicitCondition.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/IsCondition.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PartOfCondition.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PartOfNeqCondition.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/RutaExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/ComposedRuleElement.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RuleMatch.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaRuleElement.java
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/ImportStatementsTest.java
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java?rev=1565285&r1=1565284&r2=1565285&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java Thu Feb 6 14:43:55 2014
@@ -22,8 +22,15 @@ package org.apache.uima.ruta;
import static org.apache.uima.util.Level.SEVERE;
import java.io.IOException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
import java.util.Map.Entry;
+import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/CallAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/CallAction.java?rev=1565285&r1=1565284&r2=1565285&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/CallAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/CallAction.java Thu Feb 6 14:43:55 2014
@@ -23,7 +23,6 @@ import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import java.util.TreeMap;
import org.apache.uima.analysis_engine.AnalysisEngine;
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/GatherAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/GatherAction.java?rev=1565285&r1=1565284&r2=1565285&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/GatherAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/GatherAction.java Thu Feb 6 14:43:55 2014
@@ -25,7 +25,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
-import java.util.Set;
import org.apache.commons.collections.CollectionUtils;
import org.apache.uima.cas.FSIterator;
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ImplicitFeatureAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ImplicitFeatureAction.java?rev=1565285&r1=1565284&r2=1565285&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ImplicitFeatureAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ImplicitFeatureAction.java Thu Feb 6 14:43:55 2014
@@ -23,7 +23,6 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
import java.util.List;
-import java.util.Set;
import java.util.TreeSet;
import org.apache.commons.collections.CollectionUtils;
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/UnmarkAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/UnmarkAction.java?rev=1565285&r1=1565284&r2=1565285&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/UnmarkAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/UnmarkAction.java Thu Feb 6 14:43:55 2014
@@ -22,7 +22,6 @@ package org.apache.uima.ruta.action;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import java.util.Set;
import org.apache.uima.cas.Type;
import org.apache.uima.cas.text.AnnotationFS;
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/UnmarkAllAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/UnmarkAllAction.java?rev=1565285&r1=1565284&r2=1565285&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/UnmarkAllAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/UnmarkAllAction.java Thu Feb 6 14:43:55 2014
@@ -23,7 +23,6 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
-import java.util.Set;
import org.apache.uima.cas.Type;
import org.apache.uima.cas.TypeSystem;
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ContextCountCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ContextCountCondition.java?rev=1565285&r1=1565284&r2=1565285&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ContextCountCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ContextCountCondition.java Thu Feb 6 14:43:55 2014
@@ -22,7 +22,6 @@ package org.apache.uima.ruta.condition;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import java.util.Set;
import org.apache.uima.cas.Type;
import org.apache.uima.cas.text.AnnotationFS;
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ImplicitCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ImplicitCondition.java?rev=1565285&r1=1565284&r2=1565285&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ImplicitCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ImplicitCondition.java Thu Feb 6 14:43:55 2014
@@ -22,7 +22,6 @@ package org.apache.uima.ruta.condition;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import java.util.Set;
import org.apache.commons.collections.CollectionUtils;
import org.apache.uima.cas.Type;
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/IsCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/IsCondition.java?rev=1565285&r1=1565284&r2=1565285&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/IsCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/IsCondition.java Thu Feb 6 14:43:55 2014
@@ -21,7 +21,6 @@ package org.apache.uima.ruta.condition;
import java.util.Collection;
import java.util.List;
-import java.util.Set;
import org.apache.uima.cas.Type;
import org.apache.uima.cas.text.AnnotationFS;
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PartOfCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PartOfCondition.java?rev=1565285&r1=1565284&r2=1565285&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PartOfCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PartOfCondition.java Thu Feb 6 14:43:55 2014
@@ -21,7 +21,6 @@ package org.apache.uima.ruta.condition;
import java.util.Collection;
import java.util.List;
-import java.util.Set;
import org.apache.uima.cas.Type;
import org.apache.uima.cas.text.AnnotationFS;
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PartOfNeqCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PartOfNeqCondition.java?rev=1565285&r1=1565284&r2=1565285&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PartOfNeqCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PartOfNeqCondition.java Thu Feb 6 14:43:55 2014
@@ -21,7 +21,6 @@ package org.apache.uima.ruta.condition;
import java.util.Collection;
import java.util.List;
-import java.util.Set;
import org.apache.uima.cas.Type;
import org.apache.uima.cas.text.AnnotationFS;
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/RutaExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/RutaExpression.java?rev=1565285&r1=1565284&r2=1565285&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/RutaExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/RutaExpression.java Thu Feb 6 14:43:55 2014
@@ -23,7 +23,6 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import java.util.Set;
import org.apache.commons.collections.CollectionUtils;
import org.apache.uima.cas.Type;
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/ComposedRuleElement.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/ComposedRuleElement.java?rev=1565285&r1=1565284&r2=1565285&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/ComposedRuleElement.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/ComposedRuleElement.java Thu Feb 6 14:43:55 2014
@@ -90,12 +90,12 @@ public class ComposedRuleElement extends
}
Map<RuleMatch, ComposedRuleElementMatch> mergedMatches = mergeDisjunctiveRuleMatches(
- ruleMatches, true);
+ ruleMatches, true, stream);
Set<Entry<RuleMatch, ComposedRuleElementMatch>> entrySet = mergedMatches.entrySet();
for (Entry<RuleMatch, ComposedRuleElementMatch> entry : entrySet) {
RuleMatch eachRuleMatch = entry.getKey();
ComposedRuleElementMatch eachComposedMatch = entry.getValue();
- AnnotationFS lastAnnotation = eachRuleMatch.getLastMatchedAnnotation(this, true);
+ AnnotationFS lastAnnotation = eachRuleMatch.getLastMatchedAnnotation(this, true, null, parent, stream);
boolean failed = !eachComposedMatch.matched();
List<RuleMatch> fallbackContinue = fallbackContinue(true, failed, lastAnnotation,
eachRuleMatch, ruleApply, eachComposedMatch, null, entryPoint, stream, crowd);
@@ -133,7 +133,7 @@ public class ComposedRuleElement extends
for (Entry<RuleMatch, ComposedRuleElementMatch> entry : entrySet) {
RuleMatch eachRuleMatch = entry.getKey();
ComposedRuleElementMatch eachComposedMatch = entry.getValue();
- AnnotationFS lastAnnotation = eachRuleMatch.getLastMatchedAnnotation(this, true);
+ AnnotationFS lastAnnotation = eachRuleMatch.getLastMatchedAnnotation(this, true, null, parent, stream);
boolean failed = !eachComposedMatch.matched();
List<RuleMatch> fallbackContinue = fallbackContinue(true, failed, lastAnnotation,
eachRuleMatch, ruleApply, eachComposedMatch, null, entryPoint, stream, crowd);
@@ -144,7 +144,7 @@ public class ComposedRuleElement extends
}
private AnnotationFS getPrefixAnnotation(RuleMatch ruleMatch, RutaStream stream) {
- AnnotationFS lastMatchedAnnotation = ruleMatch.getLastMatchedAnnotation(this, true);
+ AnnotationFS lastMatchedAnnotation = ruleMatch.getLastMatchedAnnotation(this, true, null, parent, stream);
if (lastMatchedAnnotation.getBegin() == 0) {
JCas jCas = stream.getJCas();
AnnotationFS dummy = new RutaFrame(jCas, 0, 0);
@@ -195,12 +195,12 @@ public class ComposedRuleElement extends
}
// TODO sort matches, no need to merge them, right?!
Map<RuleMatch, ComposedRuleElementMatch> mergedMatches = mergeDisjunctiveRuleMatches(
- ruleMatches, after);
+ ruleMatches, after, stream);
Set<Entry<RuleMatch, ComposedRuleElementMatch>> entrySet = mergedMatches.entrySet();
for (Entry<RuleMatch, ComposedRuleElementMatch> entry : entrySet) {
RuleMatch eachRuleMatch = entry.getKey();
ComposedRuleElementMatch eachComposedMatch = entry.getValue();
- AnnotationFS lastAnnotation = eachRuleMatch.getLastMatchedAnnotation(this, after);
+ AnnotationFS lastAnnotation = eachRuleMatch.getLastMatchedAnnotation(this, after, annotation, parent, stream);
boolean failed = !eachComposedMatch.matched();
List<RuleMatch> fallbackContinue = fallbackContinue(after, failed, lastAnnotation,
eachRuleMatch, ruleApply, eachComposedMatch, sideStepOrigin, entryPoint, stream,
@@ -231,7 +231,7 @@ public class ComposedRuleElement extends
for (Entry<RuleMatch, ComposedRuleElementMatch> entry : entrySet) {
RuleMatch eachRuleMatch = entry.getKey();
ComposedRuleElementMatch eachComposedMatch = entry.getValue();
- AnnotationFS lastAnnotation = eachRuleMatch.getLastMatchedAnnotation(this, after);
+ AnnotationFS lastAnnotation = eachRuleMatch.getLastMatchedAnnotation(this, after, annotation, parent, stream);
boolean failed = !eachComposedMatch.matched();
List<RuleMatch> fallbackContinue = fallbackContinue(after, failed, lastAnnotation,
eachRuleMatch, ruleApply, eachComposedMatch, sideStepOrigin, entryPoint, stream,
@@ -278,7 +278,7 @@ public class ComposedRuleElement extends
}
private Map<RuleMatch, ComposedRuleElementMatch> mergeDisjunctiveRuleMatches(
- Map<RuleMatch, ComposedRuleElementMatch> ruleMatches, boolean direction) {
+ Map<RuleMatch, ComposedRuleElementMatch> ruleMatches, boolean direction, RutaStream stream) {
// TODO hotfix: this needs a correct implementation
Map<RuleMatch, ComposedRuleElementMatch> result = new TreeMap<RuleMatch, ComposedRuleElementMatch>(
ruleMatchComparator);
@@ -292,7 +292,7 @@ public class ComposedRuleElement extends
result.put(ruleMatch, elementMatch);
} else {
AnnotationFS lastMatchedAnnotation = ruleMatch.getLastMatchedAnnotation(getFirstElement(),
- direction);
+ direction, null, parent, stream);
if (largestEntry == null) {
largestEntry = entry;
largestAnnotation = lastMatchedAnnotation;
@@ -483,6 +483,7 @@ public class ComposedRuleElement extends
InferenceCrowd crowd) {
List<AnnotationFS> textsMatched = match.getTextsMatched();
if (textsMatched == null || textsMatched.isEmpty()) {
+ match.evaluateInnerMatches(true, stream);
return;
}
int begin = textsMatched.get(0).getBegin();
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RuleMatch.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RuleMatch.java?rev=1565285&r1=1565284&r2=1565285&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RuleMatch.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RuleMatch.java Thu Feb 6 14:43:55 2014
@@ -29,7 +29,9 @@ import java.util.Set;
import org.apache.uima.cas.CAS;
import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.ruta.RutaBlock;
import org.apache.uima.ruta.RutaElement;
+import org.apache.uima.ruta.RutaStream;
import org.apache.uima.ruta.ScriptApply;
import org.apache.uima.ruta.engine.RutaEngine;
@@ -68,10 +70,14 @@ public class RuleMatch extends AbstractR
return getMatchedAnnotations(element.getSelfIndexList(), element.getContainer());
}
- public AnnotationFS getLastMatchedAnnotation(RuleElement element, boolean direction) {
+ public AnnotationFS getLastMatchedAnnotation(RuleElement element, boolean direction, AnnotationFS annotation, RutaBlock parent, RutaStream stream) {
List<AnnotationFS> matchedAnnotations = getMatchedAnnotationsOf(element);
if (matchedAnnotations.isEmpty()) {
- return null;
+ if(element.getQuantifier().isOptional(parent, stream)) {
+ return annotation;
+ } else {
+ return null;
+ }
}
if (direction) {
return matchedAnnotations.get(matchedAnnotations.size() - 1);
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaRuleElement.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaRuleElement.java?rev=1565285&r1=1565284&r2=1565285&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaRuleElement.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaRuleElement.java Thu Feb 6 14:43:55 2014
@@ -376,7 +376,7 @@ public class RutaRuleElement extends Abs
if (featureExpression != null) {
base = matcher.match(annotation, stream, getParent());
}
- }
+ }
List<AnnotationFS> textsMatched = new ArrayList<AnnotationFS>(1);
if (base) {
for (AbstractRutaCondition condition : conditions) {
Modified: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/ImportStatementsTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/ImportStatementsTest.java?rev=1565285&r1=1565284&r2=1565285&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/ImportStatementsTest.java (original)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/ImportStatementsTest.java Thu Feb 6 14:43:55 2014
@@ -19,6 +19,14 @@
package org.apache.uima.ruta;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
import org.apache.uima.analysis_engine.AnalysisEngine;
import org.apache.uima.analysis_engine.AnalysisEngineDescription;
import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
@@ -33,14 +41,6 @@ import org.apache.uima.ruta.engine.RutaE
import org.apache.uima.util.InvalidXMLException;
import org.junit.Test;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
/**
* Test various import statements syntaxes (see UIMA-3303).
*/
Added: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/OptionalDisjunctiveBeforeAnchoringTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/OptionalDisjunctiveBeforeAnchoringTest.java?rev=1565285&view=auto
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/OptionalDisjunctiveBeforeAnchoringTest.java (added)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/OptionalDisjunctiveBeforeAnchoringTest.java Thu Feb 6 14:43:55 2014
@@ -0,0 +1,77 @@
+/*
+ * 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.uima.ruta;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.uima.cas.CAS;
+import org.apache.uima.cas.FSIterator;
+import org.apache.uima.cas.Type;
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.cas.text.AnnotationIndex;
+import org.apache.uima.ruta.engine.Ruta;
+import org.junit.Test;
+
+public class OptionalDisjunctiveBeforeAnchoringTest {
+
+ @Test
+ public void test() {
+ String document = "0.3-0.7";
+ String script = "NUM {-PARTOF(T1)} ((COMMA | PERIOD) NUM)? {->MARK(T1,1,2)};";
+ script +="((T1? (\"<\" | \">\" | \"=\" | \"-\" | \"+\") )? @T1) {->T2};\n";
+ script +="T2{-PARTOFNEQ(T2)->T3};\n";
+ CAS cas = null;
+ try {
+ cas = RutaTestUtils.getCAS(document);
+ Ruta.apply(cas, script);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ Type t = null;
+ AnnotationIndex<AnnotationFS> ai = null;
+ FSIterator<AnnotationFS> iterator = null;
+
+ t = RutaTestUtils.getTestType(cas, 1);
+ ai = cas.getAnnotationIndex(t);
+ iterator = ai.iterator();
+ assertEquals(2, ai.size());
+ assertEquals("0.3", iterator.next().getCoveredText());
+ assertEquals("0.7", iterator.next().getCoveredText());
+
+ t = RutaTestUtils.getTestType(cas, 2);
+ ai = cas.getAnnotationIndex(t);
+ iterator = ai.iterator();
+ assertEquals(2, ai.size());
+ assertEquals("0.3-0.7", iterator.next().getCoveredText());
+ assertEquals("0.3", iterator.next().getCoveredText());
+
+ t = RutaTestUtils.getTestType(cas, 3);
+ ai = cas.getAnnotationIndex(t);
+ iterator = ai.iterator();
+ assertEquals(1, ai.size());
+ assertEquals("0.3-0.7", iterator.next().getCoveredText());
+
+ if (cas != null) {
+ cas.release();
+ }
+
+ }
+}
Propchange: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/OptionalDisjunctiveBeforeAnchoringTest.java
------------------------------------------------------------------------------
svn:eol-style = native