equal
deleted
inserted
replaced
45 import javax.script.ScriptEngine; |
45 import javax.script.ScriptEngine; |
46 import javax.script.ScriptEngineFactory; |
46 import javax.script.ScriptEngineFactory; |
47 import javax.script.ScriptEngineManager; |
47 import javax.script.ScriptEngineManager; |
48 import javax.script.ScriptException; |
48 import javax.script.ScriptException; |
49 import javax.script.SimpleScriptContext; |
49 import javax.script.SimpleScriptContext; |
50 import jdk.nashorn.internal.runtime.Version; |
|
51 import netscape.javascript.JSObject; |
50 import netscape.javascript.JSObject; |
52 import org.testng.Assert; |
51 import org.testng.Assert; |
53 import org.testng.annotations.Test; |
52 import org.testng.annotations.Test; |
54 |
53 |
55 /** |
54 /** |
127 |
126 |
128 assertEquals(fac.getLanguageName(), "ECMAScript"); |
127 assertEquals(fac.getLanguageName(), "ECMAScript"); |
129 assertEquals(fac.getParameter(ScriptEngine.NAME), "javascript"); |
128 assertEquals(fac.getParameter(ScriptEngine.NAME), "javascript"); |
130 assertEquals(fac.getLanguageVersion(), "ECMA - 262 Edition 5.1"); |
129 assertEquals(fac.getLanguageVersion(), "ECMA - 262 Edition 5.1"); |
131 assertEquals(fac.getEngineName(), "Oracle Nashorn"); |
130 assertEquals(fac.getEngineName(), "Oracle Nashorn"); |
132 assertEquals(fac.getEngineVersion(), Version.version()); |
|
133 assertEquals(fac.getOutputStatement("context"), "print(context)"); |
131 assertEquals(fac.getOutputStatement("context"), "print(context)"); |
134 assertEquals(fac.getProgram("print('hello')", "print('world')"), "print('hello');print('world');"); |
132 assertEquals(fac.getProgram("print('hello')", "print('world')"), "print('hello');print('world');"); |
135 assertEquals(fac.getParameter(ScriptEngine.NAME), "javascript"); |
133 assertEquals(fac.getParameter(ScriptEngine.NAME), "javascript"); |
136 |
134 |
137 boolean seenJS = false; |
135 boolean seenJS = false; |
306 |
304 |
307 try { |
305 try { |
308 e.put("y", "foo"); |
306 e.put("y", "foo"); |
309 e.eval("print(y)"); |
307 e.eval("print(y)"); |
310 } catch (final ScriptException exp) { |
308 } catch (final ScriptException exp) { |
311 exp.printStackTrace(); |
|
312 fail(exp.getMessage()); |
|
313 } |
|
314 } |
|
315 |
|
316 public static void alert(final Object msg) { |
|
317 System.out.println(msg); |
|
318 } |
|
319 |
|
320 @Test |
|
321 public void exposeMethodTest() { |
|
322 final ScriptEngineManager m = new ScriptEngineManager(); |
|
323 final ScriptEngine e = m.getEngineByName("nashorn"); |
|
324 |
|
325 try { |
|
326 final Method alert = ScriptEngineTest.class.getMethod("alert", Object.class); |
|
327 // expose a Method object as global var. |
|
328 e.put("alert", alert); |
|
329 // call the global var. |
|
330 e.eval("alert.invoke(null, 'alert! alert!!')"); |
|
331 } catch (final NoSuchMethodException | SecurityException | ScriptException exp) { |
|
332 exp.printStackTrace(); |
309 exp.printStackTrace(); |
333 fail(exp.getMessage()); |
310 fail(exp.getMessage()); |
334 } |
311 } |
335 } |
312 } |
336 |
313 |
591 fail(exp.getMessage()); |
568 fail(exp.getMessage()); |
592 } |
569 } |
593 } |
570 } |
594 |
571 |
595 @Test |
572 @Test |
596 public void versionTest() { |
|
597 final ScriptEngineManager m = new ScriptEngineManager(); |
|
598 final ScriptEngine e = m.getEngineByName("nashorn"); |
|
599 assertEquals(e.getFactory().getEngineVersion(), Version.version()); |
|
600 } |
|
601 |
|
602 @Test |
|
603 public void noEnumerablePropertiesTest() { |
573 public void noEnumerablePropertiesTest() { |
604 final ScriptEngineManager m = new ScriptEngineManager(); |
574 final ScriptEngineManager m = new ScriptEngineManager(); |
605 final ScriptEngine e = m.getEngineByName("nashorn"); |
575 final ScriptEngine e = m.getEngineByName("nashorn"); |
606 try { |
576 try { |
607 e.eval("for (i in this) { throw 'found property: ' + i }"); |
577 e.eval("for (i in this) { throw 'found property: ' + i }"); |
872 } catch (final ScriptException se) { |
842 } catch (final ScriptException se) { |
873 se.printStackTrace(); |
843 se.printStackTrace(); |
874 fail(se.getMessage()); |
844 fail(se.getMessage()); |
875 } |
845 } |
876 } |
846 } |
877 |
|
878 @Test |
|
879 public void factoryOptionsTest() { |
|
880 final ScriptEngineManager sm = new ScriptEngineManager(); |
|
881 for (ScriptEngineFactory fac : sm.getEngineFactories()) { |
|
882 if (fac instanceof NashornScriptEngineFactory) { |
|
883 final NashornScriptEngineFactory nfac = (NashornScriptEngineFactory)fac; |
|
884 // specify --no-syntax-extensions flag |
|
885 final String[] options = new String[] { "--no-syntax-extensions" }; |
|
886 final ScriptEngine e = nfac.getScriptEngine(options); |
|
887 try { |
|
888 // try nashorn specific extension |
|
889 e.eval("var f = funtion(x) 2*x;"); |
|
890 fail("should have thrown exception!"); |
|
891 } catch (final ScriptException se) { |
|
892 } |
|
893 return; |
|
894 } |
|
895 } |
|
896 |
|
897 fail("Cannot find nashorn factory!"); |
|
898 } |
|
899 } |
847 } |