public void testTypeVarDeclr() { String ex = "String a;"; ParserContext ctx = new ParserContext(); ExpressionCompiler compiler = new ExpressionCompiler(ex); compiler.compile(ctx); assertNotNull(ctx.getVariables()); assertEquals(1, ctx.getVariables().entrySet().size()); for (Map.Entry<String, Class> entry : ctx.getVariables().entrySet()) { assertEquals(String.class, entry.getValue()); } }
public void testGetCorrectInputs() { String str = "total = total + $cheese.price"; ParserConfiguration pconf = new ParserConfiguration(); ParserContext pctx = new ParserContext(pconf); pctx.setStrongTyping(true); pctx.addInput("total", int.class); pctx.addInput("$cheese", Cheese.class); ExecutableStatement stmt = (ExecutableStatement) MVEL.compileExpression(str, pctx); assertTrue("Should not contain" + pctx.getVariables(), pctx.getVariables().isEmpty()); }
public void testVarInputs5() { ParserContext pCtx = ParserContext.create().withInput("list", List.class); MVEL.analysisCompile( "String nodeName = list[0];\nSystem.out.println(nodeName);nodeName = list[1];\nSystem.out.println(nodeName);", pCtx); assertEquals(1, pCtx.getInputs().size()); assertTrue(pCtx.getInputs().containsKey("list")); assertEquals(1, pCtx.getVariables().size()); assertTrue(pCtx.getVariables().containsKey("nodeName")); assertEquals(List.class, pCtx.getVarOrInputType("list")); assertEquals(String.class, pCtx.getVarOrInputType("nodeName")); }
public void testMultiTypeVarDeclr3() { String ex = "int a = 52 * 3, b = 8, c = 16;"; ParserContext ctx = new ParserContext(); ExpressionCompiler compiler = new ExpressionCompiler(ex); Serializable s = compiler.compile(ctx); assertNotNull(ctx.getVariables()); assertEquals(3, ctx.getVariables().entrySet().size()); for (Map.Entry<String, Class> entry : ctx.getVariables().entrySet()) { assertEquals(int.class, entry.getValue()); } Map vars = new HashMap(); executeExpression(s, vars); assertEquals(52 * 3, vars.get("a")); assertEquals(8, vars.get("b")); assertEquals(16, vars.get("c")); }
public void testVarDeclr() { String ex = "var a"; ParserContext ctx = new ParserContext(); ExpressionCompiler compiler = new ExpressionCompiler(ex); compiler.setVerifyOnly(true); compiler.compile(ctx); assertEquals(1, ctx.getVariables().size()); }
public void testAnalysisCompile() { ParserContext pCtx = new ParserContext(); ExpressionCompiler e = new ExpressionCompiler("foo.aValue = 'bar'"); e.setVerifyOnly(true); e.compile(pCtx); assertTrue(pCtx.getInputs().keySet().contains("foo")); assertEquals(1, pCtx.getInputs().size()); assertEquals(0, pCtx.getVariables().size()); }
public void testVarInputs() { ParserContext pCtx = ParserContext.create(); MVEL.analysisCompile( "test != foo && bo.addSomething(trouble) " + "&& 1 + 2 / 3 == 1; String bleh = foo; twa = bleh;", pCtx); assertEquals(4, pCtx.getInputs().size()); assertTrue(pCtx.getInputs().containsKey("test")); assertTrue(pCtx.getInputs().containsKey("foo")); assertTrue(pCtx.getInputs().containsKey("bo")); assertTrue(pCtx.getInputs().containsKey("trouble")); assertEquals(2, pCtx.getVariables().size()); assertTrue(pCtx.getVariables().containsKey("bleh")); assertTrue(pCtx.getVariables().containsKey("twa")); assertEquals(String.class, pCtx.getVarOrInputType("bleh")); }
public void testStrictTypingCompilation4() throws NoSuchMethodException { ParserContext ctx = new ParserContext(); ctx.addImport(Foo.class); ctx.setStrictTypeEnforcement(true); ExpressionCompiler compiler = new ExpressionCompiler("x_a = new Foo()"); compiler.compile(ctx); assertEquals(Foo.class, ctx.getVariables().get("x_a")); }