Author: pkluegl
Date: Wed May 15 13:50:57 2013
New Revision: 1482840

URL: http://svn.apache.org/r1482840
Log:
UIMA-2904
- added test for implicit conditions

Added:
    
uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/condition/ImplicitConditionTest.java
    
uima/sandbox/ruta/trunk/ruta-core/src/test/resources/org/apache/uima/ruta/condition/ImplicitConditionTest.ruta

Added: 
uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/condition/ImplicitConditionTest.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/condition/ImplicitConditionTest.java?rev=1482840&view=auto
==============================================================================
--- 
uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/condition/ImplicitConditionTest.java
 (added)
+++ 
uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/condition/ImplicitConditionTest.java
 Wed May 15 13:50:57 2013
@@ -0,0 +1,132 @@
+/*
+ * 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.condition;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+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.FeatureMatchTest;
+import org.apache.uima.ruta.RutaTestUtils;
+import org.apache.uima.ruta.RutaTestUtils.TestFeature;
+import org.apache.uima.ruta.engine.RutaEngine;
+import org.junit.Test;
+
+public class ImplicitConditionTest {
+
+  @Test
+  public void test() {
+    String name = this.getClass().getSimpleName();
+    String namespace = 
this.getClass().getPackage().getName().replaceAll("\\.", "/");
+    CAS cas = null;
+    Map<String, String> complexTypes = new HashMap<String, String>();
+    Map<String, List<TestFeature>> features = new TreeMap<String, 
List<TestFeature>>();
+    String typeNameA = "org.apache.uima.ruta.FeatureMatchTest.A";
+    String typeNameB = "org.apache.uima.ruta.FeatureMatchTest.B";
+    String typeNameC = "org.apache.uima.ruta.FeatureMatchTest.C";
+    String typeNameD = "org.apache.uima.ruta.FeatureMatchTest.D";
+    complexTypes.put(typeNameA, "uima.tcas.Annotation");
+    complexTypes.put(typeNameB, typeNameD);
+    complexTypes.put(typeNameC, typeNameD);
+    complexTypes.put(typeNameD, "uima.tcas.Annotation");
+    List<TestFeature> listA = new ArrayList<RutaTestUtils.TestFeature>();
+    features.put(typeNameA, listA);
+    String fnab = "ab";
+    listA.add(new TestFeature(fnab, "", typeNameB));
+    String fnac = "ac";
+    listA.add(new TestFeature(fnac, "", typeNameC));
+    List<TestFeature> listB = new ArrayList<RutaTestUtils.TestFeature>();
+    features.put(typeNameB, listB);
+    String fnbc = "bc";
+    listB.add(new TestFeature(fnbc, "", typeNameC));
+    List<TestFeature> listC = new ArrayList<RutaTestUtils.TestFeature>();
+    features.put(typeNameC, listC);
+    String fnci = "ci";
+    listC.add(new TestFeature(fnci, "", "uima.cas.Integer"));
+    String fncb = "cb";
+    listC.add(new TestFeature(fncb, "", "uima.cas.Boolean"));
+    List<TestFeature> listD = new ArrayList<RutaTestUtils.TestFeature>();
+    features.put(typeNameD, listD);
+    String fnds = "ds";
+    listD.add(new TestFeature(fnds, "", "uima.cas.String"));
+
+    try {
+      cas = RutaTestUtils.process(namespace + "/" + name + 
RutaEngine.SCRIPT_FILE_EXTENSION,
+              FeatureMatchTest.class.getName().replaceAll("\\.", "/") +".txt", 
50, false, false, complexTypes, features, null);
+    } catch (Exception e) {
+      e.printStackTrace();
+      assert (false);
+    }
+    Type t = null;
+    AnnotationIndex<AnnotationFS> ai = null;
+    FSIterator<AnnotationFS> iterator = null;
+
+    t = RutaTestUtils.getTestType(cas, 1);
+    ai = cas.getAnnotationIndex(t);
+    assertEquals(1, ai.size());
+    iterator = ai.iterator();
+    assertEquals("Marshall Schor", iterator.next().getCoveredText());
+    
+    t = RutaTestUtils.getTestType(cas, 2);
+    ai = cas.getAnnotationIndex(t);
+    iterator = ai.iterator();
+    assertEquals(3, ai.size());
+    assertEquals("Peter Kluegl", iterator.next().getCoveredText());
+    assertEquals("Joern Kottmann", iterator.next().getCoveredText());
+    assertEquals("Marshall Schor", iterator.next().getCoveredText());
+    
+    t = RutaTestUtils.getTestType(cas, 3);
+    ai = cas.getAnnotationIndex(t);
+    iterator = ai.iterator();
+    assertEquals(3, ai.size());
+    assertEquals("Peter Kluegl", iterator.next().getCoveredText());
+    assertEquals("Joern Kottmann", iterator.next().getCoveredText());
+    assertEquals("Marshall Schor", iterator.next().getCoveredText());
+    
+    t = RutaTestUtils.getTestType(cas, 4);
+    ai = cas.getAnnotationIndex(t);
+    iterator = ai.iterator();
+    assertEquals(1, ai.size());
+    assertEquals("Joern Kottmann", iterator.next().getCoveredText());
+    
+    t = RutaTestUtils.getTestType(cas, 5);
+    ai = cas.getAnnotationIndex(t);
+    iterator = ai.iterator();
+    assertEquals(3, ai.size());
+    assertEquals("Peter Kluegl", iterator.next().getCoveredText());
+    assertEquals("Joern Kottmann", iterator.next().getCoveredText());
+    assertEquals("Marshall Schor", iterator.next().getCoveredText());
+    
+    
+    if (cas != null) {
+      cas.release();
+    }
+
+  }
+}

Added: 
uima/sandbox/ruta/trunk/ruta-core/src/test/resources/org/apache/uima/ruta/condition/ImplicitConditionTest.ruta
URL: 
http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-core/src/test/resources/org/apache/uima/ruta/condition/ImplicitConditionTest.ruta?rev=1482840&view=auto
==============================================================================
--- 
uima/sandbox/ruta/trunk/ruta-core/src/test/resources/org/apache/uima/ruta/condition/ImplicitConditionTest.ruta
 (added)
+++ 
uima/sandbox/ruta/trunk/ruta-core/src/test/resources/org/apache/uima/ruta/condition/ImplicitConditionTest.ruta
 Wed May 15 13:50:57 2013
@@ -0,0 +1,19 @@
+PACKAGE uima.ruta.tests;
+
+DECLARE Annotation D(STRING ds);
+DECLARE D C(INT ci, BOOLEAN cb);
+DECLARE D B(C bc);
+DECLARE Annotation A(B ab, C ac);
+
+INT count;
+CW{ -> ASSIGN(count, count+1), CREATE(C, "ds" = "firstname", "ci" = count, 
"cb" = false)} CW{ -> 
+    GATHER(B, "bc" = 1), FILL(B, "ds" = "lastname")};
+C{REGEXP("M.*") -> SETFEATURE("cb", true)};
+(CW CW){-> CREATE(A, "ab" = B, "ac" = C)};
+
+DECLARE T1, T2, T3, T4, T5, T6, T7, T8, T9;
+A{A.ac.cb==true -> T1};
+A{A.ac.ds=="firstname" -> T2};
+A{(count>2) -> T3};
+A{A.ac.ci==2 -> T4};
+A{true -> T5};


Reply via email to