@ -18,17 +18,21 @@ package org.springframework.expression.spel;
@@ -18,17 +18,21 @@ package org.springframework.expression.spel;
import org.junit.jupiter.api.Test ;
import org.springframework.expression.EvaluationContext ;
import org.springframework.expression.Expression ;
import org.springframework.expression.spel.standard.SpelExpressionParser ;
import org.springframework.expression.spel.support.SimpleEvaluationContext ;
import org.springframework.util.ObjectUtils ;
import static org.assertj.core.api.Assertions.assertThat ;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType ;
/ * *
* Test construction of arrays .
*
* @author Andy Clement
* @author Sam Brannen
* @author Juergen Hoeller
* /
class ArrayConstructorTests extends AbstractExpressionTests {
@ -97,7 +101,7 @@ class ArrayConstructorTests extends AbstractExpressionTests {
@@ -97,7 +101,7 @@ class ArrayConstructorTests extends AbstractExpressionTests {
void typeArrayConstructors ( ) {
evaluate ( "new String[]{'a','b','c','d'}[1]" , "b" , String . class ) ;
evaluateAndCheckError ( "new String[]{'a','b','c','d'}.size()" , SpelMessage . METHOD_NOT_FOUND , 30 , "size()" ,
"java.lang.String[]" ) ;
"java.lang.String[]" ) ;
evaluate ( "new String[]{'a','b','c','d'}.length" , 4 , Integer . class ) ;
}
@ -110,10 +114,18 @@ class ArrayConstructorTests extends AbstractExpressionTests {
@@ -110,10 +114,18 @@ class ArrayConstructorTests extends AbstractExpressionTests {
void multiDimensionalArrays ( ) {
evaluate ( "new String[2][2]" , "[Ljava.lang.String;[2]{[2]{null,null},[2]{null,null}}" , String [ ] [ ] . class ) ;
evaluate ( "new String[3][2][1]" ,
"[[Ljava.lang.String;[3]{[2]{[1]{null},[1]{null}},[2]{[1]{null},[1]{null}},[2]{[1]{null},[1]{null}}}" ,
String [ ] [ ] [ ] . class ) ;
"[[Ljava.lang.String;[3]{[2]{[1]{null},[1]{null}},[2]{[1]{null},[1]{null}},[2]{[1]{null},[1]{null}}}" ,
String [ ] [ ] [ ] . class ) ;
}
@Test
void noArrayConstruction ( ) {
EvaluationContext context = SimpleEvaluationContext . forReadWriteDataBinding ( ) . build ( ) ;
assertThatExceptionOfType ( SpelEvaluationException . class ) . isThrownBy ( ( ) - >
parser . parseExpression ( "new int[2]" ) . getValue ( context ) ) ;
}
private void evaluateArrayBuildingExpression ( String expression , String expectedToString ) {
SpelExpressionParser parser = new SpelExpressionParser ( ) ;
Expression e = parser . parseExpression ( expression ) ;