You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by he...@apache.org on 2021/06/02 17:09:46 UTC

[commons-jexl] branch master updated: JEXL-348: more exploratory tests

This is an automated email from the ASF dual-hosted git repository.

henrib pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-jexl.git


The following commit(s) were added to refs/heads/master by this push:
     new 62ed42f  JEXL-348: more exploratory tests
62ed42f is described below

commit 62ed42fcdbd9a754a5349eb6408ee666b78c532e
Author: henrib <he...@apache.org>
AuthorDate: Wed Jun 2 19:09:39 2021 +0200

    JEXL-348: more exploratory tests
---
 .../apache/commons/jexl3/ContextNamespaceTest.java | 70 +++++++++++++++++++++-
 1 file changed, 68 insertions(+), 2 deletions(-)

diff --git a/src/test/java/org/apache/commons/jexl3/ContextNamespaceTest.java b/src/test/java/org/apache/commons/jexl3/ContextNamespaceTest.java
index 89844da..43f2bfd 100644
--- a/src/test/java/org/apache/commons/jexl3/ContextNamespaceTest.java
+++ b/src/test/java/org/apache/commons/jexl3/ContextNamespaceTest.java
@@ -17,6 +17,7 @@
 package org.apache.commons.jexl3;
 
 import org.junit.Assert;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import java.util.Arrays;
@@ -138,13 +139,58 @@ public class ContextNamespaceTest extends JexlTestCase {
         public static int func(int y) { return 42 * y;}
     }
 
+    public static class ContextNs348 extends MapContext implements JexlContext.NamespaceResolver {
+        ContextNs348() { super(); }
+
+        @Override
+        public Object resolveNamespace(String name) {
+            return "ns".equals(name)? new Ns348() : null;
+        }
+    }
+
     @Test
-    public void testNamespace348() throws Exception {
+    public void testNamespace348a() throws Exception {
         JexlContext ctxt = new MapContext();
         Map<String, Object> ns = new HashMap<String, Object>();
         ns.put("ns", Ns348.class);
-        String src = "empty(x) ? ns:func(y) : z";
         final JexlEngine jexl = new JexlBuilder().safe(false).namespaces(ns).create();
+        run348ab(jexl, ctxt);
+        run348cd(jexl, ctxt);
+    }
+
+    @Ignore
+    @Test
+    public void testNamespace348b() throws Exception {
+        JexlContext ctxt = new ContextNs348();
+        final JexlEngine jexl = new JexlBuilder().safe(false).create();
+        run348ab(jexl, ctxt);
+        run348cd(jexl, ctxt);
+    }
+
+    @Test
+    public void testNamespace348c() throws Exception {
+        JexlContext ctxt = new ContextNs348();
+        Map<String, Object> ns = new HashMap<String, Object>();
+        ns.put("ns", Ns348.class);
+        JexlFeatures f = new JexlFeatures();
+        f.namespaceTest((n)->true);
+        final JexlEngine jexl = new JexlBuilder().namespaces(ns).features(f).safe(false).create();
+        run348ab(jexl, ctxt);
+        run348cd(jexl, ctxt);
+    }
+
+    @Test
+    public void testNamespace348d() throws Exception {
+        JexlContext ctxt = new ContextNs348();
+        JexlFeatures f = new JexlFeatures();
+        f.namespaceTest((n)->true);
+        final JexlEngine jexl = new JexlBuilder().features(f).safe(false).create();
+        run348ab(jexl, ctxt);
+        run348cd(jexl, ctxt);
+    }
+
+    private void run348ab(JexlEngine jexl, JexlContext ctxt) {
+        String src = "empty(x) ? ns:func(y) : z";
         // local vars
         JexlScript script = jexl.createScript(src, "x", "y", "z");
         Object result = script.execute(ctxt, null, 1, 169);
@@ -163,6 +209,26 @@ public class ContextNamespaceTest extends JexlTestCase {
         Assert.assertEquals(169, result);
     }
 
+    private void run348cd(JexlEngine jexl, JexlContext ctxt) {
+        String src = "empty(x) ? z : ns:func(y)";
+        // local vars
+        JexlScript script = jexl.createScript(src, "x", "z", "y");
+        Object result = script.execute(ctxt, null, 169, 1);
+        Assert.assertEquals(169, result);
+        result = script.execute(ctxt, "42", 169, 1);
+        Assert.assertEquals(42, result);
+        // global vars
+        script = jexl.createScript(src);
+        ctxt.set("x", null);
+        ctxt.set("z", 169);
+        ctxt.set("y", 1);
+        result = script.execute(ctxt);
+        Assert.assertEquals(169, result);
+        ctxt.set("x", "42");
+        result = script.execute(ctxt);
+        Assert.assertEquals(42, result);
+    }
+
     @Test
     public void testNamespacePragmaString() throws Exception {
         final JexlEngine jexl = new JexlBuilder().create();