@Test public void whitespace() { SpelExpressionParser parser = new SpelExpressionParser(); SpelExpression expr = parser.parseRaw("2 + 3"); assertEquals(5, expr.getValue()); expr = parser.parseRaw("2 + 3"); assertEquals(5, expr.getValue()); expr = parser.parseRaw("2\n+\t3"); assertEquals(5, expr.getValue()); expr = parser.parseRaw("2\r\n+\t3"); assertEquals(5, expr.getValue()); }
@Test public void projectionTypeDescriptors_1() { StandardEvaluationContext context = new StandardEvaluationContext(new C()); SpelExpressionParser parser = new SpelExpressionParser(); String el1 = "ls.![#this.equals('abc')]"; SpelExpression exp = parser.parseRaw(el1); List<?> value = (List<?>) exp.getValue(context); // value is list containing [true,false] assertEquals(Boolean.class, value.get(0).getClass()); TypeDescriptor evaluated = exp.getValueTypeDescriptor(context); assertEquals(null, evaluated.getElementTypeDescriptor()); }
@Test public void theMostBasic() { SpelExpressionParser parser = new SpelExpressionParser(); SpelExpression expr = parser.parseRaw("2"); assertNotNull(expr); assertNotNull(expr.getAST()); assertEquals(2, expr.getValue()); assertEquals(Integer.class, expr.getValueType()); assertEquals(2, expr.getAST().getValue(null)); }
private void checkNumber(String expression, Object value, Class<?> type) { try { SpelExpressionParser parser = new SpelExpressionParser(); SpelExpression expr = parser.parseRaw(expression); Object exprVal = expr.getValue(); assertEquals(value, exprVal); assertEquals(type, exprVal.getClass()); } catch (Exception ex) { fail(ex.getMessage()); } }
@Test public void projectionTypeDescriptors_3() { StandardEvaluationContext context = new StandardEvaluationContext(new C()); SpelExpressionParser parser = new SpelExpressionParser(); String el1 = "ms.![key.equals('abc')]"; SpelExpression exp = parser.parseRaw(el1); List<?> value = (List<?>) exp.getValue(context); // value is list containing [true,false] assertEquals(Boolean.class, value.get(0).getClass()); TypeDescriptor evaluated = exp.getValueTypeDescriptor(context); assertEquals(null, evaluated.getElementTypeDescriptor()); }
@Test public void projectionTypeDescriptors_2() { StandardEvaluationContext context = new StandardEvaluationContext(new C()); SpelExpressionParser parser = new SpelExpressionParser(); String el1 = "as.![#this.equals('abc')]"; SpelExpression exp = parser.parseRaw(el1); Object[] value = (Object[]) exp.getValue(context); // value is array containing [true,false] assertEquals(Boolean.class, value[0].getClass()); TypeDescriptor evaluated = exp.getValueTypeDescriptor(context); assertEquals(Boolean.class, evaluated.getElementTypeDescriptor().getType()); }
@Test public void testStringLiterals_DoubleQuotes_spr9620() { SpelExpression expr = new SpelExpressionParser().parseRaw("\"double quote: \"\".\""); assertEquals("double quote: \".", expr.getValue()); expr = new SpelExpressionParser().parseRaw("\"hello \"\" world\""); assertEquals("hello \" world", expr.getValue()); }
@Test public void arithmeticPlus2() { SpelExpressionParser parser = new SpelExpressionParser(); SpelExpression expr = parser.parseRaw("37+41"); assertEquals(78, expr.getValue()); }
@Test public void arithmeticPrecedence2() { SpelExpressionParser parser = new SpelExpressionParser(); SpelExpression expr = parser.parseRaw("2+3*5"); assertEquals(17, expr.getValue()); }
@Test public void arithmeticPrecedence1() { SpelExpressionParser parser = new SpelExpressionParser(); SpelExpression expr = parser.parseRaw("2*3+5"); assertEquals(11, expr.getValue()); }
@Test public void arithmeticPrecedence4() { SpelExpression expr = new SpelExpressionParser().parseRaw("10/2+3"); assertEquals(8, expr.getValue()); }
@Test public void arithmeticPrecedence6() { SpelExpression expr = new SpelExpressionParser().parseRaw("(3+2)*2"); assertEquals(10, expr.getValue()); }
@Test public void arithmeticPrecedence3() { SpelExpression expr = new SpelExpressionParser().parseRaw("3+10/2"); assertEquals(8, expr.getValue()); }
@Test public void arithmeticPrecedence5() { SpelExpression expr = new SpelExpressionParser().parseRaw("(4+10)/2"); assertEquals(7, expr.getValue()); }
@Test public void stringLiterals2() { SpelExpression expr = new SpelExpressionParser().parseRaw("'howdy'.substring(0,2)"); assertEquals("ho", expr.getValue()); }
@Test public void testTypeReferencesAndQualifiedIdentifierCaching() { SpelExpression e = (SpelExpression) parser.parseExpression("T(java.lang.String)"); assertFalse(e.isWritable(new StandardEvaluationContext())); assertEquals("T(java.lang.String)", e.toStringAST()); assertEquals(String.class, e.getValue(Class.class)); // use cached QualifiedIdentifier: assertEquals("T(java.lang.String)", e.toStringAST()); assertEquals(String.class, e.getValue(Class.class)); }
@Test public void reservedWordProperties_SPR9862() { StandardEvaluationContext context = new StandardEvaluationContext(); SpelExpressionParser parser = new SpelExpressionParser(); SpelExpression expression = parser.parseRaw("T(org.springframework.expression.spel.testresources.le.div.mod.reserved.Reserver).CONST"); Object value = expression.getValue(context); assertEquals(value, Reserver.CONST); }
@Test public void arithmeticPlus1() { SpelExpressionParser parser = new SpelExpressionParser(); SpelExpression expr = parser.parseRaw("2+2"); assertNotNull(expr); assertNotNull(expr.getAST()); assertEquals(4, expr.getValue()); }
@Test public void arithmeticMultiply1() { SpelExpressionParser parser = new SpelExpressionParser(); SpelExpression expr = parser.parseRaw("2*3"); assertNotNull(expr); assertNotNull(expr.getAST()); // printAst(expr.getAST(),0); assertEquals(6, expr.getValue()); }