Polishing
This commit is contained in:
parent
62fa3f11c1
commit
dc6ce30663
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2023 the original author or authors.
|
||||
* Copyright 2002-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -149,7 +149,7 @@ public abstract class SpelNodeImpl implements SpelNode, Opcodes {
|
|||
public TypedValue setValueInternal(ExpressionState expressionState, Supplier<TypedValue> valueSupplier)
|
||||
throws EvaluationException {
|
||||
|
||||
throw new SpelEvaluationException(getStartPosition(), SpelMessage.SETVALUE_NOT_SUPPORTED, getClass());
|
||||
throw new SpelEvaluationException(getStartPosition(), SpelMessage.SETVALUE_NOT_SUPPORTED, getClass().getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -28,11 +28,16 @@ import org.junit.jupiter.params.provider.ValueSource;
|
|||
import org.springframework.expression.EvaluationException;
|
||||
import org.springframework.expression.Expression;
|
||||
import org.springframework.expression.ParseException;
|
||||
import org.springframework.expression.spel.ast.Assign;
|
||||
import org.springframework.expression.spel.testresources.PlaceOfBirth;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
||||
import static org.springframework.expression.spel.SpelMessage.ARRAY_INDEX_OUT_OF_BOUNDS;
|
||||
import static org.springframework.expression.spel.SpelMessage.COLLECTION_INDEX_OUT_OF_BOUNDS;
|
||||
import static org.springframework.expression.spel.SpelMessage.INDEXING_NOT_SUPPORTED_FOR_TYPE;
|
||||
import static org.springframework.expression.spel.SpelMessage.SETVALUE_NOT_SUPPORTED;
|
||||
import static org.springframework.expression.spel.SpelMessage.TYPE_CONVERSION_ERROR;
|
||||
|
||||
/**
|
||||
|
@ -56,22 +61,22 @@ class SetValueTests extends AbstractExpressionTests {
|
|||
|
||||
@Test
|
||||
void setValueFailsWhenLeftOperandIsNotAssignable() {
|
||||
setValueAndExpectError("3=4", "enigma");
|
||||
setValueAndExpectError("3=4", "enigma", SETVALUE_NOT_SUPPORTED, 1, Assign.class.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
void setValueFailsWhenLeftOperandCannotBeIndexed() {
|
||||
setValueAndExpectError("'hello'[3]", 'p');
|
||||
setValueAndExpectError("'hello'[3]", 'p', INDEXING_NOT_SUPPORTED_FOR_TYPE, 7, String.class.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
void setArrayElementFailsWhenIndexIsOutOfBounds() {
|
||||
setValueAndExpectError("placesLived[23]", "Wien");
|
||||
setValueAndExpectError("placesLived[23]", "Wien", ARRAY_INDEX_OUT_OF_BOUNDS, 11, 1, 23);
|
||||
}
|
||||
|
||||
@Test
|
||||
void setListElementFailsWhenIndexIsOutOfBounds() {
|
||||
setValueAndExpectError("placesLivedList[23]", "Wien");
|
||||
setValueAndExpectError("placesLivedList[23]", "Wien", COLLECTION_INDEX_OUT_OF_BOUNDS, 15, 1, 23);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -118,19 +123,6 @@ class SetValueTests extends AbstractExpressionTests {
|
|||
setValue("arrayContainer.doubles[1]", 3.4d);
|
||||
}
|
||||
|
||||
@Test
|
||||
void setArrayElementToPrimitiveFromStringFails() {
|
||||
String notPrimitiveOrWrapper = "not primitive or wrapper";
|
||||
setValueAndExpectError("arrayContainer.booleans[1]", notPrimitiveOrWrapper);
|
||||
setValueAndExpectError("arrayContainer.chars[1]", notPrimitiveOrWrapper);
|
||||
setValueAndExpectError("arrayContainer.shorts[1]", notPrimitiveOrWrapper);
|
||||
setValueAndExpectError("arrayContainer.bytes[1]", notPrimitiveOrWrapper);
|
||||
setValueAndExpectError("arrayContainer.ints[1]", notPrimitiveOrWrapper);
|
||||
setValueAndExpectError("arrayContainer.longs[1]", notPrimitiveOrWrapper);
|
||||
setValueAndExpectError("arrayContainer.floats[1]", notPrimitiveOrWrapper);
|
||||
setValueAndExpectError("arrayContainer.doubles[1]", notPrimitiveOrWrapper);
|
||||
}
|
||||
|
||||
@Test
|
||||
void setArrayElementToPrimitiveFromSingleElementPrimitiveArray() {
|
||||
setValue("arrayContainer.booleans[1]", new boolean[] { false }, false);
|
||||
|
@ -167,6 +159,21 @@ class SetValueTests extends AbstractExpressionTests {
|
|||
setValue("arrayContainer.doubles[1]", List.of(42D), 42D);
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@ValueSource(strings = {
|
||||
"arrayContainer.booleans[1]",
|
||||
"arrayContainer.chars[1]",
|
||||
"arrayContainer.shorts[1]",
|
||||
"arrayContainer.bytes[1]",
|
||||
"arrayContainer.ints[1]",
|
||||
"arrayContainer.longs[1]",
|
||||
"arrayContainer.floats[1]",
|
||||
"arrayContainer.doubles[1]"
|
||||
})
|
||||
void setArrayElementToPrimitiveFromStringFailsWithTypeConversionError(String expression) {
|
||||
setValueAndExpectError(expression, "enigma", TYPE_CONVERSION_ERROR);
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@ValueSource(strings = {
|
||||
"arrayContainer.booleans[1]",
|
||||
|
|
Loading…
Reference in New Issue