src/test/java/org/apidesign/java4browser/InstanceTest.java
changeset 8 82772c96ec57
child 10 e84d9314f1bc
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/src/test/java/org/apidesign/java4browser/InstanceTest.java	Sat Sep 15 22:12:49 2012 +0200
     1.3 @@ -0,0 +1,47 @@
     1.4 +/*
     1.5 + * To change this template, choose Tools | Templates
     1.6 + * and open the template in the editor.
     1.7 + */
     1.8 +package org.apidesign.java4browser;
     1.9 +
    1.10 +import javax.script.Invocable;
    1.11 +import javax.script.ScriptException;
    1.12 +import org.testng.annotations.Test;
    1.13 +import static org.testng.Assert.*;
    1.14 +
    1.15 +/**
    1.16 + *
    1.17 + * @author Jaroslav Tulach <jtulach@netbeans.org>
    1.18 + */
    1.19 +public class InstanceTest {
    1.20 +    @Test public void verifyMagicOne() throws Exception {
    1.21 +        assertExec(
    1.22 +            "Should be seven",
    1.23 +            "org_apidesign_java4browser_Instance_magicOneD",
    1.24 +            Double.valueOf(3.3)
    1.25 +        );
    1.26 +    }
    1.27 +    
    1.28 +    private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception {
    1.29 +        StringBuilder sb = new StringBuilder();
    1.30 +        Invocable i = StaticMethodTest.compileClass("Instance.class", sb);
    1.31 +        
    1.32 +        Object ret = null;
    1.33 +        try {
    1.34 +            ret = i.invokeFunction(methodName, args);
    1.35 +        } catch (ScriptException ex) {
    1.36 +            fail("Execution failed in " + sb, ex);
    1.37 +        } catch (NoSuchMethodException ex) {
    1.38 +            fail("Cannot find method in " + sb, ex);
    1.39 +        }
    1.40 +        if (ret == null && expRes == null) {
    1.41 +            return;
    1.42 +        }
    1.43 +        if (expRes.equals(ret)) {
    1.44 +            return;
    1.45 +        }
    1.46 +        assertEquals(ret, expRes, msg + "was: " + ret + "\n" + sb);
    1.47 +        
    1.48 +    }
    1.49 +    
    1.50 +}