test coverage. now > 95%

This commit is contained in:
Andy Clement 2009-05-27 19:59:32 +00:00
parent 233c84e0b9
commit 88e32a3cfe
4 changed files with 27 additions and 6 deletions

View File

@ -119,8 +119,7 @@ public class SpelExpression implements Expression {
* {@inheritDoc}
*/
public Class getValueType(EvaluationContext context) throws EvaluationException {
// TODO is this a legal implementation? The null return value could be very unhelpful. See other getValueType()
// also.
// TODO both getValueType() methods could use getValueInternal and return a type descriptor from the resultant TypedValue
Object value = getValue(context);
return (value != null ? value.getClass() : null);
}

View File

@ -40,10 +40,8 @@ public abstract class SpelNodeImpl implements SpelNode, CommonTypeDescriptors {
public SpelNodeImpl(int pos, SpelNodeImpl... operands) {
this.pos = pos;
if (pos==0) {
// pos embodies start and end so can never be zero because tokens cannot be zero length
throw new IllegalStateException("Node cannot have zero position: "+this.getClass());
}
// pos combines start and end so can never be zero because tokens cannot be zero length
assert pos!=0;
if (operands!=null && operands.length>0) {
this.children = operands;
}

View File

@ -55,6 +55,11 @@ public class SetValueTests extends ExpressionTestCase {
setValue("inventions[0]", "Just the telephone");
}
@Test
public void testErrorCase() {
setValueExpectError("3=4", null);
}
@Test
public void testSetElementOfNull() {
setValueExpectError("new org.springframework.expression.spel.testresources.Inventor().inventions[1]",SpelMessages.CANNOT_INDEX_INTO_NULL_VALUE);

View File

@ -17,6 +17,7 @@
import junit.framework.Assert;
import org.junit.Test;
import org.springframework.expression.EvaluationContext;
import org.springframework.expression.EvaluationException;
import org.springframework.expression.ExpressionException;
import org.springframework.expression.ParseException;
@ -26,6 +27,7 @@ import org.springframework.expression.spel.SpelNode;
import org.springframework.expression.spel.SpelParseException;
import org.springframework.expression.spel.ast.OpAnd;
import org.springframework.expression.spel.ast.OpOr;
import org.springframework.expression.spel.support.StandardEvaluationContext;
public class SpelParserTests {
@ -38,6 +40,23 @@ public class SpelParserTests {
Assert.assertNotNull(expr.getAST());
Assert.assertEquals(2,expr.getValue());
Assert.assertEquals(Integer.class,expr.getValueType());
Assert.assertEquals(2,expr.getAST().getValue(null));
}
@Test
public void valueType() throws Exception {
SpelExpressionParser parser = new SpelExpressionParser();
EvaluationContext ctx = new StandardEvaluationContext();
Class c = parser.parse("2").getValueType();
Assert.assertEquals(Integer.class,c);
c = parser.parse("12").getValueType(ctx);
Assert.assertEquals(Integer.class,c);
c = parser.parse("null").getValueType();
Assert.assertNull(c);
c = parser.parse("null").getValueType(ctx);
Assert.assertNull(c);
Object o = parser.parse("null").getValue(ctx,Integer.class);
Assert.assertNull(o);
}
@Test