@Test public void elvis_SPR7209_2() { Expression expr = null; // Have empty string treated as null for elvis expr = new SpelExpressionParser().parseRaw("?:'default'"); assertEquals("default", expr.getValue()); expr = new SpelExpressionParser().parseRaw("\"\"?:'default'"); assertEquals("default", expr.getValue()); expr = new SpelExpressionParser().parseRaw("''?:'default'"); assertEquals("default", expr.getValue()); }
@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 SPR5905_InnerTypeReferences() { StandardEvaluationContext context = new StandardEvaluationContext(new Spr5899Class()); Expression expr = new SpelExpressionParser().parseRaw("T(java.util.Map$Entry)"); assertEquals(Map.Entry.class, expr.getValue(context)); expr = new SpelExpressionParser().parseRaw("T(org.springframework.expression.spel.SpelReproTests$Outer$Inner).run()"); assertEquals(12, expr.getValue(context)); expr = new SpelExpressionParser().parseRaw("new org.springframework.expression.spel.SpelReproTests$Outer$Inner().run2()"); assertEquals(13, expr.getValue(context)); }
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()); } }
/** Should be accessing Goo.setKey field because 'bar' variable evaluates to "key" */ @Test public void indexingAsAPropertyAccess_SPR6968_5() { Goo g = Goo.instance; StandardEvaluationContext context = new StandardEvaluationContext(g); Expression expr = null; expr = new SpelExpressionParser().parseRaw("instance[bar]='world'"); expr.getValue(context, String.class); assertEquals("world", g.value); expr.getValue(context, String.class); // will be using the cached accessor this time assertEquals("world", g.value); }
@Test public void stringLiterals2() { SpelExpression expr = new SpelExpressionParser().parseRaw("'howdy'.substring(0,2)"); assertEquals("ho", expr.getValue()); }
@Test public void arithmeticPrecedence1() { SpelExpressionParser parser = new SpelExpressionParser(); SpelExpression expr = parser.parseRaw("2*3+5"); assertEquals(11, expr.getValue()); }
@Test public void arithmeticPrecedence6() { SpelExpression expr = new SpelExpressionParser().parseRaw("(3+2)*2"); assertEquals(10, expr.getValue()); }
@Test public void SPR11445_simple() { StandardEvaluationContext context = new StandardEvaluationContext(new Spr11445Class()); Expression expr = new SpelExpressionParser().parseRaw("echo(parameter())"); assertEquals(1, expr.getValue(context)); }
@Test public void SPR11445_beanReference() { StandardEvaluationContext context = new StandardEvaluationContext(); context.setBeanResolver(new Spr11445Class()); Expression expr = new SpelExpressionParser().parseRaw("@bean.echo(@bean.parameter())"); assertEquals(1, expr.getValue(context)); }
@Test public void selectFirstItemInList() throws Exception { Expression expression = new SpelExpressionParser().parseRaw("integers.^[#this<5]"); EvaluationContext context = new StandardEvaluationContext(new ListTestBean()); Object value = expression.getValue(context); assertTrue(value instanceof Integer); assertEquals(0, value); }
@Test public void selectFirstItemInPrimitiveArray() throws Exception { Expression expression = new SpelExpressionParser().parseRaw("ints.^[#this<5]"); EvaluationContext context = new StandardEvaluationContext(new ArrayTestBean()); Object value = expression.getValue(context); assertTrue(value instanceof Integer); assertEquals(0, value); }
@Test public void selectLastItemInList() throws Exception { Expression expression = new SpelExpressionParser().parseRaw("integers.$[#this<5]"); EvaluationContext context = new StandardEvaluationContext(new ListTestBean()); Object value = expression.getValue(context); assertTrue(value instanceof Integer); assertEquals(4, value); }
@Test public void selectFirstItemInArray() throws Exception { Expression expression = new SpelExpressionParser().parseRaw("integers.^[#this<5]"); EvaluationContext context = new StandardEvaluationContext(new ArrayTestBean()); Object value = expression.getValue(context); assertTrue(value instanceof Integer); assertEquals(0, value); }
@Test public void dollars2() { StandardEvaluationContext context = new StandardEvaluationContext(new XX()); Expression expr = null; expr = new SpelExpressionParser().parseRaw("m[$foo]"); context.setVariable("file_name", "$foo"); assertEquals("wibble", expr.getValue(context, String.class)); }
private void checkNumberError(String expression, SpelMessage expectedMessage) { try { SpelExpressionParser parser = new SpelExpressionParser(); parser.parseRaw(expression); fail(); } catch (ParseException ex) { assertTrue(ex instanceof SpelParseException); SpelParseException spe = (SpelParseException) ex; assertEquals(expectedMessage, spe.getMessageCode()); } }
@Test public void testPropertiesNested03() throws ParseException { try { new SpelExpressionParser().parseRaw("placeOfBirth.23"); fail(); } catch (SpelParseException spe) { assertEquals(SpelMessage.UNEXPECTED_DATA_AFTER_DOT, spe.getMessageCode()); assertEquals("23", spe.getInserts()[0]); } }
@Test public void testStringLiterals_DoubleQuotes_spr9620_2() { try { new SpelExpressionParser().parseRaw("\"double quote: \\\"\\\".\""); fail("Should have failed"); } catch (SpelParseException spe) { assertEquals(17, spe.getPosition()); assertEquals(SpelMessage.UNEXPECTED_ESCAPE_CHAR, spe.getMessageCode()); } }
@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()); }