jaroslav@8: /* jaroslav@8: * To change this template, choose Tools | Templates jaroslav@8: * and open the template in the editor. jaroslav@8: */ jaroslav@8: package org.apidesign.java4browser; jaroslav@8: jaroslav@8: import javax.script.Invocable; jaroslav@8: import javax.script.ScriptException; jaroslav@8: import org.testng.annotations.Test; jaroslav@8: import static org.testng.Assert.*; jaroslav@8: jaroslav@8: /** jaroslav@8: * jaroslav@8: * @author Jaroslav Tulach jaroslav@8: */ jaroslav@8: public class InstanceTest { jaroslav@10: @Test public void verifyDefaultDoubleValue() throws Exception { jaroslav@10: assertExec( jaroslav@10: "Will be zero", jaroslav@10: "org_apidesign_java4browser_Instance_defaultDblValueD", jaroslav@10: Double.valueOf(0) jaroslav@10: ); jaroslav@10: } jaroslav@10: @Test public void verifyAssignedByteValue() throws Exception { jaroslav@10: assertExec( jaroslav@10: "Will one thirty one", jaroslav@10: "org_apidesign_java4browser_Instance_assignedByteValueB", jaroslav@10: Double.valueOf(31) jaroslav@10: ); jaroslav@10: } jaroslav@8: @Test public void verifyMagicOne() throws Exception { jaroslav@8: assertExec( jaroslav@10: "Should be three and something", jaroslav@8: "org_apidesign_java4browser_Instance_magicOneD", jaroslav@8: Double.valueOf(3.3) jaroslav@8: ); jaroslav@8: } jaroslav@12: @Test public void verifyInstanceMethods() throws Exception { jaroslav@12: assertExec( jaroslav@12: "Should be ten", jaroslav@12: "org_apidesign_java4browser_Instance_virtualBytesB", jaroslav@12: Double.valueOf(10) jaroslav@12: ); jaroslav@12: } jaroslav@8: jaroslav@8: private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception { jaroslav@8: StringBuilder sb = new StringBuilder(); jaroslav@8: Invocable i = StaticMethodTest.compileClass("Instance.class", sb); jaroslav@8: jaroslav@8: Object ret = null; jaroslav@8: try { jaroslav@8: ret = i.invokeFunction(methodName, args); jaroslav@8: } catch (ScriptException ex) { jaroslav@8: fail("Execution failed in " + sb, ex); jaroslav@8: } catch (NoSuchMethodException ex) { jaroslav@8: fail("Cannot find method in " + sb, ex); jaroslav@8: } jaroslav@8: if (ret == null && expRes == null) { jaroslav@8: return; jaroslav@8: } jaroslav@8: if (expRes.equals(ret)) { jaroslav@8: return; jaroslav@8: } jaroslav@8: assertEquals(ret, expRes, msg + "was: " + ret + "\n" + sb); jaroslav@8: jaroslav@8: } jaroslav@8: jaroslav@8: }