test/src/jdk/nashorn/api/scripting/ScriptObjectMirrorTest.java

Print this page

        

*** 359,364 **** --- 359,377 ---- " return obj instanceof Packages.jdk.nashorn.api.scripting.ScriptObjectMirror; " + "}"); final Function<Object,Object> func = invocable.getInterface(Function.class); assertFalse((boolean)func.apply(engine.eval("({ x: 2 })"))); } + + // @bug 8055687: Wrong "this" passed to JSObject.eval call + @Test + public void checkThisForJSObjectEval() throws Exception { + final ScriptEngineManager engineManager = new ScriptEngineManager(); + final ScriptEngine e = engineManager.getEngineByName("nashorn"); + final JSObject jsobj = (JSObject)e.eval("({foo: 23, bar: 'hello' })"); + assertEquals(((Number)jsobj.eval("this.foo")).intValue(), 23); + assertEquals(jsobj.eval("this.bar"), "hello"); + assertEquals(jsobj.eval("String(this)"), "[object Object]"); + final Object global = e.eval("this"); + assertFalse(global.equals(jsobj.eval("this"))); + } }