Source code: org/ognl/test/LambdaExpressionTest.java
1 //--------------------------------------------------------------------------
2 // Copyright (c) 2004, Drew Davidson and Luke Blanshard
3 // All rights reserved.
4 //
5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are
7 // met:
8 //
9 // Redistributions of source code must retain the above copyright notice,
10 // this list of conditions and the following disclaimer.
11 // Redistributions in binary form must reproduce the above copyright
12 // notice, this list of conditions and the following disclaimer in the
13 // documentation and/or other materials provided with the distribution.
14 // Neither the name of the Drew Davidson nor the names of its contributors
15 // may be used to endorse or promote products derived from this software
16 // without specific prior written permission.
17 //
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
21 // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
22 // COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
23 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24 // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
25 // OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
26 // AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
28 // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
29 // DAMAGE.
30 //--------------------------------------------------------------------------
31 package org.ognl.test;
32
33 import java.math.*;
34 import java.util.*;
35 import junit.framework.TestSuite;
36 import org.ognl.test.objects.Root;
37
38 public class LambdaExpressionTest extends OgnlTestCase
39 {
40 private static Object[][] TESTS = {
41 // Lambda expressions
42 { null, "#a=:[33](20).longValue().{0}.toArray().length", new Integer(33) },
43 { null, "#fact=:[#this<=1? 1 : #fact(#this-1) * #this], #fact(30)", new Integer(1409286144) },
44 { null, "#fact=:[#this<=1? 1 : #fact(#this-1) * #this], #fact(30L)", new Long(-8764578968847253504L) },
45 { null, "#fact=:[#this<=1? 1 : #fact(#this-1) * #this], #fact(30h)", new BigInteger("265252859812191058636308480000000") },
46 { null, "#bump = :[ #this.{ #this + 1 } ], (#bump)({ 1, 2, 3 })", new ArrayList(Arrays.asList(new Integer[] { new Integer(2), new Integer(3), new Integer(4) })) },
47 { null, "#call = :[ \"calling \" + [0] + \" on \" + [1] ], (#call)({ \"x\", \"y\" })", "calling x on y" },
48 };
49
50 /*===================================================================
51 Public static methods
52 ===================================================================*/
53 public static TestSuite suite()
54 {
55 TestSuite result = new TestSuite();
56
57 for (int i = 0; i < TESTS.length; i++) {
58 result.addTest(new LambdaExpressionTest((String)TESTS[i][1], TESTS[i][0], (String)TESTS[i][1], TESTS[i][2]));
59 }
60 return result;
61 }
62
63 /*===================================================================
64 Constructors
65 ===================================================================*/
66 public LambdaExpressionTest()
67 {
68 super();
69 }
70
71 public LambdaExpressionTest(String name)
72 {
73 super(name);
74 }
75
76 public LambdaExpressionTest(String name, Object root, String expressionString, Object expectedResult, Object setValue, Object expectedAfterSetResult)
77 {
78 super(name, root, expressionString, expectedResult, setValue, expectedAfterSetResult);
79 }
80
81 public LambdaExpressionTest(String name, Object root, String expressionString, Object expectedResult, Object setValue)
82 {
83 super(name, root, expressionString, expectedResult, setValue);
84 }
85
86 public LambdaExpressionTest(String name, Object root, String expressionString, Object expectedResult)
87 {
88 super(name, root, expressionString, expectedResult);
89 }
90 }