nashorn/test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java
changeset 16522 d643e3ee819c
parent 16260 3318a14ac7cb
child 16528 8d20ffabe47e
equal deleted inserted replaced
16346:5e8c55025644 16522:d643e3ee819c
    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 }