package jetbrick.template.exec.invoker; import java.util.HashMap; import java.util.Map; import jetbrick.template.exec.AbstractJetxTest; import org.junit.Assert; import org.junit.Test; public class InvokeMethodTest extends AbstractJetxTest { @Test public void test() { Assert.assertEquals("6", eval("${'123456'.length()}")); Assert.assertEquals("2", eval("${'123456'.charAt(1)}")); } @Test public void testOverload() { Assert.assertEquals("456", eval("${'123456'.substring(3)}")); Assert.assertEquals("45", eval("${'123456'.substring(3,5)}")); } @Test public void testVarargs() { Map<String, Object> context = new HashMap<String, Object>(); context.put("model", new Model()); Assert.assertEquals("", eval("${model.format()}", context)); Assert.assertEquals("1", eval("${model.format(1)}", context)); Assert.assertEquals("12", eval("${model.format(1,2)}", context)); Assert.assertEquals("123", eval("${model.format(1,2,3)}", context)); } @Test public void testStatic() { Assert.assertEquals("12", eval("${String::valueOf(12)}")); Assert.assertEquals("12", eval("${java.lang.String::valueOf(12)}")); } @Test public void testStaticOverload() { Assert.assertEquals("12", eval("${String::valueOf(12)}")); Assert.assertEquals("12.99", eval("${String::valueOf(12.99d)}")); Assert.assertEquals("true", eval("${java.lang.String::valueOf(true)}")); } @Test public void testStaticVarargs() { Assert.assertEquals("aa", eval("${String::format('aa')}")); Assert.assertEquals("aa", eval("${String::format('%s', 'aa')}")); Assert.assertEquals("aa12", eval("${java.lang.String::format('%s%d', 'aa', 12)}")); } static class Model { public String format(Object... args) { if (args.length == 0) { return ""; } else if (args.length == 1) { return String.format("%s", args); } else if (args.length == 2) { return String.format("%s%s", args); } else { return String.format("%s%s%s", args); } } } }