From 107f47cfcf3894d014fdc7ead74a2399675f2d34 Mon Sep 17 00:00:00 2001 From: Sam Brannen <104798+sbrannen@users.noreply.github.com> Date: Sat, 9 Mar 2024 13:46:39 +0100 Subject: [PATCH] Add tests for status quo for SpEL compiler --- .../spel/SpelCompilationCoverageTests.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/spring-expression/src/test/java/org/springframework/expression/spel/SpelCompilationCoverageTests.java b/spring-expression/src/test/java/org/springframework/expression/spel/SpelCompilationCoverageTests.java index 16b489c2a7..c7eced339d 100644 --- a/spring-expression/src/test/java/org/springframework/expression/spel/SpelCompilationCoverageTests.java +++ b/spring-expression/src/test/java/org/springframework/expression/spel/SpelCompilationCoverageTests.java @@ -536,6 +536,14 @@ public class SpelCompilationCoverageTests extends AbstractExpressionTests { assertCanCompile(expression); assertThat(expression.getValue(map)).isEqualTo(111); assertThat(getAst().getExitDescriptor()).isEqualTo("Ljava/lang/Object"); + + // String key not enclosed in single quotes + expression = parser.parseExpression("[aaa]"); + + assertThat(expression.getValue(map)).isEqualTo(111); + assertCanCompile(expression); + assertThat(expression.getValue(map)).isEqualTo(111); + assertThat(getAst().getExitDescriptor()).isEqualTo("Ljava/lang/Object"); } @Test @@ -644,6 +652,19 @@ public class SpelCompilationCoverageTests extends AbstractExpressionTests { assertThat(getAst().getExitDescriptor()).isEqualTo("I"); } + @Test + void indexIntoStringCannotBeCompiled() { + String text = "enigma"; + + // "g" is the 4th letter in "enigma" (index 3) + expression = parser.parseExpression("[3]"); + + assertThat(expression.getValue(text)).isEqualTo("g"); + assertCannotCompile(expression); + assertThat(expression.getValue(text)).isEqualTo("g"); + assertThat(getAst().getExitDescriptor()).isNull(); + } + @Test void indexIntoObject() { TestClass6 tc = new TestClass6();