1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.scxml2.env.jexl;
18
19 import org.apache.commons.scxml2.Context;
20 import org.apache.commons.scxml2.Evaluator;
21 import org.apache.commons.scxml2.SCXMLExpressionException;
22 import org.junit.Assert;
23 import org.junit.Test;
24
25 public class JexlEvaluatorTest {
26
27 private String BAD_EXPRESSION = ">";
28 private Context ctx = new JexlContext();
29
30 @Test
31 public void testPristine() throws SCXMLExpressionException {
32 Evaluator eval = new JexlEvaluator();
33 Assert.assertTrue(((Boolean) eval.eval(ctx, "1+1 eq 2")).booleanValue());
34 }
35
36 @Test
37 public void testScript() throws SCXMLExpressionException {
38 Evaluator eval = new JexlEvaluator();
39 ctx.set("x", 3);
40 ctx.set("y", 0);
41 String script =
42 "if ((x * 2) == 5) {" +
43 "y = 1;\n" +
44 "} else {\n" +
45 "y = 2;\n" +
46 "}";
47 Assert.assertEquals(2, eval.evalScript(ctx, script));
48 Assert.assertEquals(2, ctx.get("y"));
49 }
50
51 @Test
52 public void testErrorMessage() {
53 Evaluator eval = new JexlEvaluator();
54 Assert.assertNotNull(eval);
55 try {
56 eval.eval(ctx, BAD_EXPRESSION);
57 Assert.fail("JexlEvaluator should throw SCXMLExpressionException");
58 } catch (SCXMLExpressionException e) {
59 Assert.assertTrue("JexlEvaluator: Incorrect error message",
60 e.getMessage().startsWith("eval('" + BAD_EXPRESSION + "'):"));
61 }
62 }
63
64 }