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}; + + +