/** * Create a new instance with a default {@link SpelExpressionParser}. */ protected CachedExpressionEvaluator() { this(new SpelExpressionParser()); }
@Test(expected = SpelEvaluationException.class) public void spelExpressionListIndexAccessNullVariables() { ExpressionParser parser = new SpelExpressionParser(); Expression spelExpression = parser.parseExpression("#aList[0] eq 'one'"); spelExpression.getValue(); }
@SuppressWarnings("unchecked") @Test public void testListOfScalar() { listOfScalarNotGeneric = new ArrayList(1); listOfScalarNotGeneric.add("5"); SpelExpressionParser parser = new SpelExpressionParser(); Expression expression = parser.parseExpression("listOfScalarNotGeneric[0]"); assertEquals(new Integer(5), expression.getValue(this, Integer.class)); }
@Test public void SPR9486_floatPowerFloat() { Number expectedResult = Math.pow(10.21f, -10.2f); ExpressionParser parser = new SpelExpressionParser(); StandardEvaluationContext context = new StandardEvaluationContext(); Expression expression = parser.parseExpression("10.21f ^ -10.2f"); Number result = expression.getValue(context, null, Number.class); assertEquals(expectedResult, result); }
@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 SPR9486_addFloatWithFloat() { Number expectedNumber = 10.21f + 10.2f; ExpressionParser parser = new SpelExpressionParser(); StandardEvaluationContext context = new StandardEvaluationContext(); Expression expression = parser.parseExpression("10.21f + 10.2f"); Number result = expression.getValue(context, null, Number.class); assertEquals(expectedNumber, result); }
@Test public void SPR9486_floatEqFloatUnaryMinus() { Boolean expectedResult = -10.21f == -10.2f; ExpressionParser parser = new SpelExpressionParser(); StandardEvaluationContext context = new StandardEvaluationContext(); Expression expression = parser.parseExpression("-10.21f == -10.2f"); Boolean result = expression.getValue(context, null, Boolean.class); assertEquals(expectedResult, result); }
@Test @SuppressWarnings("unchecked") public void selectLastItemInMap() { EvaluationContext context = new StandardEvaluationContext(new MapTestBean()); ExpressionParser parser = new SpelExpressionParser(); Expression exp = parser.parseExpression("colors.$[key.startsWith('b')]"); Map<String, String> colorsMap = (Map<String, String>) exp.getValue(context); assertEquals(1, colorsMap.size()); assertEquals("brown", colorsMap.keySet().iterator().next()); }
@Test public void SPR9194() { TestClass2 one = new TestClass2("abc"); TestClass2 two = new TestClass2("abc"); Map<String, TestClass2> map = new HashMap<>(); map.put("one", one); map.put("two", two); SpelExpressionParser parser = new SpelExpressionParser(); Expression expr = parser.parseExpression("['one'] == ['two']"); assertTrue(expr.getValue(map, Boolean.class)); }
@Test public void varargsAgainstProxy_SPR16122() { SpelExpressionParser parser = new SpelExpressionParser(); Expression expr = parser.parseExpression("process('a', 'b')"); VarargsReceiver receiver = new VarargsReceiver(); VarargsInterface proxy = (VarargsInterface) Proxy.newProxyInstance( getClass().getClassLoader(), new Class<?>[] {VarargsInterface.class}, (proxy1, method, args) -> method.invoke(receiver, args)); assertEquals("OK", expr.getValue(new StandardEvaluationContext(receiver))); assertEquals("OK", expr.getValue(new StandardEvaluationContext(proxy))); }
@Test(expected = SpelEvaluationException.class) public void testCreateMapsOnAttemptToIndexNull01() { TestClass testClass = new TestClass(); StandardEvaluationContext ctx = new StandardEvaluationContext(testClass); ExpressionParser parser = new SpelExpressionParser(new SpelParserConfiguration(true, true)); Object o = parser.parseExpression("map['a']").getValue(ctx); assertNull(o); o = parser.parseExpression("map").getValue(ctx); assertNotNull(o); o = parser.parseExpression("map2['a']").getValue(ctx); // map2 should be null, there is no setter }
@Test @SuppressWarnings("unchecked") public void selectionWithMap() { EvaluationContext context = new StandardEvaluationContext(new MapTestBean()); ExpressionParser parser = new SpelExpressionParser(); Expression exp = parser.parseExpression("colors.?[key.startsWith('b')]"); Map<String, String> colorsMap = (Map<String, String>) exp.getValue(context); assertEquals(3, colorsMap.size()); assertTrue(colorsMap.containsKey("beige")); assertTrue(colorsMap.containsKey("blue")); assertTrue(colorsMap.containsKey("brown")); }
@Test public void SPR10091_primitiveTestValue() { ExpressionParser parser = new SpelExpressionParser(); StandardEvaluationContext evaluationContext = new StandardEvaluationContext(new BooleanHolder()); Object value = parser.parseExpression("primitiveProperty").getValue(evaluationContext); assertNotNull(value); }
private void doTestSpr10146(String expression, String expectedMessage) { thrown.expect(SpelParseException.class); thrown.expectMessage(expectedMessage); new SpelExpressionParser().parseExpression(expression); }
@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)); }
@Test public void SPR12035() { ExpressionParser parser = new SpelExpressionParser(); Expression expression1 = parser.parseExpression("list.?[ value>2 ].size()!=0"); assertTrue(expression1.getValue(new BeanClass(new ListOf(1.1), new ListOf(2.2)), Boolean.class)); Expression expression2 = parser.parseExpression("list.?[ T(java.lang.Math).abs(value) > 2 ].size()!=0"); assertTrue(expression2.getValue(new BeanClass(new ListOf(1.1), new ListOf(-2.2)), Boolean.class)); }
@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 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()); }