| package org.eclipse.e4.languages.javascript.test; |
| |
| import junit.framework.TestCase; |
| import org.eclipse.e4.languages.javascript.JSBundle; |
| import org.mozilla.javascript.*; |
| import org.osgi.framework.Bundle; |
| |
| public class JSBundleTrackerTest extends TestCase { |
| |
| public JSBundleTrackerTest() { |
| super("JSBundleTrackerTest"); |
| } |
| |
| public JSBundleTrackerTest(String name) { |
| super(name); |
| } |
| |
| public String javaTest() { |
| // this method is NOT over-ridden in JavaScript |
| return "java"; |
| } |
| |
| public String javaToJsTest() { |
| return jsTest(); |
| } |
| |
| public String jsTest() { |
| // this method is over-ridden in JavaScript |
| return "java"; |
| } |
| |
| public void testGetJSBundle() { |
| Bundle bundle = Activator.getBundleContext().getBundle(); |
| JSBundle jsBundle = org.eclipse.e4.internal.languages.javascript.Activator.getJSBundle(bundle); |
| assertNotNull(jsBundle); |
| Scriptable scope = jsBundle.getScope(); |
| Object obj = scope.get("test", scope); |
| assertNotSame(Scriptable.NOT_FOUND, obj); |
| assertEquals("trackertest", obj); |
| |
| Object func = scope.get("createJSBundleTrackerTest", scope); |
| assertNotSame(Scriptable.NOT_FOUND, func); |
| assertTrue(func instanceof Callable); |
| |
| final Scriptable callScope = scope; |
| final Callable createServlet = (Callable) func; |
| Object result = jsBundle.call(new ContextAction() { |
| public Object run(Context context) { |
| return createServlet.call(context, callScope, callScope, null); |
| } |
| }); |
| assertNotNull(result); |
| JSBundleTrackerTest test = (JSBundleTrackerTest) ((Wrapper) result).unwrap(); |
| |
| assertEquals(test.jsTest(), "JavaScript"); |
| assertEquals(test.javaTest(), "java"); |
| assertEquals(test.javaToJsTest(), "JavaScript"); |
| } |
| |
| } |