Author: pkluegl Date: Sat May 31 14:59:32 2014 New Revision: 1598879 URL: http://svn.apache.org/r1598879 Log: UIMA-3841 - fixed Quantifier7Test (was actually wrong!) - fixed reverse lookahead of wildcard
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/WildCardRuleElement.java uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/InlinedRulesTest.java uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/Quantifier7Test.java Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/WildCardRuleElement.java URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/WildCardRuleElement.java?rev=1598879&r1=1598878&r2=1598879&view=diff ============================================================================== --- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/WildCardRuleElement.java (original) +++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/WildCardRuleElement.java Sat May 31 14:59:32 2014 @@ -232,7 +232,7 @@ public class WildCardRuleElement extends RutaMatcher matcher = re.getMatcher(); if (matcher instanceof RutaTypeMatcher) { FSIterator<AnnotationFS> iterator = getIterator(after, annotation, re, null, stream); - if(iterator == null) { + if (iterator == null) { return null; } if (iterator.isValid()) { @@ -292,7 +292,7 @@ public class WildCardRuleElement extends FSIterator<AnnotationFS> iterator = getIterator(after, annotation, nextElement, defaultType, stream); // already matched something maybe, but now at the end of the document - if (iterator == null ||!iterator.isValid()) { + if (iterator == null || !iterator.isValid()) { RuleElementContainer c = getContainer(); if (c instanceof ComposedRuleElement) { ComposedRuleElement cre = (ComposedRuleElement) c; @@ -383,23 +383,24 @@ public class WildCardRuleElement extends } else { AnnotationFS pointer = stream.getAnchor(after, annotation); result = cas.getAnnotationIndex(type).iterator(pointer); + if (!after) { + result.moveToPrevious(); + } if (annotation != null && result.isValid()) { // hotfix for index overflow... AnnotationFS a = result.get(); + // not greater equal because caller method will fix it for same positions, should be fixed + // right here if (after) { - if (a.getBegin() <= annotation.getBegin()) { + if (a.getBegin() < annotation.getBegin()) { return null; } } else { - if (a.getEnd() >= annotation.getEnd()) { + if (a.getEnd() > annotation.getEnd()) { return null; } } } - - if (!after) { - result.moveToPrevious(); - } } } else { JCas jcas = null; Modified: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/InlinedRulesTest.java URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/InlinedRulesTest.java?rev=1598879&r1=1598878&r2=1598879&view=diff ============================================================================== --- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/InlinedRulesTest.java (original) +++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/InlinedRulesTest.java Sat May 31 14:59:32 2014 @@ -59,8 +59,6 @@ public class InlinedRulesTest { AnnotationIndex<AnnotationFS> ai = null; FSIterator<AnnotationFS> iterator = null; - - t = RutaTestUtils.getTestType(cas, 2); ai = cas.getAnnotationIndex(t); iterator = ai.iterator(); Modified: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/Quantifier7Test.java URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/Quantifier7Test.java?rev=1598879&r1=1598878&r2=1598879&view=diff ============================================================================== --- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/Quantifier7Test.java (original) +++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/Quantifier7Test.java Sat May 31 14:59:32 2014 @@ -38,7 +38,7 @@ public class Quantifier7Test { script += "\"i\" -> T2;\n"; script += "COMMA {-> T3};\n"; script += "COMMA #{-> T5} COMMA;\n"; - script += "T5 { CONTAINS(T1)} (T5 { CONTAINS(T2) } T3?)* { -> MARK(T4, 1, 2) };\n"; + script += "T5 { CONTAINS(T1)} (T3? T5 { CONTAINS(T2) } T3?)* { -> MARK(T4, 1, 2) };\n"; CAS cas = null; try { @@ -51,9 +51,10 @@ public class Quantifier7Test { Type t = null; AnnotationIndex<AnnotationFS> ai = null; FSIterator<AnnotationFS> iterator = null; - + t = RutaTestUtils.getTestType(cas, 4); ai = cas.getAnnotationIndex(t); + assertEquals(1, ai.size()); iterator = ai.iterator(); assertEquals("H 1 2 3, i 1 2 3, i 1 2 3, i 1 2 3,", iterator.next().getCoveredText());