public void accessJavaScriptArrayWithTypedElementsFromJava() { Source src = Source.newBuilder("js", "" + "(function() {\n" + " class Point {\n" + " constructor(x, y) {\n" + " this.x = x;\n" + " this.y = y;\n" + " }\n" + " }\n" + " return [ new Point(30, 15), new Point(5, 7) ];\n" + "})\n", "ArrayOfPoints.js").buildLiteral(); // Evaluate the JavaScript function definition Value jsFunction = context.eval(src); // Create Java-typed access to the JavaScript function PointProvider pointProvider = jsFunction.as(PointProvider.class); // Invoke the JavaScript function to generate points List<Point> points = pointProvider.createPoints(); assertEquals("Two points", 2, points.size()); Point first = points.get(0); assertEquals(30, first.x()); assertEquals(15, first.y()); Point second = points.get(1); assertEquals(5, second.x()); assertEquals(7, second.y()); } // END: com.oracle.truffle.tck.impl.PolyglotEngineWithJavaScript#accessJavaScriptArrayWithTypedElementsFromJava
public void accessJavaScriptArrayWithTypedElementsFromJava() { Source src = Source.newBuilder("js", "" + "(function() {\n" + " class Point {\n" + " constructor(x, y) {\n" + " this.x = x;\n" + " this.y = y;\n" + " }\n" + " }\n" + " return [ new Point(30, 15), new Point(5, 7) ];\n" + "})\n", "ArrayOfPoints.js").buildLiteral(); // Evaluate the JavaScript function definition Value jsFunction = context.eval(src); // Create Java-typed access to the JavaScript function PointProvider pointProvider = jsFunction.as(PointProvider.class); // Invoke the JavaScript function to generate points List<Point> points = pointProvider.createPoints(); assertEquals("Two points", 2, points.size()); Point first = points.get(0); assertEquals(30, first.x()); assertEquals(15, first.y()); Point second = points.get(1); assertEquals(5, second.x()); assertEquals(7, second.y()); } // END: com.oracle.truffle.tck.impl.PolyglotEngineWithJavaScript#accessJavaScriptArrayWithTypedElementsFromJava