1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.commons.jexl;
17
18 import junit.framework.TestCase;
19 /***
20 * Tests for blocks
21 * @since 1.1
22 */
23 public class BlockTest extends TestCase {
24
25 /***
26 * Create the test
27 *
28 * @param testName name of the test
29 */
30 public BlockTest(String testName) {
31 super(testName);
32 }
33
34 public void testBlockSimple() throws Exception {
35 Expression e = ExpressionFactory
36 .createExpression("if (true) { 'hello'; }");
37 JexlContext jc = JexlHelper.createContext();
38 Object o = e.evaluate(jc);
39 assertEquals("Result is wrong", "hello", o);
40 }
41
42 public void testBlockExecutesAll() throws Exception {
43 Expression e = ExpressionFactory
44 .createExpression("if (true) { x = 'Hello'; y = 'World';}");
45 JexlContext jc = JexlHelper.createContext();
46 Object o = e.evaluate(jc);
47 assertEquals("First result is wrong", "Hello", jc.getVars().get("x"));
48 assertEquals("Second result is wrong", "World", jc.getVars().get("y"));
49 assertEquals("Block result is wrong", "World", o);
50 }
51
52 public void testEmptyBlock() throws Exception {
53 Expression e = ExpressionFactory
54 .createExpression("if (true) { }");
55 JexlContext jc = JexlHelper.createContext();
56 Object o = e.evaluate(jc);
57 assertNull("Result is wrong", o);
58 }
59
60 public void testBlockLastExecuted01() throws Exception {
61 Expression e = ExpressionFactory
62 .createExpression("if (true) { x = 1; } else { x = 2; }");
63 JexlContext jc = JexlHelper.createContext();
64 Object o = e.evaluate(jc);
65 assertEquals("Block result is wrong", new Integer(1), o);
66 }
67
68 public void testBlockLastExecuted02() throws Exception {
69 Expression e = ExpressionFactory
70 .createExpression("if (false) { x = 1; } else { x = 2; }");
71 JexlContext jc = JexlHelper.createContext();
72 Object o = e.evaluate(jc);
73 assertEquals("Block result is wrong", new Integer(2), o);
74 }
75
76 public void testNestedBlock() throws Exception {
77 Expression e = ExpressionFactory
78 .createExpression("if (true) { x = 'hello'; y = 'world';"
79 + " if (true) { x; } y; }");
80 JexlContext jc = JexlHelper.createContext();
81 Object o = e.evaluate(jc);
82 assertEquals("Block result is wrong", "world", o);
83 }
84
85 }