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 2015/08/27 21:58:15 UTC

svn commit: r1698222 - in /commons/proper/jexl/trunk/src/test/java/org/apache/commons/jexl3: IssuesTest.java JXLTTest.java

Author: henrib
Date: Thu Aug 27 19:58:15 2015
New Revision: 1698222

URL: http://svn.apache.org/r1698222
Log:
JEXL:
Implemented JEXL-177; multiline formats use backquote (`) as delimiter and interpolate ${...} expressions;

Modified:
    commons/proper/jexl/trunk/src/test/java/org/apache/commons/jexl3/IssuesTest.java
    commons/proper/jexl/trunk/src/test/java/org/apache/commons/jexl3/JXLTTest.java

Modified: commons/proper/jexl/trunk/src/test/java/org/apache/commons/jexl3/IssuesTest.java
URL: http://svn.apache.org/viewvc/commons/proper/jexl/trunk/src/test/java/org/apache/commons/jexl3/IssuesTest.java?rev=1698222&r1=1698221&r2=1698222&view=diff
==============================================================================
--- commons/proper/jexl/trunk/src/test/java/org/apache/commons/jexl3/IssuesTest.java (original)
+++ commons/proper/jexl/trunk/src/test/java/org/apache/commons/jexl3/IssuesTest.java Thu Aug 27 19:58:15 2015
@@ -22,7 +22,9 @@ import java.math.MathContext;
 import java.util.HashMap;
 import java.util.Map;
 import org.apache.commons.jexl3.internal.introspection.Uberspect;
+import org.apache.commons.jexl3.introspection.JexlMethod;
 import java.io.File;
+import java.io.StringWriter;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Arrays;

Modified: commons/proper/jexl/trunk/src/test/java/org/apache/commons/jexl3/JXLTTest.java
URL: http://svn.apache.org/viewvc/commons/proper/jexl/trunk/src/test/java/org/apache/commons/jexl3/JXLTTest.java?rev=1698222&r1=1698221&r2=1698222&view=diff
==============================================================================
--- commons/proper/jexl/trunk/src/test/java/org/apache/commons/jexl3/JXLTTest.java (original)
+++ commons/proper/jexl/trunk/src/test/java/org/apache/commons/jexl3/JXLTTest.java Thu Aug 27 19:58:15 2015
@@ -16,6 +16,9 @@
  */
 package org.apache.commons.jexl3;
 
+import org.apache.commons.jexl3.internal.TemplateDebugger;
+import org.apache.commons.jexl3.internal.TemplateEngine;
+import org.apache.commons.jexl3.internal.TemplateScript;
 import org.apache.log4j.Logger;
 import org.apache.log4j.LogManager;
 
@@ -58,6 +61,15 @@ public class JXLTTest extends JexlTestCa
         super.tearDown();
     }
 
+    private static String refactor(TemplateDebugger td, JxltEngine.Template ts) {
+        boolean dbg = td.debug((TemplateScript)ts);
+        if (dbg) {
+            return td.toString();
+        } else {
+            return "";
+        }
+    }
+
     /** Extract the source from a toString-ed expression. */
     private String getSource(String tostring) {
         int len = tostring.length();
@@ -531,6 +543,11 @@ public class JXLTTest extends JexlTestCa
 
         String dstr = t.asString();
         Assert.assertNotNull(dstr);
+
+        TemplateDebugger td = new TemplateDebugger();
+        String refactored = refactor(td, (TemplateScript) t);
+        Assert.assertNotNull(refactored);
+        Assert.assertEquals(test42, refactored);
     }
 
     public static class FrobozWriter extends PrintWriter {
@@ -564,9 +581,10 @@ public class JXLTTest extends JexlTestCa
         String rpt
                 = "<report>\n"
                 + "\n"
+                + "\n$$ var a = 1;"
                 + "\n$$ var x = 2;"
                 + "\n"
-                + "\n     $$ var y = 9;"
+                + "\n$$ var y = 9;"
                 + "\n"
                 + "\n        ${x + y}"
                 + "\n</report>\n";
@@ -574,8 +592,13 @@ public class JXLTTest extends JexlTestCa
         StringWriter strw = new StringWriter();
         t.evaluate(context, strw);
         String output = strw.toString();
-        String ctl = "<report>\n\n\n        11\n</report>\n";
+        String ctl = "<report>\n\n\n\n\n        11\n</report>\n";
         Assert.assertEquals(ctl, output);
+
+        TemplateDebugger td = new TemplateDebugger();
+        String refactored = refactor(td, (TemplateScript) t);
+        Assert.assertNotNull(refactored);
+        Assert.assertEquals(rpt, refactored);
     }
 
     @Test
@@ -631,6 +654,11 @@ public class JXLTTest extends JexlTestCa
         Assert.assertTrue(output.indexOf("43") > 0);
         Assert.assertTrue(output.indexOf("44") > 0);
         Assert.assertTrue(output.indexOf("45") > 0);
+
+        TemplateDebugger td = new TemplateDebugger();
+        String xxx = refactor(td, (TemplateScript) t);
+        Assert.assertNotNull(xxx);
+        Assert.assertEquals(rpt, xxx);
     }
     @Test
     public void testOneLiner() throws Exception {
@@ -650,6 +678,49 @@ public class JXLTTest extends JexlTestCa
         String output = strw.toString();
         Assert.assertEquals("fourty-two", output);
     }
+
+    @Test
+    public void testInterpolation() throws Exception {
+        context.set("user", "Dimitri");
+        String expr =  "`Hello \n${user}`";
+        Object value = JEXL.createScript(expr).execute(context);
+        Assert.assertEquals(expr, "Hello \nDimitri", value);
+    }
+
+    @Test
+    public void testInterpolationGlobal() throws Exception {
+        String expr =  "user='Dimitri'; `Hello \n${user}`";
+        Object value = JEXL.createScript(expr).execute(context);
+        Assert.assertEquals(expr, "Hello \nDimitri", value);
+    }
+
+    @Test
+    public void testInterpolationLocal() throws Exception {
+        String expr =  "var user='Henrib'; `Hello \n${user}`";
+        Object value = JEXL.createScript(expr).execute(context);
+        Assert.assertEquals(expr, "Hello \nHenrib", value);
+    }
+
+    @Test
+    public void testInterpolationLvsG() throws Exception {
+        String expr =  "user='Dimitri'; var user='Henrib'; `H\\\"ello \n${user}`";
+        Object value = JEXL.createScript(expr).execute(context);
+        Assert.assertEquals(expr, "H\"ello \nHenrib", value);
+    }
+        @Test
+    public void testInterpolationLvsG2() throws Exception {
+        String expr =  "user='Dimitri'; var user='Henrib'; `H\\`ello \n${user}`";
+        Object value = JEXL.createScript(expr).execute(context);
+        Assert.assertEquals(expr, "H`ello \nHenrib", value);
+    }
+
+    @Test
+    public void testInterpolationParameter() throws Exception {
+        String expr =  "(user)->{`Hello \n${user}`}";
+        Object value = JEXL.createScript(expr).execute(context, "Henrib");
+        Assert.assertEquals(expr, "Hello \nHenrib", value);
+    }
+//
 //
 //    @Test public void testDeferredTemplate() throws Exception {
 //        JxltEngine.Template t = JXLT.createTemplate("$$", new StringReader(