Author: pkluegl
Date: Wed May 15 13:34:29 2013
New Revision: 1482827
URL: http://svn.apache.org/r1482827
Log:
UIMA-2904
- added test
- fixed verbalization
Added:
uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/ImplicitActionTest.java
uima/sandbox/ruta/trunk/ruta-core/src/test/resources/org/apache/uima/ruta/action/ImplicitActionTest.ruta
Modified:
uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ActionVerbalizer.java
Modified:
uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ActionVerbalizer.java
URL:
http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ActionVerbalizer.java?rev=1482827&r1=1482826&r2=1482827&view=diff
==============================================================================
---
uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ActionVerbalizer.java
(original)
+++
uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ActionVerbalizer.java
Wed May 15 13:34:29 2013
@@ -40,6 +40,8 @@ import org.apache.uima.ruta.action.Gathe
import org.apache.uima.ruta.action.GetAction;
import org.apache.uima.ruta.action.GetFeatureAction;
import org.apache.uima.ruta.action.GetListAction;
+import org.apache.uima.ruta.action.ImplicitFeatureAction;
+import org.apache.uima.ruta.action.ImplicitMarkAction;
import org.apache.uima.ruta.action.LogAction;
import org.apache.uima.ruta.action.MarkAction;
import org.apache.uima.ruta.action.MarkFastAction;
@@ -152,6 +154,10 @@ public class ActionVerbalizer {
return "REMOVEDUPLICATE";
} else if (action instanceof UnmarkAllAction) {
return "UNMARKALL";
+ } else if (action instanceof ImplicitMarkAction) {
+ return "";
+ } else if (action instanceof ImplicitFeatureAction) {
+ return "";
}
return action.getClass().getSimpleName();
@@ -456,6 +462,12 @@ public class ActionVerbalizer {
String verbalize = verbalizer.verbalize(a.getType());
String but = a.getList() == null ? "" : ", " +
verbalizer.verbalize(a.getList());
return name + verbalize + but + ")";
+ } else if (action instanceof ImplicitMarkAction) {
+ ImplicitMarkAction a = (ImplicitMarkAction) action;
+ return verbalizer.verbalize(a.getType());
+ } else if (action instanceof ImplicitFeatureAction) {
+ ImplicitFeatureAction a = (ImplicitFeatureAction) action;
+ return verbalizer.verbalize(a.getExpr());
}
return action.getClass().getSimpleName();
Added:
uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/ImplicitActionTest.java
URL:
http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/ImplicitActionTest.java?rev=1482827&view=auto
==============================================================================
---
uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/ImplicitActionTest.java
(added)
+++
uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/ImplicitActionTest.java
Wed May 15 13:34:29 2013
@@ -0,0 +1,126 @@
+/*
+ * 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.action;
+
+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 ImplicitActionTest {
+
+ @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(3, ai.size());
+ iterator = ai.iterator();
+ assertEquals("Peter Kluegl", iterator.next().getCoveredText());
+ assertEquals("Joern Kottmann", iterator.next().getCoveredText());
+ assertEquals("Marshall Schor", iterator.next().getCoveredText());
+
+ t = RutaTestUtils.getTestType(cas, 2);
+ ai = cas.getAnnotationIndex(t);
+ iterator = ai.iterator();
+ assertEquals(3, ai.size());
+ assertEquals("Peter", iterator.next().getCoveredText());
+ assertEquals("Joern", iterator.next().getCoveredText());
+ assertEquals("Marshall", iterator.next().getCoveredText());
+
+ t = RutaTestUtils.getTestType(cas, 3);
+ ai = cas.getAnnotationIndex(t);
+ iterator = ai.iterator();
+ assertEquals(3, ai.size());
+ assertEquals("Peter", iterator.next().getCoveredText());
+ assertEquals("Joern", iterator.next().getCoveredText());
+ assertEquals("Marshall", iterator.next().getCoveredText());
+
+ t = RutaTestUtils.getTestType(cas, 4);
+ ai = cas.getAnnotationIndex(t);
+ iterator = ai.iterator();
+ assertEquals(3, ai.size());
+ assertEquals("Peter", iterator.next().getCoveredText());
+ assertEquals("Joern", iterator.next().getCoveredText());
+ assertEquals("Marshall", iterator.next().getCoveredText());
+ if (cas != null) {
+ cas.release();
+ }
+
+ }
+}
Added:
uima/sandbox/ruta/trunk/ruta-core/src/test/resources/org/apache/uima/ruta/action/ImplicitActionTest.ruta
URL:
http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-core/src/test/resources/org/apache/uima/ruta/action/ImplicitActionTest.ruta?rev=1482827&view=auto
==============================================================================
---
uima/sandbox/ruta/trunk/ruta-core/src/test/resources/org/apache/uima/ruta/action/ImplicitActionTest.ruta
(added)
+++
uima/sandbox/ruta/trunk/ruta-core/src/test/resources/org/apache/uima/ruta/action/ImplicitActionTest.ruta
Wed May 15 13:34:29 2013
@@ -0,0 +1,24 @@
+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{-> T1};
+A{-> A.ac.ds="name"};
+A.ac.ds=="name"{-> T2};
+A{-> A.ac.cb=true};
+A.ac.cb==true{-> T3};
+A{-> A.ac.ci=10};
+A.ac.ci==10{-> T4};
+
+
+