removing: initializers/processors/in operator

This commit is contained in:
Andy Clement
2008-09-17 15:23:15 +00:00
parent afdf54eff8
commit 769e706be7
26 changed files with 1749 additions and 3586 deletions

View File

@@ -24,50 +24,56 @@ import org.springframework.expression.spel.standard.StandardEvaluationContext;
*/
public class ConstructorInvocationTests extends ExpressionTestCase {
public void testPrimitiveTypeArrayConstructors() {
evaluate("new int[]{1,2,3,4}.count()", 4, Integer.class);
evaluate("new boolean[]{true,false,true}.count()", 3, Integer.class);
evaluate("new char[]{'a','b','c'}.count()", 3, Integer.class);
evaluate("new long[]{1,2,3,4,5}.count()", 5, Integer.class);
evaluate("new short[]{2,3,4,5,6}.count()", 5, Integer.class);
evaluate("new double[]{1d,2d,3d,4d}.count()", 4, Integer.class);
evaluate("new float[]{1f,2f,3f,4f}.count()", 4, Integer.class);
evaluate("new byte[]{1,2,3,4}.count()", 4, Integer.class);
}
// public void testPrimitiveTypeArrayConstructors() {
// evaluate("new int[]{1,2,3,4}.count()", 4, Integer.class);
// evaluate("new boolean[]{true,false,true}.count()", 3, Integer.class);
// evaluate("new char[]{'a','b','c'}.count()", 3, Integer.class);
// evaluate("new long[]{1,2,3,4,5}.count()", 5, Integer.class);
// evaluate("new short[]{2,3,4,5,6}.count()", 5, Integer.class);
// evaluate("new double[]{1d,2d,3d,4d}.count()", 4, Integer.class);
// evaluate("new float[]{1f,2f,3f,4f}.count()", 4, Integer.class);
// evaluate("new byte[]{1,2,3,4}.count()", 4, Integer.class);
// }
public void testPrimitiveTypeArrayConstructorsElements() {
evaluate("new int[]{1,2,3,4}[0]", 1, Integer.class);
evaluate("new boolean[]{true,false,true}[0]", true, Boolean.class);
evaluate("new char[]{'a','b','c'}[0]", 'a', Character.class);
evaluate("new long[]{1,2,3,4,5}[0]", 1L, Long.class);
evaluate("new short[]{2,3,4,5,6}[0]", (short) 2, Short.class);
evaluate("new double[]{1d,2d,3d,4d}[0]", (double) 1, Double.class);
evaluate("new float[]{1f,2f,3f,4f}[0]", (float) 1, Float.class);
evaluate("new byte[]{1,2,3,4}[0]", (byte) 1, Byte.class);
}
// public void testPrimitiveTypeArrayConstructorsElements() {
// evaluate("new int[]{1,2,3,4}[0]", 1, Integer.class);
// evaluate("new boolean[]{true,false,true}[0]", true, Boolean.class);
// evaluate("new char[]{'a','b','c'}[0]", 'a', Character.class);
// evaluate("new long[]{1,2,3,4,5}[0]", 1L, Long.class);
// evaluate("new short[]{2,3,4,5,6}[0]", (short) 2, Short.class);
// evaluate("new double[]{1d,2d,3d,4d}[0]", (double) 1, Double.class);
// evaluate("new float[]{1f,2f,3f,4f}[0]", (float) 1, Float.class);
// evaluate("new byte[]{1,2,3,4}[0]", (byte) 1, Byte.class);
// }
public void testTypeConstructors() {
evaluate("new String('hello world')", "hello world", String.class);
evaluate("new String(new char[]{'h','e','l','l','o'})", "hello", String.class);
// evaluate("new String(new char[]{'h','e','l','l','o'})", "hello", String.class);
}
public void testErrorCases() {
evaluateAndCheckError("new char[7]{'a','c','d','e'}", SpelMessages.INITIALIZER_LENGTH_INCORRECT);
evaluateAndCheckError("new char[3]{'a','c','d','e'}", SpelMessages.INITIALIZER_LENGTH_INCORRECT);
evaluateAndCheckError("new char[2]{'hello','world'}", SpelMessages.TYPE_CONVERSION_ERROR);
evaluateAndCheckError("new String('a','c','d')", SpelMessages.CONSTRUCTOR_NOT_FOUND);
}
// public void testErrorCases() {
// evaluateAndCheckError("new char[7]{'a','c','d','e'}", SpelMessages.INITIALIZER_LENGTH_INCORRECT);
// evaluateAndCheckError("new char[3]{'a','c','d','e'}", SpelMessages.INITIALIZER_LENGTH_INCORRECT);
// evaluateAndCheckError("new char[2]{'hello','world'}", SpelMessages.TYPE_CONVERSION_ERROR);
// evaluateAndCheckError("new String('a','c','d')", SpelMessages.CONSTRUCTOR_NOT_FOUND);
// }
public void testTypeArrayConstructors() {
evaluate("new String[]{'a','b','c','d'}[1]", "b", String.class);
evaluateAndCheckError("new String[]{'a','b','c','d'}.size()", SpelMessages.METHOD_NOT_FOUND, 30, "size()", "java.lang.String[]");
evaluateAndCheckError("new String[]{'a','b','c','d'}.juggernaut", SpelMessages.PROPERTY_OR_FIELD_NOT_FOUND, 30, "juggernaut", "java.lang.String[]");
evaluate("new String[]{'a','b','c','d'}.length", 4, Integer.class);
}
public void testMultiDimensionalArrays() {
evaluate("new String[3,4]","[Ljava.lang.String;[3]{java.lang.String[4]{null,null,null,null},java.lang.String[4]{null,null,null,null},java.lang.String[4]{null,null,null,null}}",new String[3][4].getClass());
}
// public void testTypeArrayConstructors() {
// evaluate("new String[]{'a','b','c','d'}[1]", "b", String.class);
// evaluateAndCheckError("new String[]{'a','b','c','d'}.size()", SpelMessages.METHOD_NOT_FOUND, 30, "size()",
// "java.lang.String[]");
// evaluateAndCheckError("new String[]{'a','b','c','d'}.juggernaut", SpelMessages.PROPERTY_OR_FIELD_NOT_FOUND, 30,
// "juggernaut", "java.lang.String[]");
// evaluate("new String[]{'a','b','c','d'}.length", 4, Integer.class);
// }
// public void testMultiDimensionalArrays() {
// evaluate(
// "new String[3,4]",
// "[Ljava.lang.String;[3]{java.lang.String[4]{null,null,null,null},java.lang.String[4]{null,null,null,null},java.lang.String[4]{null,null,null,null}}"
// ,
// new String[3][4].getClass());
// }
/*
* These tests are attempting to call constructors where we need to widen or convert the argument in order to
@@ -84,7 +90,7 @@ public class ConstructorInvocationTests extends ExpressionTestCase {
// Closest ctor will be new String(String) and converter supports Double>String
evaluate("new String(3.0d)", "3.0", String.class);
}
public void testVarargsInvocation01() throws Exception {
// Calling 'public TestCode(String... strings)'
SpelExpressionParser parser = new SpelExpressionParser();
@@ -98,7 +104,7 @@ public class ConstructorInvocationTests extends ExpressionTestCase {
v = parser.parseExpression("new TestType(1,2,3)").getValue(ctx);
v = parser.parseExpression("new TestType(1)").getValue(ctx);
v = parser.parseExpression("new TestType(1,'a',3.0d)").getValue(ctx);
v = parser.parseExpression("new TestType(new String[]{'a','b','c'})").getValue(ctx);
// v = parser.parseExpression("new TestType(new String[]{'a','b','c'})").getValue(ctx);
}
}

View File

@@ -15,8 +15,6 @@
*/
package org.springframework.expression.spel;
import java.util.ArrayList;
import java.util.HashMap;
/**
* Tests the evaluation of real expressions in a real context.
@@ -46,42 +44,42 @@ public class EvaluationTests extends ExpressionTestCase {
evaluate("3 >= 3", "true", Boolean.class);
}
public void testRelOperatorsIn01() {
evaluate("3 in {1,2,3,4,5}", "true", Boolean.class);
}
// public void testRelOperatorsIn01() {
// evaluate("3 in {1,2,3,4,5}", "true", Boolean.class);
// }
public void testRelOperatorsIn02() {
evaluate("name in {null, \"Nikola Tesla\"}", "true", Boolean.class);
evaluate("name in {null, \"Anonymous\"}", "false", Boolean.class);
}
public void testRelOperatorsBetween01() {
evaluate("1 between {1, 5}", "true", Boolean.class);
}
public void testRelOperatorsBetween02() {
evaluate("'efg' between {'abc', 'xyz'}", "true", Boolean.class);
}
public void testRelOperatorsBetweenErrors01() {
evaluateAndCheckError("1 between T(String)", SpelMessages.BETWEEN_RIGHT_OPERAND_MUST_BE_TWO_ELEMENT_LIST, 12);
}
public void testRelOperatorsBetweenErrors02() {
evaluateAndCheckError("'abc' between {5,7}", SpelMessages.NOT_COMPARABLE, 6);
}
// public void testRelOperatorsIn02() {
// evaluate("name in {null, \"Nikola Tesla\"}", "true", Boolean.class);
// evaluate("name in {null, \"Anonymous\"}", "false", Boolean.class);
// }
//
// public void testRelOperatorsBetween01() {
// evaluate("1 between {1, 5}", "true", Boolean.class);
// }
//
// public void testRelOperatorsBetween02() {
// evaluate("'efg' between {'abc', 'xyz'}", "true", Boolean.class);
// }
//
// public void testRelOperatorsBetweenErrors01() {
// evaluateAndCheckError("1 between T(String)", SpelMessages.BETWEEN_RIGHT_OPERAND_MUST_BE_TWO_ELEMENT_LIST, 12);
// }
//
// public void testRelOperatorsBetweenErrors02() {
// evaluateAndCheckError("'abc' between {5,7}", SpelMessages.NOT_COMPARABLE, 6);
// }
public void testRelOperatorsIs01() {
evaluate("'xyz' instanceof T(int)", "false", Boolean.class);
}
public void testRelOperatorsIs02() {
evaluate("{1, 2, 3, 4, 5} instanceof T(List)", "true", Boolean.class);
}
public void testRelOperatorsIs03() {
evaluate("{1, 2, 3, 4, 5} instanceof T(List)", "true", Boolean.class);
}
// public void testRelOperatorsIs02() {
// evaluate("{1, 2, 3, 4, 5} instanceof T(List)", "true", Boolean.class);
// }
//
// public void testRelOperatorsIs03() {
// evaluate("{1, 2, 3, 4, 5} instanceof T(List)", "true", Boolean.class);
// }
public void testRelOperatorsIs04() {
evaluate("null instanceof T(String)", "false", Boolean.class);
@@ -148,70 +146,70 @@ public class EvaluationTests extends ExpressionTestCase {
}
// inline list creation
public void testInlineListCreation01() {
evaluate("{1, 2, 3, 4, 5}", "[1, 2, 3, 4, 5]", ArrayList.class);
}
public void testInlineListCreation02() {
evaluate("{'abc', 'xyz'}", "[abc, xyz]", ArrayList.class);
}
// inline map creation
public void testInlineMapCreation01() {
evaluate("#{'key1':'Value 1', 'today':'Monday'}", "{key1=Value 1, today=Monday}", HashMap.class);
}
public void testInlineMapCreation02() {
evaluate("#{1:'January', 2:'February', 3:'March'}.size()", 3, Integer.class);// "{2=February, 1=January,
// 3=March}", HashMap.class);
}
public void testInlineMapCreation03() {
evaluate("#{'key1':'Value 1', 'today':'Monday'}['key1']", "Value 1", String.class);
}
public void testInlineMapCreation04() {
evaluate("#{1:'January', 2:'February', 3:'March'}[3]", "March", String.class);
}
public void testInlineMapCreation05() {
evaluate("#{1:'January', 2:'February', 3:'March'}.get(2)", "February", String.class);
}
// set construction
public void testSetConstruction01() {
evaluate("new HashSet().addAll({'a','b','c'})", "true", Boolean.class);
}
// public void testInlineListCreation01() {
// evaluate("{1, 2, 3, 4, 5}", "[1, 2, 3, 4, 5]", ArrayList.class);
// }
//
// public void testInlineListCreation02() {
// evaluate("{'abc', 'xyz'}", "[abc, xyz]", ArrayList.class);
// }
//
// // inline map creation
// public void testInlineMapCreation01() {
// evaluate("#{'key1':'Value 1', 'today':'Monday'}", "{key1=Value 1, today=Monday}", HashMap.class);
// }
//
// public void testInlineMapCreation02() {
// evaluate("#{1:'January', 2:'February', 3:'March'}.size()", 3, Integer.class);// "{2=February, 1=January,
// // 3=March}", HashMap.class);
// }
//
// public void testInlineMapCreation03() {
// evaluate("#{'key1':'Value 1', 'today':'Monday'}['key1']", "Value 1", String.class);
// }
//
// public void testInlineMapCreation04() {
// evaluate("#{1:'January', 2:'February', 3:'March'}[3]", "March", String.class);
// }
//
// public void testInlineMapCreation05() {
// evaluate("#{1:'January', 2:'February', 3:'March'}.get(2)", "February", String.class);
// }
//
// // set construction
// public void testSetConstruction01() {
// evaluate("new HashSet().addAll({'a','b','c'})", "true", Boolean.class);
// }
// constructors
public void testConstructorInvocation01() {
evaluate("new String('hello')", "hello", String.class);
}
public void testConstructorInvocation02() {
evaluate("new String[3]", "java.lang.String[3]{null,null,null}", String[].class);
}
// public void testConstructorInvocation02() {
// evaluate("new String[3]", "java.lang.String[3]{null,null,null}", String[].class);
// }
public void testConstructorInvocation03() {
evaluateAndCheckError("new String[]", SpelMessages.NO_SIZE_OR_INITIALIZER_FOR_ARRAY_CONSTRUCTION, 4);
}
// public void testConstructorInvocation03() {
// evaluateAndCheckError("new String[]", SpelMessages.NO_SIZE_OR_INITIALIZER_FOR_ARRAY_CONSTRUCTION, 4);
// }
public void testConstructorInvocation04() {
evaluateAndCheckError("new String[3]{'abc',3,'def'}", SpelMessages.INCORRECT_ELEMENT_TYPE_FOR_ARRAY, 4);
}
// public void testConstructorInvocation04() {
// evaluateAndCheckError("new String[3]{'abc',3,'def'}", SpelMessages.INCORRECT_ELEMENT_TYPE_FOR_ARRAY, 4);
// }
public void testConstructorInvocation05() {
evaluate("new java.lang.String('foobar')", "foobar", String.class);
}
// array construction
public void testArrayConstruction01() {
evaluate("new int[] {1, 2, 3, 4, 5}", "int[5]{1,2,3,4,5}", int[].class);
}
// public void testArrayConstruction01() {
// evaluate("new int[] {1, 2, 3, 4, 5}", "int[5]{1,2,3,4,5}", int[].class);
// }
public void testArrayConstruction02() {
evaluate("new String[] {'abc', 'xyz'}", "java.lang.String[2]{abc,xyz}", String[].class);
}
// public void testArrayConstruction02() {
// evaluate("new String[] {'abc', 'xyz'}", "java.lang.String[2]{abc,xyz}", String[].class);
// }
// unary expressions
public void testUnaryMinus01() {
@@ -228,85 +226,85 @@ public class EvaluationTests extends ExpressionTestCase {
// collection processors
// from spring.net: count,sum,max,min,average,sort,orderBy,distinct,nonNull
public void testProcessorsCount01() {
evaluate("new String[] {'abc','def','xyz'}.count()", "3", Integer.class);
}
public void testProcessorsCount02() {
evaluate("new int[] {1,2,3}.count()", "3", Integer.class);
}
public void testProcessorsMax01() {
evaluate("new int[] {1,2,3}.max()", "3", Integer.class);
}
public void testProcessorsMin01() {
evaluate("new int[] {1,2,3}.min()", "1", Integer.class);
}
public void testProcessorsKeys01() {
evaluate("#{1:'January', 2:'February', 3:'March'}.keySet().sort()", "[1, 2, 3]", ArrayList.class);
}
public void testProcessorsValues01() {
evaluate("#{1:'January', 2:'February', 3:'March'}.values().sort()", "[February, January, March]",
ArrayList.class);
}
public void testProcessorsAverage01() {
evaluate("new int[] {1,2,3}.average()", "2", Integer.class);
}
public void testProcessorsSort01() {
evaluate("new int[] {3,2,1}.sort()", "int[3]{1,2,3}", int[].class);
}
public void testCollectionProcessorsNonNull01() {
evaluate("{'a','b',null,'d',null}.nonnull()", "[a, b, d]", ArrayList.class);
}
public void testCollectionProcessorsDistinct01() {
evaluate("{'a','b','a','d','e'}.distinct()", "[a, b, d, e]", ArrayList.class);
}
// public void testProcessorsCount01() {
// evaluate("new String[] {'abc','def','xyz'}.count()", "3", Integer.class);
// }
//
// public void testProcessorsCount02() {
// evaluate("new int[] {1,2,3}.count()", "3", Integer.class);
// }
//
// public void testProcessorsMax01() {
// evaluate("new int[] {1,2,3}.max()", "3", Integer.class);
// }
//
// public void testProcessorsMin01() {
// evaluate("new int[] {1,2,3}.min()", "1", Integer.class);
// }
//
// public void testProcessorsKeys01() {
// evaluate("#{1:'January', 2:'February', 3:'March'}.keySet().sort()", "[1, 2, 3]", ArrayList.class);
// }
//
// public void testProcessorsValues01() {
// evaluate("#{1:'January', 2:'February', 3:'March'}.values().sort()", "[February, January, March]",
// ArrayList.class);
// }
//
// public void testProcessorsAverage01() {
// evaluate("new int[] {1,2,3}.average()", "2", Integer.class);
// }
//
// public void testProcessorsSort01() {
// evaluate("new int[] {3,2,1}.sort()", "int[3]{1,2,3}", int[].class);
// }
//
// public void testCollectionProcessorsNonNull01() {
// evaluate("{'a','b',null,'d',null}.nonnull()", "[a, b, d]", ArrayList.class);
// }
//
// public void testCollectionProcessorsDistinct01() {
// evaluate("{'a','b','a','d','e'}.distinct()", "[a, b, d, e]", ArrayList.class);
// }
// projection and selection
public void testProjection01() {
evaluate("{1,2,3,4,5,6,7,8,9,10}.!{#isEven(#this)}", "[n, y, n, y, n, y, n, y, n, y]", ArrayList.class);
}
public void testProjection02() {
evaluate("#{'a':'y','b':'n','c':'y'}.!{value=='y'?key:null}.nonnull().sort()", "[a, c]", ArrayList.class);
}
public void testProjection03() {
evaluate("{1,2,3,4,5,6,7,8,9,10}.!{#this>5}",
"[false, false, false, false, false, true, true, true, true, true]", ArrayList.class);
}
// public void testProjection01() {
// evaluate("{1,2,3,4,5,6,7,8,9,10}.!{#isEven(#this)}", "[n, y, n, y, n, y, n, y, n, y]", ArrayList.class);
// }
//
// public void testProjection02() {
// evaluate("#{'a':'y','b':'n','c':'y'}.!{value=='y'?key:null}.nonnull().sort()", "[a, c]", ArrayList.class);
// }
//
// public void testProjection03() {
// evaluate("{1,2,3,4,5,6,7,8,9,10}.!{#this>5}",
// "[false, false, false, false, false, true, true, true, true, true]", ArrayList.class);
// }
// public void testProjection04() {
// evaluate("{1,2,3,4,5,6,7,8,9,10}.!{$index>5?'y':'n'}", "[n, n, n, n, n, n, y, y, y, y]", ArrayList.class);
// }
public void testSelection01() {
evaluate("{1,2,3,4,5,6,7,8,9,10}.?{#isEven(#this) == 'y'}", "[2, 4, 6, 8, 10]", ArrayList.class);
}
// public void testSelection01() {
// evaluate("{1,2,3,4,5,6,7,8,9,10}.?{#isEven(#this) == 'y'}", "[2, 4, 6, 8, 10]", ArrayList.class);
// }
public void testSelectionError_NonBooleanSelectionCriteria() {
evaluateAndCheckError("{1,2,3,4,5,6,7,8,9,10}.?{'nonboolean'}",
SpelMessages.RESULT_OF_SELECTION_CRITERIA_IS_NOT_BOOLEAN);
}
// public void testSelectionError_NonBooleanSelectionCriteria() {
// evaluateAndCheckError("{1,2,3,4,5,6,7,8,9,10}.?{'nonboolean'}",
// SpelMessages.RESULT_OF_SELECTION_CRITERIA_IS_NOT_BOOLEAN);
// }
// public void testSelectionUsingIndex() {
// evaluate("{1,2,3,4,5,6,7,8,9,10}.?{$index > 5 }", "[7, 8, 9, 10]", ArrayList.class);
// }
public void testSelectionFirst01() {
evaluate("{1,2,3,4,5,6,7,8,9,10}.^{#isEven(#this) == 'y'}", "2", Integer.class);
}
public void testSelectionLast01() {
evaluate("{1,2,3,4,5,6,7,8,9,10}.${#isEven(#this) == 'y'}", "10", Integer.class);
}
// public void testSelectionFirst01() {
// evaluate("{1,2,3,4,5,6,7,8,9,10}.^{#isEven(#this) == 'y'}", "2", Integer.class);
// }
//
// public void testSelectionLast01() {
// evaluate("{1,2,3,4,5,6,7,8,9,10}.${#isEven(#this) == 'y'}", "10", Integer.class);
// }
// assignment
public void testAssignmentToVariables01() {
@@ -314,13 +312,13 @@ public class EvaluationTests extends ExpressionTestCase {
}
// Ternary operator
public void testTernaryOperator01() {
evaluate("{1}.#isEven(#this[0]) == 'y'?'it is even':'it is odd'", "it is odd", String.class);
}
public void testTernaryOperator02() {
evaluate("{2}.#isEven(#this[0]) == 'y'?'it is even':'it is odd'", "it is even", String.class);
}
// public void testTernaryOperator01() {
// evaluate("{1}.#isEven(#this[0]) == 'y'?'it is even':'it is odd'", "it is odd", String.class);
// }
//
// public void testTernaryOperator02() {
// evaluate("{2}.#isEven(#this[0]) == 'y'?'it is even':'it is odd'", "it is even", String.class);
// }
public void testTernaryOperator03() {
evaluateAndCheckError("'hello'?1:2", SpelMessages.TYPE_CONVERSION_ERROR); // cannot convert String to boolean
@@ -333,13 +331,13 @@ public class EvaluationTests extends ExpressionTestCase {
}
// Indexer
public void testCutProcessor01() {
evaluate("{1,2,3,4,5}.cut(1,3)", "[2, 3, 4]", ArrayList.class);
}
public void testCutProcessor02() {
evaluate("{1,2,3,4,5}.cut(3,1)", "[4, 3, 2]", ArrayList.class);
}
// public void testCutProcessor01() {
// evaluate("{1,2,3,4,5}.cut(1,3)", "[2, 3, 4]", ArrayList.class);
// }
//
// public void testCutProcessor02() {
// evaluate("{1,2,3,4,5}.cut(3,1)", "[4, 3, 2]", ArrayList.class);
// }
public void testIndexer03() {
evaluate("'christian'[8]", "n", String.class);

View File

@@ -30,16 +30,16 @@ public class MethodInvocationTests extends ExpressionTestCase {
evaluate("getPlaceOfBirth().getCity()", "SmilJan", String.class);
}
public void testBuiltInProcessors() {
evaluate("new int[]{1,2,3,4}.count()", 4, Integer.class);
evaluate("new int[]{4,3,2,1}.sort()[3]", 4, Integer.class);
evaluate("new int[]{4,3,2,1}.average()", 2, Integer.class);
evaluate("new int[]{4,3,2,1}.max()", 4, Integer.class);
evaluate("new int[]{4,3,2,1}.min()", 1, Integer.class);
evaluate("new int[]{4,3,2,1,2,3}.distinct().count()", 4, Integer.class);
evaluate("{1,2,3,null}.nonnull().count()", 3, Integer.class);
evaluate("new int[]{4,3,2,1,2,3}.distinct().count()", 4, Integer.class);
}
// public void testBuiltInProcessors() {
// evaluate("new int[]{1,2,3,4}.count()", 4, Integer.class);
// evaluate("new int[]{4,3,2,1}.sort()[3]", 4, Integer.class);
// evaluate("new int[]{4,3,2,1}.average()", 2, Integer.class);
// evaluate("new int[]{4,3,2,1}.max()", 4, Integer.class);
// evaluate("new int[]{4,3,2,1}.min()", 1, Integer.class);
// evaluate("new int[]{4,3,2,1,2,3}.distinct().count()", 4, Integer.class);
// evaluate("{1,2,3,null}.nonnull().count()", 3, Integer.class);
// evaluate("new int[]{4,3,2,1,2,3}.distinct().count()", 4, Integer.class);
// }
public void testStringClass() {
evaluate("new java.lang.String('hello').charAt(2)", 'l', Character.class);
@@ -74,7 +74,7 @@ public class MethodInvocationTests extends ExpressionTestCase {
evaluate("aVarargsMethod(1,2,3)", 3, Integer.class); // all need converting to strings
evaluate("aVarargsMethod(1)", 1, Integer.class); // needs string conversion
evaluate("aVarargsMethod(1,'a',3.0d)", 3, Integer.class); // first and last need conversion
evaluate("aVarargsMethod(new String[]{'a','b','c'})", 3, Integer.class);
// evaluate("aVarargsMethod(new String[]{'a','b','c'})", 3, Integer.class);
}
public void testVarargsInvocation02() {
@@ -85,7 +85,7 @@ public class MethodInvocationTests extends ExpressionTestCase {
evaluate("aVarargsMethod2(8,2,3)", 10, Integer.class);
evaluate("aVarargsMethod2(9)", 9, Integer.class);
evaluate("aVarargsMethod2(2,'a',3.0d)", 4, Integer.class);
evaluate("aVarargsMethod2(8,new String[]{'a','b','c'})", 11, Integer.class);
// evaluate("aVarargsMethod2(8,new String[]{'a','b','c'})", 11, Integer.class);
}
// Due to conversion there are two possible methods to call ...

View File

@@ -133,25 +133,25 @@ public class ParsingTests extends TestCase {
parseCheck("3>=3", "(3 >= 3)");
}
public void testRelOperatorsIn01() {
parseCheck("3 in {1,2,3,4,5}", "(3 in {1,2,3,4,5})");
}
// public void testRelOperatorsIn01() {
// parseCheck("3 in {1,2,3,4,5}", "(3 in {1,2,3,4,5})");
// }
//
// public void testRelOperatorsBetween01() {
// parseCheck("1 between {1, 5}", "(1 between {1,5})");
// }
public void testRelOperatorsBetween01() {
parseCheck("1 between {1, 5}", "(1 between {1,5})");
}
public void testRelOperatorsBetween02() {
parseCheck("'efg' between {'abc', 'xyz'}", "('efg' between {'abc','xyz'})");
}// true
// public void testRelOperatorsBetween02() {
// parseCheck("'efg' between {'abc', 'xyz'}", "('efg' between {'abc','xyz'})");
// }// true
public void testRelOperatorsIs01() {
parseCheck("'xyz' instanceof int", "('xyz' instanceof int)");
}// false
public void testRelOperatorsIs02() {
parseCheck("{1, 2, 3, 4, 5} instanceof List", "({1,2,3,4,5} instanceof List)");
}// true
// public void testRelOperatorsIs02() {
// parseCheck("{1, 2, 3, 4, 5} instanceof List", "({1,2,3,4,5} instanceof List)");
// }// true
public void testRelOperatorsMatches01() {
parseCheck("'5.0067' matches '^-?\\d+(\\.\\d{2})?$'", "('5.0067' matches '^-?\\d+(\\.\\d{2})?$')");
@@ -196,37 +196,37 @@ public class ParsingTests extends TestCase {
}
// collection processors
public void testCollectionProcessorsCount01() {
parseCheck("new String[] {'abc','def','xyz'}.count()");
}
// public void testCollectionProcessorsCount01() {
// parseCheck("new String[] {'abc','def','xyz'}.count()");
// }
public void testCollectionProcessorsCount02() {
parseCheck("new int[] {1,2,3}.count()");
}
public void testCollectionProcessorsMax01() {
parseCheck("new int[] {1,2,3}.max()");
}
public void testCollectionProcessorsMin01() {
parseCheck("new int[] {1,2,3}.min()");
}
public void testCollectionProcessorsAverage01() {
parseCheck("new int[] {1,2,3}.average()");
}
public void testCollectionProcessorsSort01() {
parseCheck("new int[] {3,2,1}.sort()");
}
public void testCollectionProcessorsNonNull01() {
parseCheck("{'a','b',null,'d',null}.nonNull()");
}
public void testCollectionProcessorsDistinct01() {
parseCheck("{'a','b','a','d','e'}.distinct()");
}
// public void testCollectionProcessorsCount02() {
// parseCheck("new int[] {1,2,3}.count()");
// }
//
// public void testCollectionProcessorsMax01() {
// parseCheck("new int[] {1,2,3}.max()");
// }
//
// public void testCollectionProcessorsMin01() {
// parseCheck("new int[] {1,2,3}.min()");
// }
//
// public void testCollectionProcessorsAverage01() {
// parseCheck("new int[] {1,2,3}.average()");
// }
//
// public void testCollectionProcessorsSort01() {
// parseCheck("new int[] {3,2,1}.sort()");
// }
//
// public void testCollectionProcessorsNonNull01() {
// parseCheck("{'a','b',null,'d',null}.nonNull()");
// }
//
// public void testCollectionProcessorsDistinct01() {
// parseCheck("{'a','b','a','d','e'}.distinct()");
// }
// // references
// public void testReferences01() {
@@ -255,30 +255,30 @@ public class ParsingTests extends TestCase {
}
// inline list creation
public void testInlineListCreation01() {
parseCheck("{1, 2, 3, 4, 5}", "{1,2,3,4,5}");
}
// public void testInlineListCreation01() {
// parseCheck("{1, 2, 3, 4, 5}", "{1,2,3,4,5}");
// }
//
// public void testInlineListCreation02() {
// parseCheck("{'abc','xyz'}", "{'abc','xyz'}");
// }
public void testInlineListCreation02() {
parseCheck("{'abc','xyz'}", "{'abc','xyz'}");
}
// inline map creation
public void testInlineMapCreation01() {
parseCheck("#{'key1':'Value 1', 'today':DateTime.Today}");
}
public void testInlineMapCreation02() {
parseCheck("#{1:'January', 2:'February', 3:'March'}");
}
public void testInlineMapCreation03() {
parseCheck("#{'key1':'Value 1', 'today':'Monday'}['key1']");
}
public void testInlineMapCreation04() {
parseCheck("#{1:'January', 2:'February', 3:'March'}[3]");
}
// // inline map creation
// public void testInlineMapCreation01() {
// parseCheck("#{'key1':'Value 1', 'today':DateTime.Today}");
// }
//
// public void testInlineMapCreation02() {
// parseCheck("#{1:'January', 2:'February', 3:'March'}");
// }
//
// public void testInlineMapCreation03() {
// parseCheck("#{'key1':'Value 1', 'today':'Monday'}['key1']");
// }
//
// public void testInlineMapCreation04() {
// parseCheck("#{1:'January', 2:'February', 3:'March'}[3]");
// }
// methods
public void testMethods01() {
@@ -298,18 +298,18 @@ public class ParsingTests extends TestCase {
parseCheck("new String('hello')");
}
public void testConstructors02() {
parseCheck("new String[3]");
}
// public void testConstructors02() {
// parseCheck("new String[3]");
// }
// array construction
public void testArrayConstruction01() {
parseCheck("new int[] {1, 2, 3, 4, 5}", "new int[] {1,2,3,4,5}");
}
public void testArrayConstruction02() {
parseCheck("new String[] {'abc','xyz'}", "new String[] {'abc','xyz'}");
}
// public void testArrayConstruction01() {
// parseCheck("new int[] {1, 2, 3, 4, 5}", "new int[] {1,2,3,4,5}");
// }
//
// public void testArrayConstruction02() {
// parseCheck("new String[] {'abc','xyz'}", "new String[] {'abc','xyz'}");
// }
// variables and functions
public void testVariables01() {
@@ -325,24 +325,24 @@ public class ParsingTests extends TestCase {
}
// projections and selections
public void testProjections01() {
parseCheck("{1,2,3,4,5,6,7,8,9,10}.!{#isEven()}");
}
// public void testProjections01() {
// parseCheck("{1,2,3,4,5,6,7,8,9,10}.!{#isEven()}");
// }
public void testSelections01() {
parseCheck("{1,2,3,4,5,6,7,8,9,10}.?{#isEven(#this) == 'y'}",
"{1,2,3,4,5,6,7,8,9,10}.?{(#isEven(#this) == 'y')}");
}
// public void testSelections01() {
// parseCheck("{1,2,3,4,5,6,7,8,9,10}.?{#isEven(#this) == 'y'}",
// "{1,2,3,4,5,6,7,8,9,10}.?{(#isEven(#this) == 'y')}");
// }
public void testSelectionsFirst01() {
parseCheck("{1,2,3,4,5,6,7,8,9,10}.^{#isEven(#this) == 'y'}",
"{1,2,3,4,5,6,7,8,9,10}.^{(#isEven(#this) == 'y')}");
}
// public void testSelectionsFirst01() {
// parseCheck("{1,2,3,4,5,6,7,8,9,10}.^{#isEven(#this) == 'y'}",
// "{1,2,3,4,5,6,7,8,9,10}.^{(#isEven(#this) == 'y')}");
// }
public void testSelectionsLast01() {
parseCheck("{1,2,3,4,5,6,7,8,9,10}.${#isEven(#this) == 'y'}",
"{1,2,3,4,5,6,7,8,9,10}.${(#isEven(#this) == 'y')}");
}
// public void testSelectionsLast01() {
// parseCheck("{1,2,3,4,5,6,7,8,9,10}.${#isEven(#this) == 'y'}",
// "{1,2,3,4,5,6,7,8,9,10}.${(#isEven(#this) == 'y')}");
// }
// assignment
public void testAssignmentToVariables01() {
@@ -350,10 +350,10 @@ public class ParsingTests extends TestCase {
}
// ternary operator
public void testTernaryOperator01() {
parseCheck("{1}.#isEven(#this) == 'y'?'it is even':'it is odd'",
"({1}.#isEven(#this) == 'y') ? 'it is even' : 'it is odd'");
}
// public void testTernaryOperator01() {
// parseCheck("{1}.#isEven(#this) == 'y'?'it is even':'it is odd'",
// "({1}.#isEven(#this) == 'y') ? 'it is even' : 'it is odd'");
// }
//
// public void testLambdaMax() {