public final void testInferLastTypeParametersFromPropertyMethod() { ParserContext context = new ParserContext(); context.setStrongTyping(true); context.addInput("a", A.class); final CompiledExpression compiledExpression = new ExpressionCompiler("a.getFooMap()[\"key\"].someMethod()", context) .compile(); final Object val = MVEL.executeExpression(compiledExpression, new AWrapper()); assertEquals("Expression did not evaluate correctly: ", "bar", val); assertNotNull("No type parameters detected", context.getLastTypeParameters()); assertEquals("Wrong parametric type inferred", String.class, context.getLastTypeParameters()[0]); }
public final void testInferLastTypeParametersFromProperty() { ParserContext context = new ParserContext(); context.setStrongTyping(true); context.addInput("a", A.class); final CompiledExpression compiledExpression = new ExpressionCompiler("a.strings", context) .compile(); final Object val = MVEL.executeExpression(compiledExpression, new AWrapper()); assertTrue("Expression did not evaluate correctly: " + val, STRINGS.equals(val)); assertTrue("No type parameters detected", null != context.getLastTypeParameters()); assertTrue("Wrong parametric type inferred", String.class.equals(context.getLastTypeParameters()[0])); }
public final void testTypeByMethod() { ParserContext context = new ParserContext(); context.setStrongTyping(true); context.addInput("a", A.class); CompiledExpression compiledExpression = new ExpressionCompiler("!a.show", context).compile(); assertEquals(Boolean.class, compiledExpression.getKnownEgressType()); }
public void testAmazed() { MVEL.COMPILER_OPT_ALLOW_NAKED_METH_CALL = true; try { ParserContext context = new ParserContext(); context.setStrongTyping(true); context.addInput("this", Amazed1.class); ExecutableStatement stmt = (ExecutableStatement) MVEL.compileExpression("list.size", context); Amazed1 a1 = new Amazed1(); assertEquals(new Integer(0), MVEL.executeExpression(stmt, a1)); context = new ParserContext(); context.setStrongTyping(true); context.addInput("this", Amazed2.class); stmt = (ExecutableStatement) MVEL.compileExpression("list.size", context); Amazed2 a2 = new Amazed2(); assertEquals(new Integer(0), MVEL.executeExpression(stmt, a2)); } finally { MVEL.COMPILER_OPT_ALLOW_NAKED_METH_CALL = false; } } }
public final void testInferLastTypeParametersFromMethod() { ParserContext context = new ParserContext(); context.setStrongTyping(true); context.addInput("a", A.class); final CompiledExpression compiledExpression = new ExpressionCompiler("a.values()", context) .compile(); final Object val = MVEL.executeExpression(compiledExpression, new AWrapper()); assertTrue("Expression did not evaluate correctly: " + val, STRINGS.equals(val)); assertTrue("No type parameters detected", null != context.getLastTypeParameters()); assertTrue("Wrong parametric type inferred", String.class.equals(context.getLastTypeParameters()[0])); }