aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog19
-rw-r--r--Makefile.am10
-rw-r--r--netx-dist-tests-whitelist2
-rw-r--r--tests/reproducers/simple/JavawsAWTRobotFindsButton/resources/javaws-awtrobot-finds-button.jnlp57
-rw-r--r--tests/reproducers/simple/JavawsAWTRobotFindsButton/srcs/JavawsAWTRobotFindsButton.java166
-rw-r--r--tests/reproducers/simple/JavawsAWTRobotFindsButton/testcases/JavawsAWTRobotFindsButtonTest.java138
-rw-r--r--tests/reproducers/simple/JavawsAWTRobotFindsButton/testcases/buttonA.pngbin0 -> 452 bytes
-rw-r--r--tests/reproducers/simple/JavawsAWTRobotUsageSample/testcases/JavawsAWTRobotUsageSampleTest.java5
8 files changed, 393 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 1491e2e..5f49067 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+2013-05-02 Jana Fabrikova <[email protected]>
+
+ * Makefile.am:
+ Change in processing the goal
+ (stamps/compile-reproducers-testcases.stamp)
+ All .java files from reproducers testcases directory are
+ compiled, all non-java files are copied into the
+ TEST_EXTENSIONS_TESTS_DIR, i.e.
+ tests.build/test-extensions-tests directory
+ * tests/reproducers/simple/JavawsAWTRobotFindsButton/resources/javaws-awtrobot-finds-button.jnlp:
+ jnlp file for displaying the applet
+ * tests/reproducers/simple/JavawsAWTRobotFindsButton/srcs/JavawsAWTRobotFindsButton.java:
+ the applet used in the reproducer
+ * tests/reproducers/simple/JavawsAWTRobotFindsButton/testcases/JavawsAWTRobotFindsButtonTest.java:
+ adding 2 tests: that an icon is loaded, and that the button is
+ identified from the given icon and clicked by awt robot
+ * tests/reproducers/simple/JavawsAWTRobotFindsButton/testcases/buttonA.png:
+ the icon of the wanted button
+
2013-04-26 Jiri Vanek <[email protected]>
Jacob Wisor <[email protected]>
diff --git a/Makefile.am b/Makefile.am
index 93e79e7..0696895 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -788,7 +788,15 @@ stamps/compile-reproducers-testcases.stamp: stamps/netx-dist.stamp stamps/plugin
$(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \
-d $(TEST_EXTENSIONS_TESTS_DIR) \
-classpath $(JUNIT_JAR):$(NETX_DIR)/lib/classes.jar:$(TEST_EXTENSIONS_DIR) \
- "$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/testcases/"* ; \
+ "$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/testcases/"*.java ; \
+ if [ -d "$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/testcases" ]; then \
+ pushd "$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/testcases" ; \
+ NONJAVA_RESOURCES=`ls | grep -v ".*\\.java$$"` ; \
+ if [ -n "$$NONJAVA_RESOURCES" ]; then \
+ cp $$NONJAVA_RESOURCES $(TEST_EXTENSIONS_TESTS_DIR)/ ; \
+ fi ; \
+ popd ; \
+ fi ; \
done ; \
done ; \
mkdir -p stamps && \
diff --git a/netx-dist-tests-whitelist b/netx-dist-tests-whitelist
index 8d98f9d..887baa2 100644
--- a/netx-dist-tests-whitelist
+++ b/netx-dist-tests-whitelist
@@ -1 +1 @@
-.*
+.*JavawsAWTRobot.*
diff --git a/tests/reproducers/simple/JavawsAWTRobotFindsButton/resources/javaws-awtrobot-finds-button.jnlp b/tests/reproducers/simple/JavawsAWTRobotFindsButton/resources/javaws-awtrobot-finds-button.jnlp
new file mode 100644
index 0000000..10ad591
--- /dev/null
+++ b/tests/reproducers/simple/JavawsAWTRobotFindsButton/resources/javaws-awtrobot-finds-button.jnlp
@@ -0,0 +1,57 @@
+<!--
+
+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.
+
+ -->
+<?xml version="1.0" encoding="UTF-8"?>
+<jnlp spec="1.0+" codebase="." href="javaws-awtrobot-finds-button.jnlp">
+ <information>
+ <title>AWTRobot usage sample</title>
+ <vendor>IcedTea</vendor>
+ <homepage href="http://icedtea.classpath.org/wiki/IcedTea-Web#Testing_IcedTea-Web"/>
+ <description>AWTRobot usage sample</description>
+ </information>
+ <resources>
+ <!-- Application Resources -->
+ <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>
+ <jar href="JavawsAWTRobotFindsButton.jar" main="true" />
+ </resources>
+ <applet-desc
+ name="AWTRobot usage sample"
+ main-class="JavawsAWTRobotFindsButton"
+ width="400"
+ height="400">
+ </applet-desc>
+</jnlp>
diff --git a/tests/reproducers/simple/JavawsAWTRobotFindsButton/srcs/JavawsAWTRobotFindsButton.java b/tests/reproducers/simple/JavawsAWTRobotFindsButton/srcs/JavawsAWTRobotFindsButton.java
new file mode 100644
index 0000000..2b62816
--- /dev/null
+++ b/tests/reproducers/simple/JavawsAWTRobotFindsButton/srcs/JavawsAWTRobotFindsButton.java
@@ -0,0 +1,166 @@
+/* JavawsAWTRobotFindsButton.java
+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 java.awt.Graphics;
+import java.awt.Color;
+import java.awt.Image;
+import java.awt.Panel;
+import java.awt.Button;
+import java.awt.Dimension;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+
+public class JavawsAWTRobotFindsButton extends Applet {
+
+ private static final String initStr = "JavawsAWTRobotFindsButton is ready for awt tests!";
+ public static final String iconFile = "marker.png";
+
+ public static final Color APPLET_COLOR = new Color(230, 230, 250); // lavender
+ public static final Color BUTTON_COLOR1 = new Color(32, 178, 170); // light sea green
+
+ public Image img;
+ public Panel panel;
+
+ public void init(){
+ img = getImage(getCodeBase(), iconFile);
+
+ createGUI();
+
+ writeAppletInitialized();
+ }
+
+ //this method should be called by the extending applet
+ //when the whole gui is ready
+ public void writeAppletInitialized(){
+ System.out.println(initStr);
+ }
+
+ //paint the icon in upper left corner
+ @Override public void paint(Graphics g){
+ int width = 32;
+ int height = 32;
+ int x = 0;
+ int y = 0;
+ g.drawImage(img, x, y, width, height, this);
+ super.paint(g);
+ }
+
+ private Button createButton(String label, Color color) {
+ Button b = new Button(label);
+ b.setBackground(color);
+ b.setPreferredSize(new Dimension(100, 50));
+ return b;
+ }
+
+ // sets background of the applet
+ // and adds the panel with 2 buttons
+ private void createGUI() {
+ setBackground(APPLET_COLOR);
+
+ panel = new Panel();
+ panel.setBounds(33,33,267,267);
+
+ Button bA = createButton("Button A", BUTTON_COLOR1);
+
+
+ bA.addMouseListener(new MouseListener() {
+
+ public void mouseClicked(MouseEvent e) {
+ System.out.println("Mouse clicked button A.");
+ }
+
+ @Override
+ public void mouseEntered(MouseEvent arg0) {
+
+ }
+
+ @Override
+ public void mouseExited(MouseEvent arg0) {
+
+ }
+
+ @Override
+ public void mousePressed(MouseEvent arg0) {
+
+ }
+
+ @Override
+ public void mouseReleased(MouseEvent arg0) {
+
+ }
+
+ });
+
+ panel.add(bA);
+
+
+ Button bB = createButton("Button B", BUTTON_COLOR1);
+
+
+ bB.addMouseListener(new MouseListener() {
+
+ public void mouseClicked(MouseEvent e) {
+ System.out.println("Mouse clicked button B.");
+ }
+
+ @Override
+ public void mouseEntered(MouseEvent e) {
+
+ }
+
+ @Override
+ public void mouseExited(MouseEvent e) {
+
+ }
+
+ @Override
+ public void mousePressed(MouseEvent e) {
+
+ }
+
+ @Override
+ public void mouseReleased(MouseEvent e) {
+
+ }
+ });
+
+ panel.add(bB);
+
+ this.add(panel);
+ }
+}
diff --git a/tests/reproducers/simple/JavawsAWTRobotFindsButton/testcases/JavawsAWTRobotFindsButtonTest.java b/tests/reproducers/simple/JavawsAWTRobotFindsButton/testcases/JavawsAWTRobotFindsButtonTest.java
new file mode 100644
index 0000000..1a4b333
--- /dev/null
+++ b/tests/reproducers/simple/JavawsAWTRobotFindsButton/testcases/JavawsAWTRobotFindsButtonTest.java
@@ -0,0 +1,138 @@
+/* JavawsAWTRobotFindsButtonTest.java
+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.awt.Color;
+import java.awt.event.InputEvent;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+
+import javax.imageio.ImageIO;
+
+import net.sourceforge.jnlp.ProcessResult;
+import net.sourceforge.jnlp.ServerAccess;
+import net.sourceforge.jnlp.annotations.NeedsDisplay;
+import net.sourceforge.jnlp.awt.AWTFrameworkException;
+import net.sourceforge.jnlp.awt.AWTHelper;
+import net.sourceforge.jnlp.awt.imagesearch.ComponentFinder;
+import net.sourceforge.jnlp.awt.imagesearch.ComponentNotFoundException;
+import net.sourceforge.jnlp.browsertesting.BrowserTest;
+import net.sourceforge.jnlp.closinglisteners.Rule;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class JavawsAWTRobotFindsButtonTest {
+
+ public static final ServerAccess server = new ServerAccess();
+
+ private final String initStr = "JavawsAWTRobotFindsButton is ready for awt tests!";
+ private static final Color APPLET_COLOR = new Color(230, 230, 250); // lavender
+ private static final Color BUTTON_COLOR1 = new Color(32, 178, 170); // light sea green
+
+ private static final BufferedImage buttonIcon;
+
+ static{
+ try {
+ buttonIcon = ImageIO.read(JavawsAWTRobotFindsButtonTest.class.getClassLoader().getResource("buttonA.png"));
+ } catch (IOException e) {
+ throw new RuntimeException("Problem initializing buttonIcon",e);
+ }
+ }
+
+ private class AWTHelperImpl_ClickButtonIcon extends AWTHelper{
+
+ public AWTHelperImpl_ClickButtonIcon() {
+ super(initStr, 400, 400);
+
+ this.setAppletColor(APPLET_COLOR);
+ }
+
+ @Override
+ public void run() {
+ // move mouse into the button area and out
+ try {
+ clickOnIconExact(buttonIcon, InputEvent.BUTTON1_MASK);
+ } catch (ComponentNotFoundException e) {
+ Assert.fail("Button icon not found: "+e.getMessage());
+ }
+
+ }
+ }
+
+ private void evaluateStdoutContents(ProcessResult pr, AWTHelper helper) {
+
+ // Assert that the applet was initialized.
+ Rule i = helper.getInitStrAsRule();
+ Assert.assertTrue(i.toPassingString(), i.evaluate(initStr));
+
+ // Assert there are all the test messages from applet
+ for (Rule r : helper.getRules() ) {
+ Assert.assertTrue(r.toPassingString(), r.evaluate(pr.stdout));
+ }
+
+ }
+
+
+ private void appletAWTMouseTest(String url, AWTHelper helper) throws Exception {
+
+ String strURL = "/" + url;
+
+ try {
+ ServerAccess.PROCESS_TIMEOUT = 40 * 1000;// ms
+ ProcessResult pr = server.executeJavaws(strURL, helper, helper);
+ evaluateStdoutContents(pr, helper);
+ } finally {
+ ServerAccess.PROCESS_TIMEOUT = 20 * 1000;// ms
+ }
+ }
+
+ @Test
+ @NeedsDisplay
+ public void findAndClickButtonByIcon_Test() throws Exception {
+ // display the page, activate applet, click on button
+ AWTHelper helper = new AWTHelperImpl_ClickButtonIcon();
+ helper.addClosingRulesFromStringArray(new String[] { "Mouse clicked button A." });
+ appletAWTMouseTest("javaws-awtrobot-finds-button.jnlp", helper);
+ }
+
+ @Test
+ public void iconFileLoaded_Test() throws IOException {
+ Assert.assertNotNull("buttonIcon should not be null", buttonIcon);
+ }
+
+}
diff --git a/tests/reproducers/simple/JavawsAWTRobotFindsButton/testcases/buttonA.png b/tests/reproducers/simple/JavawsAWTRobotFindsButton/testcases/buttonA.png
new file mode 100644
index 0000000..8d136b8
--- /dev/null
+++ b/tests/reproducers/simple/JavawsAWTRobotFindsButton/testcases/buttonA.png
Binary files differ
diff --git a/tests/reproducers/simple/JavawsAWTRobotUsageSample/testcases/JavawsAWTRobotUsageSampleTest.java b/tests/reproducers/simple/JavawsAWTRobotUsageSample/testcases/JavawsAWTRobotUsageSampleTest.java
index 1d5c764..8b135e0 100644
--- a/tests/reproducers/simple/JavawsAWTRobotUsageSample/testcases/JavawsAWTRobotUsageSampleTest.java
+++ b/tests/reproducers/simple/JavawsAWTRobotUsageSample/testcases/JavawsAWTRobotUsageSampleTest.java
@@ -55,10 +55,11 @@ import net.sourceforge.jnlp.closinglisteners.Rule;
import org.junit.Assert;
import org.junit.Test;
-public class JavawsAWTRobotUsageSampleTest extends BrowserTest {
+public class JavawsAWTRobotUsageSampleTest {
+
+ public static final ServerAccess server = new ServerAccess();
private final String initStr = "JavawsAWTRobotUsageSample is ready for awt tests!";
-
private static final Color APPLET_COLOR = new Color(230, 230, 250); // lavender
private static final Color BUTTON_COLOR1 = new Color(32, 178, 170); // light sea green