From bdb2b0bbb19b97f483de77e76d78deb496453bc5 Mon Sep 17 00:00:00 2001 From: Andy Clement Date: Wed, 27 May 2009 19:37:17 +0000 Subject: [PATCH] test coverage git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@1270 50f2f4bb-b051-0410-bef5-90022cba6387 --- .../expression/spel/ast/Selection.java | 13 +++++++++---- .../expression/spel/InProgressTests.java | 13 +++++++++++++ .../expression/spel/ParsingTests.java | 5 +++++ 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/Selection.java b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/Selection.java index 55188a84934..f20b3fb288a 100644 --- a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/Selection.java +++ b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/Selection.java @@ -132,12 +132,17 @@ public class Selection extends SpelNodeImpl { } return new TypedValue(result,op.getTypeDescriptor()); } else { - if (operand==null && nullSafe) { - return TypedValue.NULL_TYPED_VALUE; + if (operand==null) { + if (nullSafe) { + return TypedValue.NULL_TYPED_VALUE; + } else { + throw new SpelEvaluationException(getStartPosition(), SpelMessages.INVALID_TYPE_FOR_SELECTION, + "null"); + } } else { throw new SpelEvaluationException(getStartPosition(), SpelMessages.INVALID_TYPE_FOR_SELECTION, - (operand == null ? "null" : operand.getClass().getName())); - } + operand.getClass().getName()); + } } } diff --git a/org.springframework.expression/src/test/java/org/springframework/expression/spel/InProgressTests.java b/org.springframework.expression/src/test/java/org/springframework/expression/spel/InProgressTests.java index faa2b5f277e..b3677afc8e4 100644 --- a/org.springframework.expression/src/test/java/org/springframework/expression/spel/InProgressTests.java +++ b/org.springframework.expression/src/test/java/org/springframework/expression/spel/InProgressTests.java @@ -65,6 +65,8 @@ public class InProgressTests extends ExpressionTestCase { @Test public void testProjection05() { evaluateAndCheckError("'abc'.![true]", SpelMessages.PROJECTION_NOT_SUPPORTED_ON_TYPE); + evaluateAndCheckError("null.![true]", SpelMessages.PROJECTION_NOT_SUPPORTED_ON_TYPE); + evaluate("null?.![true]", null, null); } @Test @@ -95,11 +97,22 @@ public class InProgressTests extends ExpressionTestCase { // evaluate("listOfNumbersUpToTen.?{#this>5}", "5", ArrayList.class); } + @Test public void testSelection04() { evaluateAndCheckError("mapOfNumbersUpToTen.?['hello'].size()",SpelMessages.RESULT_OF_SELECTION_CRITERIA_IS_NOT_BOOLEAN); } + @Test + public void testSelection05() { + evaluate("mapOfNumbersUpToTen.?[key>11].size()", "0", Integer.class); + evaluate("mapOfNumbersUpToTen.^[key>11]", null, null); + evaluate("mapOfNumbersUpToTen.$[key>11]", null, null); + evaluate("null?.$[key>11]", null, null); + evaluateAndCheckError("null.?[key>11]", SpelMessages.INVALID_TYPE_FOR_SELECTION); + evaluateAndCheckError("'abc'.?[key>11]", SpelMessages.INVALID_TYPE_FOR_SELECTION); + } + @Test public void testSelectionFirst01() { evaluate("listOfNumbersUpToTen.^[#isEven(#this) == 'y']", "2", Integer.class); diff --git a/org.springframework.expression/src/test/java/org/springframework/expression/spel/ParsingTests.java b/org.springframework.expression/src/test/java/org/springframework/expression/spel/ParsingTests.java index 5e0aea44f6d..df6185bac08 100644 --- a/org.springframework.expression/src/test/java/org/springframework/expression/spel/ParsingTests.java +++ b/org.springframework.expression/src/test/java/org/springframework/expression/spel/ParsingTests.java @@ -155,6 +155,11 @@ public class ParsingTests { parseCheck("3>=3", "(3 >= 3)"); } + @Test + public void testElvis() { + parseCheck("3?:1", "3 ?: 1"); + } + // public void testRelOperatorsIn01() { // parseCheck("3 in {1,2,3,4,5}", "(3 in {1,2,3,4,5})"); // }