aboutsummaryrefslogtreecommitdiff
path: root/test/src/jdk/nashorn/api/scripting
diff options
context:
space:
mode:
Diffstat (limited to 'test/src/jdk/nashorn/api/scripting')
-rw-r--r--test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java12
-rw-r--r--test/src/jdk/nashorn/api/scripting/ScriptObjectMirrorTest.java25
-rw-r--r--test/src/jdk/nashorn/api/scripting/Window.java19
3 files changed, 56 insertions, 0 deletions
diff --git a/test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java b/test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java
index 99207de0..55aacb34 100644
--- a/test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java
+++ b/test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java
@@ -523,6 +523,18 @@ public class ScriptEngineTest {
assertEquals(sw.toString(), println("34 true hello"));
}
+ @Test
+ public void scriptObjectAutoConversionTest() throws ScriptException {
+ final ScriptEngineManager m = new ScriptEngineManager();
+ final ScriptEngine e = m.getEngineByName("nashorn");
+ e.eval("obj = { foo: 'hello' }");
+ e.put("Window", e.eval("Packages.jdk.nashorn.api.scripting.Window"));
+ assertEquals(e.eval("Window.funcJSObject(obj)"), "hello");
+ assertEquals(e.eval("Window.funcScriptObjectMirror(obj)"), "hello");
+ assertEquals(e.eval("Window.funcMap(obj)"), "hello");
+ assertEquals(e.eval("Window.funcJSObject(obj)"), "hello");
+ }
+
private static final String LINE_SEPARATOR = System.getProperty("line.separator");
// Returns String that would be the result of calling PrintWriter.println
diff --git a/test/src/jdk/nashorn/api/scripting/ScriptObjectMirrorTest.java b/test/src/jdk/nashorn/api/scripting/ScriptObjectMirrorTest.java
index 6c35ee40..544f4ea7 100644
--- a/test/src/jdk/nashorn/api/scripting/ScriptObjectMirrorTest.java
+++ b/test/src/jdk/nashorn/api/scripting/ScriptObjectMirrorTest.java
@@ -26,6 +26,7 @@
package jdk.nashorn.api.scripting;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
@@ -227,4 +228,28 @@ public class ScriptObjectMirrorTest {
final Object newObj = ((ScriptObjectMirror)e2obj.getMember("foo")).newObject();
assertTrue(newObj instanceof ScriptObjectMirror);
}
+
+ @Test
+ public void conversionTest() throws ScriptException {
+ final ScriptEngineManager m = new ScriptEngineManager();
+ final ScriptEngine e = m.getEngineByName("nashorn");
+ final ScriptObjectMirror arr = (ScriptObjectMirror)e.eval("[33, 45, 23]");
+ final int[] intArr = arr.to(int[].class);
+ assertEquals(intArr[0], 33);
+ assertEquals(intArr[1], 45);
+ assertEquals(intArr[2], 23);
+
+ final List<?> list = arr.to(List.class);
+ assertEquals(list.get(0), 33);
+ assertEquals(list.get(1), 45);
+ assertEquals(list.get(2), 23);
+
+ ScriptObjectMirror obj = (ScriptObjectMirror)e.eval(
+ "({ valueOf: function() { return 42 } })");
+ assertEquals(Double.valueOf(42.0), obj.to(Double.class));
+
+ obj = (ScriptObjectMirror)e.eval(
+ "({ toString: function() { return 'foo' } })");
+ assertEquals("foo", obj.to(String.class));
+ }
}
diff --git a/test/src/jdk/nashorn/api/scripting/Window.java b/test/src/jdk/nashorn/api/scripting/Window.java
index bde23941..510c5dae 100644
--- a/test/src/jdk/nashorn/api/scripting/Window.java
+++ b/test/src/jdk/nashorn/api/scripting/Window.java
@@ -25,6 +25,9 @@
package jdk.nashorn.api.scripting;
+import java.util.Map;
+import javax.script.Bindings;
+
public class Window {
private String location = "http://localhost:8080/window";
@@ -63,4 +66,20 @@ public class Window {
System.out.println("window.setTimeout: " + delay + ", code: " + code);
return 0;
}
+
+ public static Object funcJSObject(final JSObject jsobj) {
+ return jsobj.getMember("foo");
+ }
+
+ public static Object funcScriptObjectMirror(final ScriptObjectMirror sobj) {
+ return sobj.get("foo");
+ }
+
+ public static Object funcMap(final Map<?,?> map) {
+ return map.get("foo");
+ }
+
+ public static Object funcBindings(final Bindings bindings) {
+ return bindings.get("foo");
+ }
}