package jetbrick.template.exec.invoker;
import jetbrick.template.Errors;
import jetbrick.template.exec.AbstractJetxTest;
import jetbrick.template.parser.SyntaxException;
import jetbrick.template.runtime.InterpretException;
import org.hamcrest.CoreMatchers;
import org.junit.Assert;
import org.junit.Test;
public class InvokeNewObjectTest extends AbstractJetxTest {
@Override
public void initializeEngine() {
engine.getGlobalResolver().importClass(Model.class.getPackage().getName() + ".*");
engine.getGlobalResolver().importClass(Model.class.getName());
}
@Test
public void test1() {
Assert.assertEquals("1", eval("${new Integer(1)}"));
Assert.assertEquals("1", eval("${new java.lang.Integer(1)}"));
Assert.assertEquals("1", eval("${new java.lang.Long(1)}"));
}
@Test
public void test2() {
Assert.assertEquals("model", eval("${new jetbrick.template.exec.invoker.InvokeNewObjectTest.Model()}"));
Assert.assertEquals("model", eval("${new jetbrick.template.exec.invoker.InvokeNewObjectTest.Model(1)}"));
Assert.assertEquals("model", eval("${new jetbrick.template.exec.invoker.InvokeNewObjectTest.Model(1L)}"));
}
@Test
public void test3() {
Assert.assertEquals("model", eval("${new Model()}"));
Assert.assertEquals("model", eval("${new InvokeNewObjectTest.Model()}"));
}
@Test
public void testClassNotFound() {
thrown.expect(SyntaxException.class);
thrown.expectMessage(CoreMatchers.containsString(err(Errors.CLASS_NOT_FOUND)));
eval("${new Model12345()}");
}
@Test
public void testCtorNotFound() {
thrown.expect(InterpretException.class);
thrown.expectMessage(CoreMatchers.containsString(err(Errors.CONSTRUCTOR_NOT_FOUND)));
eval("${new Model(false)}");
}
static class Model {
public Model() {
}
public Model(long n) {
}
@Override
public String toString() {
return "model";
}
}
}