src/test/java/org/apidesign/java4browser/InstanceTest.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Thu, 20 Sep 2012 09:29:42 +0200
changeset 15 65f6fdfd34b6
parent 14 018eee22b8cf
child 16 6e8e00258234
permissions -rw-r--r--
Able to invoke interface methods
     1 /*
     2  * To change this template, choose Tools | Templates
     3  * and open the template in the editor.
     4  */
     5 package org.apidesign.java4browser;
     6 
     7 import javax.script.Invocable;
     8 import javax.script.ScriptException;
     9 import org.testng.annotations.Test;
    10 import static org.testng.Assert.*;
    11 
    12 /**
    13  *
    14  * @author Jaroslav Tulach <jtulach@netbeans.org>
    15  */
    16 public class InstanceTest {
    17     @Test public void verifyDefaultDoubleValue() throws Exception {
    18         assertExec(
    19             "Will be zero",
    20             "org_apidesign_java4browser_Instance_defaultDblValueD",
    21             Double.valueOf(0)
    22         );
    23     }
    24     @Test public void verifyAssignedByteValue() throws Exception {
    25         assertExec(
    26             "Will one thirty one",
    27             "org_apidesign_java4browser_Instance_assignedByteValueB",
    28             Double.valueOf(31)
    29         );
    30     }
    31     @Test public void verifyMagicOne() throws Exception {
    32         assertExec(
    33             "Should be three and something",
    34             "org_apidesign_java4browser_Instance_magicOneD",
    35             Double.valueOf(3.3)
    36         );
    37     }
    38     @Test public void verifyInstanceMethods() throws Exception {
    39         assertExec(
    40             "Should be eleven as we invoke overwritten method, plus 44",
    41             "org_apidesign_java4browser_Instance_virtualBytesI",
    42             Double.valueOf(55)
    43         );
    44     }
    45     @Test public void verifyInterfaceMethods() throws Exception {
    46         assertExec(
    47             "Retruns default value",
    48             "org_apidesign_java4browser_Instance_interfaceBytesF",
    49             Double.valueOf(31)
    50         );
    51     }
    52     
    53     private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception {
    54         StringBuilder sb = new StringBuilder();
    55         Invocable i = StaticMethodTest.compileClass(sb, "Instance.class", "InstanceSub.class");
    56         
    57         Object ret = null;
    58         try {
    59             ret = i.invokeFunction(methodName, args);
    60         } catch (ScriptException ex) {
    61             fail("Execution failed in " + sb, ex);
    62         } catch (NoSuchMethodException ex) {
    63             fail("Cannot find method in " + sb, ex);
    64         }
    65         if (ret == null && expRes == null) {
    66             return;
    67         }
    68         if (expRes.equals(ret)) {
    69             return;
    70         }
    71         assertEquals(ret, expRes, msg + "was: " + ret + "\n" + sb);
    72         
    73     }
    74     
    75 }