aboutsummaryrefslogtreecommitdiffstats
path: root/tests/reproducers
diff options
context:
space:
mode:
authorAdam Domurad <[email protected]>2012-11-21 14:41:48 -0500
committerAdam Domurad <[email protected]>2012-11-21 14:41:48 -0500
commit7c492a6639886677b752a2889b626902b093ea8c (patch)
tree6ea0540be60669a4d0ceb6171f80cb05ef1efceb /tests/reproducers
parent6805ac326625634d7fc02f19b4989811c83bffee (diff)
Adding forgotten files for PR1198 reproducer
Diffstat (limited to 'tests/reproducers')
-rw-r--r--tests/reproducers/simple/JSObjectFromEval/resources/JSObjectFromEval.html54
-rw-r--r--tests/reproducers/simple/JSObjectFromEval/resources/JSObjectFromEval.js22
-rw-r--r--tests/reproducers/simple/JSObjectFromEval/srcs/JSObjectFromEval.java62
-rw-r--r--tests/reproducers/simple/JSObjectFromEval/testcases/JSObjectFromEvalTest.java90
4 files changed, 228 insertions, 0 deletions
diff --git a/tests/reproducers/simple/JSObjectFromEval/resources/JSObjectFromEval.html b/tests/reproducers/simple/JSObjectFromEval/resources/JSObjectFromEval.html
new file mode 100644
index 0000000..8e98ef7
--- /dev/null
+++ b/tests/reproducers/simple/JSObjectFromEval/resources/JSObjectFromEval.html
@@ -0,0 +1,54 @@
+<!--
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+IcedTea is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+
+ -->
+<html>
+ <head></head>
+ <body>
+ <applet
+ id = "applet"
+ code = "JSObjectFromEval.class"
+ archive = "JSObjectFromEval.jar">
+ </applet>
+ <script type = "text/javascript"
+ src = "JSObjectFromEval.js">
+ </script>
+
+ <script type = "text/javascript">
+ testJSObjectFromEval();
+ </script>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/reproducers/simple/JSObjectFromEval/resources/JSObjectFromEval.js b/tests/reproducers/simple/JSObjectFromEval/resources/JSObjectFromEval.js
new file mode 100644
index 0000000..ffa727e
--- /dev/null
+++ b/tests/reproducers/simple/JSObjectFromEval/resources/JSObjectFromEval.js
@@ -0,0 +1,22 @@
+function testJSObjectFromEval() {
+ var applet = document.getElementById("applet");
+ var obj;
+
+ applet.output("*** Test JSObject from JS ***");
+
+ applet.output("JS create");
+ obj = new Object();
+ applet.output("Java set");
+ applet.setJSMember(obj, "test", 0);
+ applet.output("obj.test = " + obj.test);
+
+ applet.output("*** Test JSObject from Java ***");
+
+ applet.output("Java create");
+ obj = applet.newJSObject();
+ applet.output("Java set");
+ applet.setJSMember(obj, "test", 0);
+ applet.output("obj.test = " + obj.test);
+
+ applet.output("*** APPLET FINISHED ***"); //We're done here
+} \ No newline at end of file
diff --git a/tests/reproducers/simple/JSObjectFromEval/srcs/JSObjectFromEval.java b/tests/reproducers/simple/JSObjectFromEval/srcs/JSObjectFromEval.java
new file mode 100644
index 0000000..2aa42d2
--- /dev/null
+++ b/tests/reproducers/simple/JSObjectFromEval/srcs/JSObjectFromEval.java
@@ -0,0 +1,62 @@
+/*
+Copyright (C) 2012 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as published by
+the Free Software Foundation, version 2.
+
+IcedTea is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+ */
+
+import java.applet.Applet;
+
+import netscape.javascript.JSObject;
+
+public class JSObjectFromEval extends Applet {
+ @Override
+ public void start() {
+ System.out.println(getClass().getSimpleName() + " started.");
+ }
+
+ public void output(String s) {
+ System.out.println(s);
+ }
+
+ public JSObject newJSObject() {
+ JSObject win = JSObject.getWindow(this);
+ return (JSObject) win.eval("new Object()");
+ }
+
+ public void setJSMember(JSObject js, String memb, Object val) {
+ String typeName = val.getClass().getName();
+ System.out.println("setJSMember: passed '" + typeName + "'");
+ js.setMember(memb, val);
+ }
+} \ No newline at end of file
diff --git a/tests/reproducers/simple/JSObjectFromEval/testcases/JSObjectFromEvalTest.java b/tests/reproducers/simple/JSObjectFromEval/testcases/JSObjectFromEvalTest.java
new file mode 100644
index 0000000..42c1b07
--- /dev/null
+++ b/tests/reproducers/simple/JSObjectFromEval/testcases/JSObjectFromEvalTest.java
@@ -0,0 +1,90 @@
+/*
+Copyright (C) 2012 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as published by
+the Free Software Foundation, version 2.
+
+IcedTea is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+ */
+
+import static org.junit.Assert.assertTrue;
+
+import net.sourceforge.jnlp.ProcessResult;
+import net.sourceforge.jnlp.ServerAccess.AutoClose;
+import net.sourceforge.jnlp.annotations.Bug;
+import net.sourceforge.jnlp.annotations.KnownToFail;
+import net.sourceforge.jnlp.annotations.NeedsDisplay;
+import net.sourceforge.jnlp.annotations.TestInBrowsers;
+import net.sourceforge.jnlp.browsertesting.BrowserTest;
+import net.sourceforge.jnlp.browsertesting.Browsers;
+import net.sourceforge.jnlp.closinglisteners.AutoOkClosingListener;
+
+import org.junit.Test;
+
+public class JSObjectFromEvalTest extends BrowserTest {
+
+ private static final String END_STRING = AutoOkClosingListener.MAGICAL_OK_CLOSING_STRING;
+
+ private static final String JAVA_CREATE = "Java create\n";
+ private static final String JS_CREATE = "JS create\n";
+ private static final String JAVA_SET = "Java set\n";
+ private static final String PASSED_INTEGER = "setJSMember: passed 'java.lang.Integer'\n";
+ private static final String CORRECT_VALUE = "obj.test = 0";
+
+ @Test
+ @TestInBrowsers(testIn = { Browsers.all })
+ @NeedsDisplay
+ @Bug(id = { "PR1198" })
+ @KnownToFail
+ public void testJSObjectSetMemberIsSet() throws Exception {
+ ProcessResult pr = server.executeBrowser("/JSObjectFromEval.html",
+ AutoClose.CLOSE_ON_BOTH);
+
+ String expectedJSCreateOutput = JS_CREATE + JAVA_SET + PASSED_INTEGER
+ + CORRECT_VALUE;
+ String expectedJavaCreateOutput = JAVA_CREATE + JAVA_SET
+ + PASSED_INTEGER + CORRECT_VALUE;
+
+ // No reason JS create should fail, this is mostly a sanity check:
+ assertTrue("stdout should contain 'JS create [...] " + CORRECT_VALUE
+ + "' but did not.", pr.stdout.contains(expectedJSCreateOutput));
+
+ // Demonstrates PR1198:
+ assertTrue("stdout should contain 'Java create [...] " + CORRECT_VALUE
+ + "' but did not.",
+ pr.stdout.contains(expectedJavaCreateOutput));
+
+ // Make sure we got to the end of the script
+ assertTrue("stdout should contain '" + END_STRING + "' but did not.",
+ pr.stdout.contains(END_STRING));
+ }
+
+}