package com.gh.mygreen.xlsmapper.expression;
import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;
import static com.gh.mygreen.xlsmapper.TestUtils.*;
import java.sql.Timestamp;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import com.github.mygreen.expression.el.FormatterWrapper;
import com.github.mygreen.expression.el.tld.Taglib;
import com.github.mygreen.expression.el.tld.TldLoader;
/**
* {@link ExpressionLanguageELImpl}のテスタ
*
* @version 1.5
* @author T.TSUCHIE
*
*/
public class ExpressionLanguageELImplTest {
private ExpressionLanguageELImpl el;
@Before
public void setUp() throws Exception {
this.el = new ExpressionLanguageELImpl();
}
/**
* formatterのテスト
*/
@Test
public void testEvaluate_format() {
Date date = Timestamp.valueOf("2015-04-15 10:20:30.000");
String expression = "formatter.format('%1$tY/%1$tm/%1$td', currentDate)";
Map<String, Object> vars = new HashMap<>();
vars.put("currentDate", date);
vars.put("formatter", new FormatterWrapper(Locale.getDefault()));
String eval = (String) el.evaluate(expression, vars);
assertThat(eval, is("2015/04/15"));
}
/**
* EL関数の呼び出しテスト - 委譲ができているか
*
*/
@Test
public void test_function() throws Exception {
// EL関数の登録
TldLoader loader = new TldLoader();
Taglib taglib = loader.load(ExpressionLanguageELImplTest.class.getResourceAsStream("/com/gh/mygreen/xlsmapper/expression/xlsmapper.tld"));
el.register(taglib);
String expression = "x:colToAlpha(columnNumber)";
Map<String, Object> vars = new HashMap<>();
vars.put("columnNumber", 1);
String eval = (String) el.evaluate(expression, vars);
assertThat(eval, is("A"));
}
}