src/test/java/org/apidesign/java4browser/StaticMethodTest.java
changeset 0 71aab30ab2b7
child 1 48b1dce93691
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/src/test/java/org/apidesign/java4browser/StaticMethodTest.java	Mon Aug 27 05:08:30 2012 +0200
     1.3 @@ -0,0 +1,57 @@
     1.4 +/*
     1.5 +Java 4 Browser Bytecode Translator
     1.6 +Copyright (C) 2012-2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
     1.7 +
     1.8 +This program is free software: you can redistribute it and/or modify
     1.9 +it under the terms of the GNU General Public License as published by
    1.10 +the Free Software Foundation, version 2 of the License.
    1.11 +
    1.12 +This program is distributed in the hope that it will be useful,
    1.13 +but WITHOUT ANY WARRANTY; without even the implied warranty of
    1.14 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    1.15 +GNU General Public License for more details.
    1.16 +
    1.17 +You should have received a copy of the GNU General Public License
    1.18 +along with this program. Look for COPYING file in the top folder.
    1.19 +If not, see http://opensource.org/licenses/GPL-2.0.
    1.20 +*/
    1.21 +package org.apidesign.java4browser;
    1.22 +
    1.23 +import java.io.IOException;
    1.24 +import java.io.InputStream;
    1.25 +import javax.script.Invocable;
    1.26 +import javax.script.ScriptEngine;
    1.27 +import javax.script.ScriptEngineManager;
    1.28 +import javax.script.ScriptException;
    1.29 +import static org.testng.Assert.*;
    1.30 +import org.testng.annotations.Test;
    1.31 +
    1.32 +/** Checks the basic behavior of the translator.
    1.33 + *
    1.34 + * @author Jaroslav Tulach <jtulach@netbeans.org>
    1.35 + */
    1.36 +public class StaticMethodTest {
    1.37 +    @Test public void threePlusFour() throws Exception {
    1.38 +        Invocable i = compileClass("StaticMethod.class");
    1.39 +        
    1.40 +        Object ret = i.invokeFunction("org_apidesign_java4browser_StaticMethod_sumIII", 3, 4);
    1.41 +        assertEquals(ret, Double.valueOf(7), "Should be seven");
    1.42 +    }
    1.43 +
    1.44 +    static Invocable compileClass(String name) throws ScriptException, IOException {
    1.45 +        InputStream is = StaticMethodTest.class.getResourceAsStream(name);
    1.46 +        assertNotNull(is, "Class file found");
    1.47 +        StringBuilder sb = new StringBuilder();
    1.48 +        ByteCodeToJavaScript.compile(name, is, sb);
    1.49 +        ScriptEngineManager sem = new ScriptEngineManager();
    1.50 +        ScriptEngine js = sem.getEngineByExtension("js");
    1.51 +        try {
    1.52 +            Object res = js.eval(sb.toString());
    1.53 +            assertTrue(js instanceof Invocable, "It is invocable object: " + res);
    1.54 +            return (Invocable)js;
    1.55 +        } catch (ScriptException ex) {
    1.56 +            fail("Could not compile:\n" + sb, ex);
    1.57 +            return null;
    1.58 +        }
    1.59 +    }
    1.60 +}