More tests, corrections in standard comparator, more helper methods in StandardEvaluationContext.
This commit is contained in:
@@ -68,21 +68,6 @@ public class DefaultComparatorUnitTests extends TestCase {
|
||||
assertTrue(comparator.compare("a","a")==0);
|
||||
assertTrue(comparator.compare("a","b")<0);
|
||||
assertTrue(comparator.compare("b","a")>0);
|
||||
|
||||
try {
|
||||
comparator.compare("a",3);
|
||||
fail("Should have failed");
|
||||
} catch (EvaluationException ee) {
|
||||
SpelException sEx = (SpelException)ee;
|
||||
assertEquals(SpelMessages.NOT_COMPARABLE,sEx.getMessageUnformatted());
|
||||
}
|
||||
try {
|
||||
comparator.compare(2,"b");
|
||||
fail("Should have failed");
|
||||
} catch (EvaluationException ee) {
|
||||
SpelException sEx = (SpelException)ee;
|
||||
assertEquals(SpelMessages.NOT_COMPARABLE,sEx.getMessageUnformatted());
|
||||
}
|
||||
}
|
||||
|
||||
public void testCanCompare() throws EvaluationException {
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.springframework.expression.spel;
|
||||
|
||||
import org.springframework.expression.EvaluationContext;
|
||||
import org.springframework.expression.Expression;
|
||||
import org.springframework.expression.spel.support.StandardEvaluationContext;
|
||||
|
||||
@@ -237,5 +238,25 @@ public class EvaluationTests extends ExpressionTestCase {
|
||||
evaluateAndAskForReturnType("3*4+5", (short) 17, Short.class);
|
||||
evaluateAndAskForReturnType("3*4+5", "17", String.class);
|
||||
}
|
||||
|
||||
|
||||
public void testAdvancedNumerics() throws Exception {
|
||||
int twentyFour = parser.parseExpression("2.0 * 3e0 * 4").getValue(Integer.class);
|
||||
assertEquals(24,twentyFour);
|
||||
double one = parser.parseExpression("8.0 / 5e0 % 2").getValue(Double.class);
|
||||
assertEquals(1.6d,one);
|
||||
int o = parser.parseExpression("8.0 / 5e0 % 2").getValue(Integer.class);
|
||||
assertEquals(1,o);
|
||||
int sixteen = parser.parseExpression("-2 ^ 4").getValue(Integer.class);
|
||||
assertEquals(16,sixteen);
|
||||
int minusFortyFive = parser.parseExpression("1+2-3*8^2/2/2").getValue(Integer.class);
|
||||
assertEquals(-45,minusFortyFive);
|
||||
}
|
||||
|
||||
public void testComparison() throws Exception {
|
||||
EvaluationContext context = TestScenarioCreator.getTestEvaluationContext();
|
||||
boolean trueValue = parser.parseExpression("T(java.util.Date) == Birthdate.Class").getValue(context, Boolean.class);
|
||||
assertTrue(trueValue);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -236,10 +236,21 @@ public class OperatorTests extends ExpressionTestCase {
|
||||
|
||||
node = getOperatorNode((SpelExpression)parser.parseExpression("3 between 4"));
|
||||
assertEquals("between",node.getOperatorName());
|
||||
|
||||
node = getOperatorNode((SpelExpression)parser.parseExpression("3 ^ 4"));
|
||||
assertEquals("^",node.getOperatorName());
|
||||
}
|
||||
|
||||
public void testOperatorOverloading() {
|
||||
evaluateAndCheckError("'a' * '2'", SpelMessages.OPERATOR_NOT_SUPPORTED_BETWEEN_TYPES);
|
||||
evaluateAndCheckError("'a' ^ '2'", SpelMessages.OPERATOR_NOT_SUPPORTED_BETWEEN_TYPES);
|
||||
}
|
||||
|
||||
public void testPower() {
|
||||
evaluate("3^2",9,Integer.class);
|
||||
evaluate("3.0d^2.0d",9.0d,Double.class);
|
||||
evaluate("3L^2L",9L,Long.class);
|
||||
evaluate("(2^32)^2",9223372036854775807L,Long.class);
|
||||
}
|
||||
|
||||
public void testMixedOperands_FloatsAndDoubles() {
|
||||
|
||||
Reference in New Issue
Block a user