package org.milyn.expression;
import java.util.HashMap;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
public class MVELExpressionEvaluatorTest {
MVELExpressionEvaluator evaluator;
@Test
public void test_getValue() {
Object expected = new Object();
Map<String, Object> map = new HashMap<String, Object>();
map.put("test", expected);
evaluator.setExpression("return test");
Object result = evaluator.getValue(map);
assertSame("Expected object is not same as the result", expected, result);
}
@Test
public void test_eval() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("value1", 1);
map.put("value2", 2);
map.put("value3", 3);
evaluator.setExpression("value1 + value2 == value3");
boolean result = evaluator.eval(map);
assertTrue("Expected true", result);
map.put("value3", 4);
result = evaluator.eval(map);
assertFalse("Expected false", result);
}
@Test
public void test_vars_isdef() {
Map<String, Object> map = new HashMap<String, Object>();
evaluator.setExpression("VARS.isdef('value')");
boolean result = evaluator.eval(map);
assertFalse("Expected false", result);
map.put("value", new Object());
result = evaluator.eval(map);
assertTrue("Expected true", result);
}
@Test
public void test_vars_resolvable() {
Map<String, Object> map = new HashMap<String, Object>();
evaluator.setExpression("VARS.isResolveable('value')");
boolean result = evaluator.eval(map);
assertFalse("Expected false", result);
map.put("value", new Object());
result = evaluator.eval(map);
assertTrue("Expected true", result);
}
@Test
public void test_vars_unresolvable() {
Map<String, Object> map = new HashMap<String, Object>();
evaluator.setExpression("VARS.isUnresolveable('value')");
boolean result = evaluator.eval(map);
assertTrue("Expected true", result);
map.put("value", new Object());
result = evaluator.eval(map);
assertFalse("Expected false", result);
}
@Test
public void test_vars_get() {
Object var = new Object();
Map<String, Object> map = new HashMap<String, Object>();
evaluator.setExpression("VARS.get('value') == null");
boolean result = evaluator.eval(map);
assertTrue("Expected true", result);
map.put("value", var);
result = evaluator.eval(map);
assertFalse("Expected false", result);
evaluator.setExpression("VARS.get('value')");
Object resultObj = evaluator.getValue(map);
assertSame(var, resultObj);
}
@Before
public void setUp() throws Exception {
evaluator = new MVELExpressionEvaluator();
}
}