From 0e4f98520f2a9d0076fe5192cccbdccb4f0fd8db Mon Sep 17 00:00:00 2001 From: qiao tian Date: Fri, 8 Nov 2019 15:23:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../express/bugfix/RecursivelyRunnerTest.java | 40 +++++++++++++++++-- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/src/test/java/com/ql/util/express/bugfix/RecursivelyRunnerTest.java b/src/test/java/com/ql/util/express/bugfix/RecursivelyRunnerTest.java index 2945559..fedffc9 100644 --- a/src/test/java/com/ql/util/express/bugfix/RecursivelyRunnerTest.java +++ b/src/test/java/com/ql/util/express/bugfix/RecursivelyRunnerTest.java @@ -9,12 +9,34 @@ import java.lang.reflect.Method; public class RecursivelyRunnerTest { + static final String TEST_EXPRESS = "eval('10+10')+eval('20')+eval('30-10')"; + + static final ExpressRunner globalRunner = new ExpressRunner(); + static{ + globalRunner.addFunction("eval",new GlobalEvalOperator()); + } + + + @Test + public void testErrorRecursivelyInvoke() throws Exception{ + + try { + + Object r = globalRunner.execute(TEST_EXPRESS, null, null, true, false); + System.out.println(r); + }catch (Exception e){ +// e.printStackTrace(); + System.out.println("符合预期,嵌套调用同一个ExpressRunner不支持!"); + } + + } + @Test public void testEvalOperator() throws Exception{ ExpressRunner runner = new ExpressRunner(); runner.addFunction("eval",new EvalOperator()); - String express = "eval('10')+eval('20')+eval('30')"; - Object r = runner.execute(express, null, null, true, false); + + Object r = runner.execute(TEST_EXPRESS, null, null, true, false); System.out.println(r); } @@ -31,12 +53,22 @@ public class RecursivelyRunnerTest { runner.addFunctionOfServiceMethod(name, subRunner, name, m.getParameterTypes(), null); } - String express = "eval('10')+eval('20')+eval('30')"; - Object r = runner.execute(express, null, null, true, false); + + Object r = runner.execute(TEST_EXPRESS, null, null, true, false); System.out.println(r); } + public static class GlobalEvalOperator extends Operator{ + + + @Override + public Object executeInner(Object[] list) throws Exception { + Object result = globalRunner.execute((String) list[0], new DefaultContext(), null, true, false); + return result; + } + } + public static class EvalOperator extends Operator{ private ExpressRunner subRun = new ExpressRunner(); -- GitLab