jaroslav@8: /* jaroslav@8: * To change this template, choose Tools | Templates jaroslav@8: * and open the template in the editor. jaroslav@8: */ jaroslav@22: package org.apidesign.vm4brwsr; 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@22: "org_apidesign_vm4brwsr_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@22: "org_apidesign_vm4brwsr_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@22: "org_apidesign_vm4brwsr_Instance_magicOneD", jaroslav@8: Double.valueOf(3.3) jaroslav@8: ); jaroslav@8: } jaroslav@12: @Test public void verifyInstanceMethods() throws Exception { jaroslav@12: assertExec( jaroslav@14: "Should be eleven as we invoke overwritten method, plus 44", jaroslav@22: "org_apidesign_vm4brwsr_Instance_virtualBytesI", jaroslav@14: Double.valueOf(55) jaroslav@12: ); jaroslav@12: } jaroslav@15: @Test public void verifyInterfaceMethods() throws Exception { jaroslav@15: assertExec( jaroslav@15: "Retruns default value", jaroslav@22: "org_apidesign_vm4brwsr_Instance_interfaceBytesF", jaroslav@15: Double.valueOf(31) jaroslav@15: ); jaroslav@15: } jaroslav@16: jaroslav@16: @Test public void isNull() throws Exception { jaroslav@16: assertExec( jaroslav@16: "Yes, we are instance", jaroslav@22: "org_apidesign_vm4brwsr_Instance_isNullZ", jaroslav@16: Double.valueOf(0.0) jaroslav@16: ); jaroslav@16: } jaroslav@17: jaroslav@16: @Test public void isInstanceOf() throws Exception { jaroslav@16: assertExec( jaroslav@16: "Yes, we are instance", jaroslav@22: "org_apidesign_vm4brwsr_Instance_instanceOfZZ", jaroslav@16: Double.valueOf(1.0), true jaroslav@16: ); jaroslav@16: } jaroslav@16: jaroslav@16: @Test public void notInstanceOf() throws Exception { jaroslav@16: assertExec( jaroslav@16: "No, we are not an instance", jaroslav@22: "org_apidesign_vm4brwsr_Instance_instanceOfZZ", jaroslav@16: Double.valueOf(0.0), false jaroslav@16: ); jaroslav@16: } jaroslav@17: jaroslav@8: private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception { jaroslav@8: StringBuilder sb = new StringBuilder(); jaroslav@18: Invocable i = StaticMethodTest.compileClass(sb, jaroslav@22: "org/apidesign/vm4brwsr/Instance" jaroslav@18: ); 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: }