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();