package org.docbag.expression.evaluator.spring;
import junit.framework.Assert;
import org.docbag.Context;
import org.docbag.DefaultContext;
import org.docbag.expression.EvaluatedExpression;
import org.docbag.expression.RuntimeExpression;
import org.docbag.expression.evaluator.EvaluatorException;
import org.docbag.expression.evaluator.SpELExpressionEvaluator;
import org.junit.Test;
/**
* SpELExpressionEvaluatorTest
*
* @author Jakub Torbicki
*/
public class SpELExpressionEvaluatorTest {
private static final String KEY_CONTEXT = "key";
private static final String VALUE_CONTEXT = "value";
@Test
public void testEvaluate() throws Exception {
SpELExpressionEvaluator evaluator = new SpELExpressionEvaluator();
Assert.assertEquals("100", evaluator.evaluate(new EvaluatedExpression<String, String>("100", "100")));
Assert.assertEquals("100", evaluator.evaluate(new RuntimeExpression<String, String>("50+50", evaluator)));
}
@Test(expected = EvaluatorException.class)
public void testEvaluateRuntimeFails() throws Exception {
SpELExpressionEvaluator evaluator = new SpELExpressionEvaluator();
evaluator.evaluate(new RuntimeExpression<String, String>("context('name')", evaluator));
}
@Test
public void testEvaluateContext() throws Exception {
SpELExpressionEvaluator evaluator = new SpELExpressionEvaluator();
Context<String, Object> context = getContext();
Assert.assertEquals("100", evaluator.evaluate(context, new EvaluatedExpression<String, String>("100", "100")));
Assert.assertEquals("100", evaluator.evaluate(context, new RuntimeExpression<String, String>("50+50", evaluator)));
Assert.assertEquals(VALUE_CONTEXT,
evaluator.evaluate(context, new RuntimeExpression<String, String>("context('" + KEY_CONTEXT + "')", evaluator)));
}
public Context<String, Object> getContext() {
Context<String, Object> context = new DefaultContext();
context.put(KEY_CONTEXT, VALUE_CONTEXT);
return context;
}
}