Document the between operator in SpEL
Closes gh-32140
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2022 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.
|
||||
@@ -26,12 +26,18 @@ import org.springframework.expression.spel.SpelMessage;
|
||||
import org.springframework.expression.spel.support.BooleanTypedValue;
|
||||
|
||||
/**
|
||||
* Represents the between operator. The left operand to between must be a single value and
|
||||
* the right operand must be a list - this operator returns true if the left operand is
|
||||
* between (using the registered comparator) the two elements in the list. The definition
|
||||
* of between being inclusive follows the SQL BETWEEN definition.
|
||||
* Represents the {@code between} operator.
|
||||
*
|
||||
* <p>The left operand must be a single value, and the right operand must be a
|
||||
* 2-element list which defines the range.
|
||||
*
|
||||
* <p>This operator returns {@code true} if the left operand is between the two
|
||||
* elements in the range, inclusive (using the registered {@link TypeComparator}
|
||||
* for comparison). In addition, the first element in the range must be less than
|
||||
* or equal to the second element in the range.
|
||||
*
|
||||
* @author Andy Clement
|
||||
* @author Sam Brannen
|
||||
* @since 3.0
|
||||
*/
|
||||
public class OperatorBetween extends Operator {
|
||||
|
||||
@@ -221,6 +221,7 @@ class SpelDocumentationTests extends AbstractExpressionTests {
|
||||
void relationalOperators() {
|
||||
boolean result = parser.parseExpression("2 == 2").getValue(Boolean.class);
|
||||
assertThat(result).isTrue();
|
||||
|
||||
// evaluates to false
|
||||
result = parser.parseExpression("2 < -5.0").getValue(Boolean.class);
|
||||
assertThat(result).isFalse();
|
||||
@@ -232,17 +233,47 @@ class SpelDocumentationTests extends AbstractExpressionTests {
|
||||
|
||||
@Test
|
||||
void otherOperators() {
|
||||
// evaluates to false
|
||||
boolean falseValue = parser.parseExpression("'xyz' instanceof T(int)").getValue(Boolean.class);
|
||||
assertThat(falseValue).isFalse();
|
||||
boolean result;
|
||||
|
||||
// evaluates to true
|
||||
boolean trueValue = parser.parseExpression("'5.00' matches '^-?\\d+(\\.\\d{2})?$'").getValue(Boolean.class);
|
||||
assertThat(trueValue).isTrue();
|
||||
result = parser.parseExpression(
|
||||
"1 between {1, 5}").getValue(Boolean.class);
|
||||
assertThat(result).isTrue();
|
||||
|
||||
//evaluates to false
|
||||
falseValue = parser.parseExpression("'5.0067' matches '^-?\\d+(\\.\\d{2})?$'").getValue(Boolean.class);
|
||||
assertThat(falseValue).isFalse();
|
||||
// evaluates to false
|
||||
result = parser.parseExpression(
|
||||
"1 between {10, 15}").getValue(Boolean.class);
|
||||
assertThat(result).isFalse();
|
||||
|
||||
// evaluates to true
|
||||
result = parser.parseExpression(
|
||||
"'elephant' between {'aardvark', 'zebra'}").getValue(Boolean.class);
|
||||
assertThat(result).isTrue();
|
||||
|
||||
// evaluates to false
|
||||
result = parser.parseExpression(
|
||||
"'elephant' between {'aardvark', 'cobra'}").getValue(Boolean.class);
|
||||
assertThat(result).isFalse();
|
||||
|
||||
// evaluates to true
|
||||
result = parser.parseExpression(
|
||||
"123 instanceof T(Integer)").getValue(Boolean.class);
|
||||
assertThat(result).isTrue();
|
||||
|
||||
// evaluates to false
|
||||
result = parser.parseExpression(
|
||||
"'xyz' instanceof T(Integer)").getValue(Boolean.class);
|
||||
assertThat(result).isFalse();
|
||||
|
||||
// evaluates to true
|
||||
result = parser.parseExpression(
|
||||
"'5.00' matches '^-?\\d+(\\.\\d{2})?$'").getValue(Boolean.class);
|
||||
assertThat(result).isTrue();
|
||||
|
||||
// evaluates to false
|
||||
result = parser.parseExpression(
|
||||
"'5.0067' matches '^-?\\d+(\\.\\d{2})?$'").getValue(Boolean.class);
|
||||
assertThat(result).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user