if (lastChild != null && arrayType.equals(lastChild.getExitDescriptor())) { generateCodeForArgument(mv, cf, lastChild, paramDescriptors[p]);
assertEquals("instanceof Two", expression.getValue(payload).toString()); ast = getAst(); assertEquals("Lorg/springframework/expression/spel/SpelCompilationCoverageTests$Two", ast.getExitDescriptor()); assertEquals("org.springframework.expression.spel.SpelCompilationCoverageTests$Three", expression.getValue(payload).getClass().getName()); ast = getAst(); assertEquals("Lorg/springframework/expression/spel/SpelCompilationCoverageTests$Three", ast.getExitDescriptor()); assertCanCompile(expression); assertEquals("org.springframework.expression.spel.SpelCompilationCoverageTests$Two", expression.getValue(payload).getClass().getName()); assertEquals("Lorg/springframework/expression/spel/SpelCompilationCoverageTests$Two", getAst().getExitDescriptor()); assertEquals("org.springframework.expression.spel.SpelCompilationCoverageTests$Three", expression.getValue(payload).getClass().getName()); ast = getAst(); assertEquals("Lorg/springframework/expression/spel/SpelCompilationCoverageTests$Three", ast.getExitDescriptor()); assertCanCompile(expression); assertEquals(0.04d, expression.getValue(payload)); assertEquals("D", getAst().getExitDescriptor());
@Test public void mixingItUp_propertyAccessIndexerOpLtTernaryRootNull() throws Exception { Payload payload = new Payload(); expression = parser.parseExpression("DR[0].three"); Object v = expression.getValue(payload); assertEquals("Lorg/springframework/expression/spel/SpelCompilationCoverageTests$Three", getAst().getExitDescriptor()); Expression expression = parser.parseExpression("DR[0].three.four lt 0.1d?#root:null"); v = expression.getValue(payload); SpelExpression sExpr = (SpelExpression) expression; Ternary ternary = (Ternary) sExpr.getAST(); OpLT oplt = (OpLT) ternary.getChild(0); CompoundExpression cExpr = (CompoundExpression) oplt.getLeftOperand(); String cExprExitDescriptor = cExpr.getExitDescriptor(); assertEquals("D", cExprExitDescriptor); assertEquals("Z", oplt.getExitDescriptor()); assertCanCompile(expression); Object vc = expression.getValue(payload); assertEquals(payload, v); assertEquals(payload,vc); payload.DR[0].three.four = 0.13d; vc = expression.getValue(payload); assertNull(vc); }
if (lastChild != null && arrayType.equals(lastChild.getExitDescriptor())) { generateCodeForArgument(mv, cf, lastChild, paramDescriptors[p]);
assertCanCompile(expression); assertEquals("a", expression.getValue(sss)); assertEquals("Ljava/lang/String", getAst().getExitDescriptor()); assertCanCompile(expression); assertEquals(8, expression.getValue(ns)); assertEquals("Ljava/lang/Number", getAst().getExitDescriptor()); assertCanCompile(expression); assertEquals(10, expression.getValue(is)); assertEquals("I", getAst().getExitDescriptor()); assertCanCompile(expression); assertEquals(4.0d, expression.getValue(ds)); assertEquals("D", getAst().getExitDescriptor()); assertCanCompile(expression); assertEquals(2L, expression.getValue(ls)); assertEquals("J", getAst().getExitDescriptor()); assertCanCompile(expression); assertEquals((short)55, expression.getValue(ss)); assertEquals("S", getAst().getExitDescriptor()); assertCanCompile(expression); assertEquals(6.0f, expression.getValue(fs)); assertEquals("F", getAst().getExitDescriptor()); assertCanCompile(expression);
if (lastChild != null && arrayType.equals(lastChild.getExitDescriptor())) { generateCodeForArgument(mv, cf, lastChild, paramDescriptors[p]);