package jetbrick.template.exec.invoker;
import jetbrick.template.exec.AbstractJetxTest;
import jetbrick.util.StringUtils;
import org.junit.Assert;
import org.junit.Test;
public class InvokeMethodExtensionTest extends AbstractJetxTest {
@Override
public void initializeEngine() {
engine.getGlobalResolver().registerMethods(StringUtils.class);
engine.getGlobalResolver().registerMethods(StrUtils.class);
engine.getGlobalResolver().registerMethods(String.class);
}
@Test
public void test() {
Assert.assertEquals("123", eval("${' 123 '.trim()}"));
Assert.assertEquals("000", eval("${'0'.repeat(3)}"));
Assert.assertEquals("?,?,?", eval("${'?'.repeat(',', 3)}"));
}
@Test
public void testVarargs() {
Assert.assertEquals("", eval("${''.format()}"));
Assert.assertEquals("1", eval("${'%s'.format(1)}"));
Assert.assertEquals("12", eval("${'%s%s'.format(1,2)}"));
Assert.assertEquals("123", eval("${'%s%s%s'.format(1,2,3)}"));
}
@Test
public void testVarargsIssue() {
Assert.assertEquals("<a href=\"#\">?</a>", eval("${'?'.link('#')}"));
}
static class StrUtils {
public static String link(String title, String url, String... attributes) {
StringBuilder sb = new StringBuilder();
sb.append("<a href=\"");
sb.append(url);
sb.append('"');
sb.append('>');
sb.append(title);
sb.append("</a>");
return sb.toString();
}
}
}