8316389: Open source few AWT applet tests
Reviewed-by: dnguyen, abhiscxk, aivanov
This commit is contained in:
parent
788e6e1548
commit
65227a3c64
175
test/jdk/java/awt/Frame/FrameRepackTest.java
Normal file
175
test/jdk/java/awt/Frame/FrameRepackTest.java
Normal file
@ -0,0 +1,175 @@
|
||||
/*
|
||||
* Copyright (c) 1998, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code 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
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.EventQueue;
|
||||
import java.awt.Frame;
|
||||
import java.awt.Label;
|
||||
import java.awt.Menu;
|
||||
import java.awt.MenuBar;
|
||||
import java.awt.MenuItem;
|
||||
import java.awt.Panel;
|
||||
import java.awt.ScrollPane;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @key headful
|
||||
* @summary Test dynamically changing frame component visibility and repacking
|
||||
* @library /java/awt/regtesthelpers
|
||||
* @build PassFailJFrame
|
||||
* @run main/manual FrameRepackTest
|
||||
*/
|
||||
|
||||
public class FrameRepackTest {
|
||||
|
||||
private static final String INSTRUCTIONS = """
|
||||
There is a green frame with a menubar.
|
||||
The menubar has one menu, labelled 'Flip'.
|
||||
The menu has two items, labelled 'visible' and 'not visible'.
|
||||
The frame also contains a red panel that contains two line labels,
|
||||
'This panel is always displayed' and 'it is a test'.
|
||||
|
||||
If you select the menu item 'Flip->visible', then another panel is
|
||||
added below the red panel.
|
||||
The added panel is blue and has yellow horizontal and vertical scrollbars.
|
||||
|
||||
If you select menu item 'Flip->not visible', the second panel
|
||||
is removed and the frame appears as it did originally.
|
||||
|
||||
You can repeatedly add and remove the second panel in this way.
|
||||
After such an addition or removal, the frame's location on the screen
|
||||
should not change, while the size changes to accommodate
|
||||
either just the red panel or both the red and the blue panels.
|
||||
|
||||
If you resize the frame larger, the red panel remains at the
|
||||
top of the frame with its height fixed and its width adjusted
|
||||
to the width of the frame.
|
||||
|
||||
Similarly, if it is present, the blue panel and its yellow scroolbars
|
||||
remain at the bottom of the frame with fixed height and width adjusted
|
||||
to the size of the frame. But selecting 'visible' or 'not visible'
|
||||
repacks the frame, thereby adjusting its size tightly to its panel(s).
|
||||
|
||||
Upon test completion, click Pass or Fail appropriately.
|
||||
""";
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
PassFailJFrame passFailJFrame = new PassFailJFrame.Builder()
|
||||
.title("FrameRepackTest Instructions")
|
||||
.instructions(INSTRUCTIONS)
|
||||
.testTimeOut(5)
|
||||
.rows(30)
|
||||
.columns(45)
|
||||
.build();
|
||||
|
||||
EventQueue.invokeAndWait(() -> {
|
||||
FrameRepack frame = new FrameRepack();
|
||||
|
||||
PassFailJFrame.addTestWindow(frame);
|
||||
PassFailJFrame.positionTestWindow(frame,
|
||||
PassFailJFrame.Position.HORIZONTAL);
|
||||
|
||||
frame.setVisible(true);
|
||||
});
|
||||
|
||||
passFailJFrame.awaitAndCheck();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class FrameRepack extends Frame implements ActionListener {
|
||||
|
||||
Panel south;
|
||||
|
||||
public FrameRepack() {
|
||||
super("FrameRepack");
|
||||
|
||||
// create the menubar
|
||||
MenuBar menubar = new MenuBar();
|
||||
this.setMenuBar(menubar);
|
||||
// create the options
|
||||
Menu flip = new Menu("Flip");
|
||||
MenuItem mi;
|
||||
mi = new MenuItem("visible");
|
||||
mi.addActionListener(this);
|
||||
flip.add(mi);
|
||||
mi = new MenuItem("not visible");
|
||||
mi.addActionListener(this);
|
||||
flip.add(mi);
|
||||
|
||||
menubar.add(flip);
|
||||
|
||||
setLayout(new BorderLayout(2, 2));
|
||||
setBackground(Color.green);
|
||||
|
||||
// north panel is always displayed
|
||||
Panel north = new Panel();
|
||||
north.setBackground(Color.red);
|
||||
north.setLayout(new BorderLayout(2, 2));
|
||||
north.add("North", new Label("This panel is always displayed"));
|
||||
north.add("Center", new Label("it is a test"));
|
||||
north.setSize(200, 200);
|
||||
add("North", north);
|
||||
|
||||
// south panel can be visible or not...
|
||||
// The problem seems to occur when I put this panel not visible
|
||||
south = new Panel();
|
||||
south.setBackground(Color.white);
|
||||
south.setLayout(new BorderLayout());
|
||||
|
||||
ScrollPane scroller = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS);
|
||||
scroller.setBackground(Color.yellow);
|
||||
Panel pan1 = new Panel();
|
||||
pan1.setBackground(Color.blue);
|
||||
pan1.setLayout(new BorderLayout());
|
||||
|
||||
pan1.setSize(400, 150);
|
||||
scroller.add("Center", pan1);
|
||||
|
||||
south.add("South", scroller);
|
||||
|
||||
add("South", south);
|
||||
|
||||
south.setVisible(false);
|
||||
|
||||
setSize(350, 300);
|
||||
|
||||
pack();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent evt) {
|
||||
if (evt.getSource() instanceof MenuItem) {
|
||||
if (evt.getActionCommand().equals("visible")) {
|
||||
south.setVisible(true);
|
||||
pack();
|
||||
} else if (evt.getActionCommand().equals("not visible")) {
|
||||
south.setVisible(false);
|
||||
pack();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,92 @@
|
||||
/*
|
||||
* Copyright (c) 1998, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code 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
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Canvas;
|
||||
import java.awt.Color;
|
||||
import java.awt.EventQueue;
|
||||
import java.awt.Frame;
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 4041442
|
||||
* @key headful
|
||||
* @summary Test resizing a frame containing a canvas
|
||||
* @library /java/awt/regtesthelpers
|
||||
* @build PassFailJFrame
|
||||
* @run main/manual FrameResizeTest_1
|
||||
*/
|
||||
|
||||
public class FrameResizeTest_1 {
|
||||
|
||||
private static final String INSTRUCTIONS = """
|
||||
To the right of this frame is an all-white 200x200 frame.
|
||||
|
||||
This is actually a white canvas component in the frame.
|
||||
The frame itself is red.
|
||||
The red should never show.
|
||||
In particular, after you resize the frame, you should see all white and no red.
|
||||
(During very fast window resizing, red color may appear briefly,
|
||||
which is not a failure.)
|
||||
|
||||
Upon test completion, click Pass or Fail appropriately.
|
||||
""";
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
PassFailJFrame passFailJFrame = new PassFailJFrame.Builder()
|
||||
.title("FrameResizeTest_1 Instructions")
|
||||
.instructions(INSTRUCTIONS)
|
||||
.testTimeOut(5)
|
||||
.rows(12)
|
||||
.columns(45)
|
||||
.build();
|
||||
|
||||
EventQueue.invokeAndWait(() -> {
|
||||
FrameResize_1 frame = new FrameResize_1();
|
||||
|
||||
PassFailJFrame.addTestWindow(frame);
|
||||
PassFailJFrame.positionTestWindow(frame,
|
||||
PassFailJFrame.Position.HORIZONTAL);
|
||||
|
||||
frame.setVisible(true);
|
||||
});
|
||||
|
||||
passFailJFrame.awaitAndCheck();
|
||||
}
|
||||
}
|
||||
|
||||
class FrameResize_1 extends Frame {
|
||||
|
||||
FrameResize_1() {
|
||||
super("FrameResize_1");
|
||||
// Create a white canvas
|
||||
Canvas canvas = new Canvas();
|
||||
canvas.setBackground(Color.white);
|
||||
|
||||
setLayout(new BorderLayout());
|
||||
add("Center", canvas);
|
||||
|
||||
setBackground(Color.red);
|
||||
setSize(200,200);
|
||||
}
|
||||
}
|
144
test/jdk/java/awt/Frame/FrameResizeTest/FrameResizeTest_2.java
Normal file
144
test/jdk/java/awt/Frame/FrameResizeTest/FrameResizeTest_2.java
Normal file
@ -0,0 +1,144 @@
|
||||
/*
|
||||
* Copyright (c) 1998, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code 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
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Canvas;
|
||||
import java.awt.Color;
|
||||
import java.awt.Container;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.EventQueue;
|
||||
import java.awt.Frame;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.GridBagConstraints;
|
||||
import java.awt.GridBagLayout;
|
||||
import java.awt.Panel;
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 4065568
|
||||
* @key headful
|
||||
* @summary Test resizing a frame containing a canvas
|
||||
* @library /java/awt/regtesthelpers
|
||||
* @build PassFailJFrame
|
||||
* @run main/manual FrameResizeTest_2
|
||||
*/
|
||||
|
||||
public class FrameResizeTest_2 {
|
||||
private static final String INSTRUCTIONS = """
|
||||
There is a frame (size 300x300).
|
||||
The left half is red and the right half is blue.
|
||||
|
||||
When you resize the frame, it should still have a red left half
|
||||
and a blue right half.
|
||||
|
||||
In particular, no green should be visible after a resize.
|
||||
|
||||
Upon test completion, click Pass or Fail appropriately.
|
||||
""";
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
PassFailJFrame passFailJFrame = new PassFailJFrame.Builder()
|
||||
.title("FrameResizeTest_2 Instructions")
|
||||
.instructions(INSTRUCTIONS)
|
||||
.testTimeOut(5)
|
||||
.rows(10)
|
||||
.columns(45)
|
||||
.build();
|
||||
|
||||
EventQueue.invokeAndWait(() -> {
|
||||
FrameResize_2 frame = new FrameResize_2();
|
||||
|
||||
PassFailJFrame.addTestWindow(frame);
|
||||
PassFailJFrame.positionTestWindow(frame,
|
||||
PassFailJFrame.Position.HORIZONTAL);
|
||||
|
||||
frame.setVisible(true);
|
||||
});
|
||||
|
||||
passFailJFrame.awaitAndCheck();
|
||||
}
|
||||
}
|
||||
|
||||
class FrameResize_2 extends Frame {
|
||||
|
||||
FrameResize_2() {
|
||||
super("FrameResize_2");
|
||||
|
||||
setLayout(new GridBagLayout());
|
||||
|
||||
GridBagConstraints c = new GridBagConstraints();
|
||||
c.fill = GridBagConstraints.BOTH;
|
||||
c.weightx = 1;
|
||||
c.weighty = 1;
|
||||
|
||||
Container dumbContainer = new DumbContainer();
|
||||
add(dumbContainer, c);
|
||||
|
||||
Panel dumbPanel = new DumbPanel();
|
||||
add(dumbPanel, c);
|
||||
|
||||
setSize(300, 300);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class Fake extends Canvas {
|
||||
public Fake(String name, Color what) {
|
||||
setBackground(what);
|
||||
setName(name);
|
||||
}
|
||||
|
||||
public void paint(Graphics g) {
|
||||
Dimension d = getSize();
|
||||
g.setColor(getBackground());
|
||||
g.fillRect(0, 0, d.width, d.height);
|
||||
}
|
||||
}
|
||||
|
||||
class DumbContainer extends Container {
|
||||
public DumbContainer() {
|
||||
setLayout(new BorderLayout());
|
||||
add("Center", new Fake("dumbc", Color.red));
|
||||
}
|
||||
|
||||
public void paint(Graphics g) {
|
||||
Dimension d = getSize();
|
||||
g.setColor(Color.green);
|
||||
g.fillRect(0, 0, d.width, d.height);
|
||||
super.paint(g);
|
||||
}
|
||||
}
|
||||
|
||||
class DumbPanel extends Panel {
|
||||
public DumbPanel() {
|
||||
setLayout(new BorderLayout());
|
||||
add("Center", new Fake("dumbp", Color.blue));
|
||||
}
|
||||
|
||||
public void paint(Graphics g) {
|
||||
Dimension d = getSize();
|
||||
g.setColor(Color.green);
|
||||
g.fillRect(0, 0, d.width, d.height);
|
||||
super.paint(g);
|
||||
}
|
||||
}
|
166
test/jdk/java/awt/Frame/WindowMoveTest.java
Normal file
166
test/jdk/java/awt/Frame/WindowMoveTest.java
Normal file
@ -0,0 +1,166 @@
|
||||
/*
|
||||
* Copyright (c) 1998, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code 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
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.EventQueue;
|
||||
import java.awt.Frame;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.Robot;
|
||||
import java.awt.event.WindowEvent;
|
||||
import java.awt.event.WindowListener;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 4077874
|
||||
* @key headful
|
||||
* @summary Test window position at opening, closing, and closed for consistency
|
||||
*/
|
||||
|
||||
public class WindowMoveTest {
|
||||
|
||||
static WindowMove frame;
|
||||
public static void main(String[] args) throws Exception {
|
||||
Robot robot = new Robot();
|
||||
robot.setAutoDelay(50);
|
||||
robot.setAutoWaitForIdle(true);
|
||||
|
||||
EventQueue.invokeAndWait(() -> frame = new WindowMove());
|
||||
|
||||
robot.waitForIdle();
|
||||
robot.delay(1000);
|
||||
|
||||
EventQueue.invokeAndWait(() ->
|
||||
frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING)));
|
||||
|
||||
if (!WindowMove.latch.await(2, TimeUnit.SECONDS)) {
|
||||
throw new RuntimeException("Test timeout.");
|
||||
}
|
||||
|
||||
if (WindowMove.failMessage != null) {
|
||||
throw new RuntimeException(WindowMove.failMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class WindowMove extends Frame implements WindowListener {
|
||||
static final Rectangle expectedBounds =
|
||||
new Rectangle(100, 100, 300, 300);
|
||||
|
||||
static CountDownLatch latch = new CountDownLatch(1);
|
||||
static String failMessage = null;
|
||||
|
||||
private boolean layoutCheck;
|
||||
private boolean visibleCheck;
|
||||
private boolean openedCheck;
|
||||
private boolean closingCheck;
|
||||
private boolean closedCheck;
|
||||
|
||||
public WindowMove() {
|
||||
super("WindowMove");
|
||||
addWindowListener(this);
|
||||
|
||||
setSize(300, 300);
|
||||
setLocation(100, 100);
|
||||
setBackground(Color.white);
|
||||
|
||||
setLayout(null);
|
||||
if (checkBounds()) {
|
||||
layoutCheck = true;
|
||||
}
|
||||
System.out.println("setLayout bounds: " + getBounds());
|
||||
|
||||
setVisible(true);
|
||||
if (checkBounds()) {
|
||||
visibleCheck = true;
|
||||
}
|
||||
System.out.println("setVisible bounds: " + getBounds());
|
||||
}
|
||||
|
||||
private boolean checkBounds() {
|
||||
return getBounds().equals(expectedBounds);
|
||||
}
|
||||
|
||||
public void checkResult() {
|
||||
if (layoutCheck
|
||||
&& visibleCheck
|
||||
&& openedCheck
|
||||
&& closingCheck
|
||||
&& closedCheck) {
|
||||
System.out.println("Test passed.");
|
||||
} else {
|
||||
failMessage = """
|
||||
Some of the checks failed:
|
||||
layoutCheck %s
|
||||
visibleCheck %s
|
||||
openedCheck %s
|
||||
closingCheck %s
|
||||
closedCheck %s
|
||||
"""
|
||||
.formatted(
|
||||
layoutCheck,
|
||||
visibleCheck,
|
||||
openedCheck,
|
||||
closingCheck,
|
||||
closedCheck
|
||||
);
|
||||
}
|
||||
|
||||
latch.countDown();
|
||||
}
|
||||
|
||||
public void windowClosing(WindowEvent evt) {
|
||||
if (checkBounds()) {
|
||||
closingCheck = true;
|
||||
}
|
||||
System.out.println("Closing bounds: " + getBounds());
|
||||
|
||||
setVisible(false);
|
||||
dispose();
|
||||
}
|
||||
|
||||
public void windowClosed(WindowEvent evt) {
|
||||
if (checkBounds()) {
|
||||
closedCheck = true;
|
||||
}
|
||||
System.out.println("Closed bounds: " + getBounds());
|
||||
|
||||
checkResult();
|
||||
}
|
||||
|
||||
public void windowOpened(WindowEvent evt) {
|
||||
if (checkBounds()) {
|
||||
openedCheck = true;
|
||||
}
|
||||
System.out.println("Opening bounds: " + getBounds());
|
||||
}
|
||||
|
||||
public void windowActivated(WindowEvent evt) {}
|
||||
|
||||
public void windowIconified(WindowEvent evt) {}
|
||||
|
||||
public void windowDeactivated(WindowEvent evt) {}
|
||||
|
||||
public void windowDeiconified(WindowEvent evt) {}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user