From bea9acc55a7b0463a1b0b4dcb557f8ea17d8fe8c Mon Sep 17 00:00:00 2001 From: Tejesh R <tr@openjdk.org> Date: Wed, 10 Apr 2024 07:11:02 +0000 Subject: [PATCH] 8328482: Convert and Open source few manual applet test to main based Reviewed-by: abhiscxk, honkar, prr --- test/jdk/ProblemList.txt | 1 + .../java/awt/Frame/FrameMaximizedTest.java | 62 ++++ .../jdk/java/awt/Frame/FrameMinimizeTest.java | 59 ++++ .../awt/Frame/MegaIconTest/MegaIconTest.java | 273 ++++++++++++++++++ .../java/awt/Frame/MegaIconTest/dukeWave.gif | Bin 0 -> 1661 bytes .../java/awt/Frame/MegaIconTest/duke_404.gif | Bin 0 -> 5529 bytes .../jdk/java/awt/Frame/MegaIconTest/fight.gif | Bin 0 -> 3737 bytes .../jdk/java/awt/Frame/SizeMinimizedTest.java | 140 +++++++++ 8 files changed, 535 insertions(+) create mode 100644 test/jdk/java/awt/Frame/FrameMaximizedTest.java create mode 100644 test/jdk/java/awt/Frame/FrameMinimizeTest.java create mode 100644 test/jdk/java/awt/Frame/MegaIconTest/MegaIconTest.java create mode 100644 test/jdk/java/awt/Frame/MegaIconTest/dukeWave.gif create mode 100644 test/jdk/java/awt/Frame/MegaIconTest/duke_404.gif create mode 100644 test/jdk/java/awt/Frame/MegaIconTest/fight.gif create mode 100644 test/jdk/java/awt/Frame/SizeMinimizedTest.java diff --git a/test/jdk/ProblemList.txt b/test/jdk/ProblemList.txt index 8344d2a977e..4ffc4bde90c 100644 --- a/test/jdk/ProblemList.txt +++ b/test/jdk/ProblemList.txt @@ -797,3 +797,4 @@ java/awt/event/MouseEvent/SpuriousExitEnter/SpuriousExitEnter.java 8254841 macos java/awt/Focus/AppletInitialFocusTest/AppletInitialFocusTest1.java 8256289 windows-x64 java/awt/FullScreen/TranslucentWindow/TranslucentWindow.java 8258103 linux-all java/awt/Focus/FrameMinimizeTest/FrameMinimizeTest.java 8016266 linux-x64 +java/awt/Frame/SizeMinimizedTest.java 8305915 linux-x64 diff --git a/test/jdk/java/awt/Frame/FrameMaximizedTest.java b/test/jdk/java/awt/Frame/FrameMaximizedTest.java new file mode 100644 index 00000000000..368132937fb --- /dev/null +++ b/test/jdk/java/awt/Frame/FrameMaximizedTest.java @@ -0,0 +1,62 @@ +/* + * Copyright (c) 1999, 2024, 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.Frame; +import java.awt.Label; + +/* + * @test + * @bug 4106068 + * @summary Test to verify maximized window is not too big + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual FrameMaximizedTest + */ + +public class FrameMaximizedTest { + public static void main (String[] args) throws Exception { + String INSTRUCTIONS = """ + Maximize the frame window. Check that the right and bottom edges of the + window are not off the edge of the screen. If they are not, the test + is successful and the bug is fixed. + """; + + PassFailJFrame.builder() + .title("Test Instructions") + .instructions(INSTRUCTIONS) + .rows(4) + .columns(40) + .testUI(new TestFrame()) + .build() + .awaitAndCheck(); + } +} + +class TestFrame extends Frame { + public TestFrame() { + setTitle("FrameMaximizedTest"); + setSize(500, 300); + add("North", new Label("Maximize me and check if my " + + "bottom and right edge are on screen.")); + } +} diff --git a/test/jdk/java/awt/Frame/FrameMinimizeTest.java b/test/jdk/java/awt/Frame/FrameMinimizeTest.java new file mode 100644 index 00000000000..cd3459a7841 --- /dev/null +++ b/test/jdk/java/awt/Frame/FrameMinimizeTest.java @@ -0,0 +1,59 @@ +/* + * Copyright (c) 1999, 2024, 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.Frame; + +/* + * @test + * @bug 4172782 + * @summary Test if non-resizable frame is minimizable + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual FrameMinimizeTest + */ + +public class FrameMinimizeTest { + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + When the blank FrameMinimizeTest frame is shown, verify that + 1. It is not resizable; + 2. It is minimizable. + """; + + PassFailJFrame.builder() + .title("Test Instructions") + .instructions(INSTRUCTIONS) + .rows(4) + .columns(35) + .testUI(FrameMinimizeTest::initialize) + .build() + .awaitAndCheck(); + } + + public static Frame initialize() { + Frame f = new Frame("FrameMinimizeTest"); + f.setSize(200, 200); + f.setResizable(false); + return f; + } +} diff --git a/test/jdk/java/awt/Frame/MegaIconTest/MegaIconTest.java b/test/jdk/java/awt/Frame/MegaIconTest/MegaIconTest.java new file mode 100644 index 00000000000..3132d49df56 --- /dev/null +++ b/test/jdk/java/awt/Frame/MegaIconTest/MegaIconTest.java @@ -0,0 +1,273 @@ +/* + * Copyright (c) 1999, 2024, 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.Button; +import java.awt.Canvas; +import java.awt.Color; +import java.awt.Dialog; +import java.awt.Dimension; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.GridLayout; +import java.awt.Image; +import java.awt.Label; +import java.awt.MediaTracker; +import java.awt.Panel; +import java.awt.Toolkit; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.awt.image.ImageProducer; +import java.net.URL; + +/* + * @test + * @bug 4175560 + * @summary Test use of user-defined icons + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual MegaIconTest + */ + +public class MegaIconTest { + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + Each of the buttons in the main window represents a test + of certain icon functionality - background transparency/opacity + of the icon, scaling etc. + Clicking on each button brings up a window displaying the graphic + that should appear in the corresponding icon. + Click on each button, minimize the resulting window, and check that + the icon is displayed as the test name indicates. + On Win32, icons should also be displayed correctly in the title bar. + If all the test pass, then this test passes, else fail. + """; + + PassFailJFrame.builder() + .title("Test Instructions") + .instructions(INSTRUCTIONS) + .rows(10) + .columns(35) + .testUI(MegaIconTest::initialize) + .build() + .awaitAndCheck(); + } + + public static Frame initialize() { + //Create the iconTestFrames and add to IconTestButtons + IconTestButtons itb = new IconTestButtons(new IconTestFrame[]{ + new IconTestFrame("Opaque, Scaled Icon Test", + "duke_404.gif"), + + new IconTestFrame("Transparent Icon", + "dukeWave.gif"), + + new IconTestFrameBG("Transparent, Scaled Icon with bg", + "fight.gif", Color.red), + + new IconTestFrameDlg("Transparent icon w/ Dialog", + "dukeWave.gif") + }); + itb.pack(); + return itb; + } +} + +class IconTestButtons extends Frame { + public IconTestButtons(IconTestFrame[] iconTests) { + IconTestFrame tempTest; + Button newBtn; + Panel newPnl; + DoneLabel newLbl; + + setTitle("MegaIconTest"); + + setLayout(new GridLayout(iconTests.length, 1)); + + //For each icon test frame + //Get name, add button with name and action to + //display the window, and add label "done" after + + for (int i = 0; i < iconTests.length; i++) { + tempTest = iconTests[i]; + newBtn = new Button(tempTest.getTestName()); + newLbl = new DoneLabel(); + newBtn.addActionListener(new IconTestActionListener(tempTest, + newLbl)); + newPnl = new Panel(); + newPnl.add(newBtn); + newPnl.add(newLbl); + add(newPnl); + } + } + + protected class DoneLabel extends Label { + public DoneLabel() { + super("Done"); + setVisible(false); + } + } + + protected class IconTestActionListener implements ActionListener { + IconTestFrame f; + DoneLabel l; + + public IconTestActionListener(IconTestFrame frame, DoneLabel label) { + this.f = frame; + this.l = label; + } + + public void actionPerformed(ActionEvent e) { + f.pack(); + f.setVisible(true); + l.setVisible(true); + IconTestButtons.this.pack(); + } + } +} + +class IconTestFrame extends Frame { + private String testName; + int width, height; + Image iconImage; + MediaTracker tracker; + + public IconTestFrame(String testName, String iconFileName) { + super(testName); + this.testName = testName; + tracker = new MediaTracker(this); + + //Set icon image + URL url = MegaIconTest.class.getResource(iconFileName); + Toolkit tk = Toolkit.getDefaultToolkit(); + if (tk == null) { + System.out.println("Toolkit is null!"); + } + if (url == null) { + System.out.println("Can't load icon is null!"); + return; + } + try { + iconImage = tk.createImage((ImageProducer) url.getContent()); + } catch (java.io.IOException e) { + System.out.println("Unable to load icon image from url: " + url); + } + tracker.addImage(iconImage, 0); + try { + tracker.waitForAll(); + } catch (java.lang.InterruptedException e) { + System.err.println(e); + } + width = iconImage.getWidth(this); + height = iconImage.getHeight(this); + setIconImage(iconImage); + + addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + setVisible(false); + } + }); + + setLayout(new BorderLayout()); + setBackground(Color.YELLOW); + + //Add the icon graphic and instructions to the Frame + add(new IconCanvas(), "Center"); + pack(); + } + + class IconCanvas extends Canvas { + public void paint(Graphics g) { + if (IconTestFrame.this.iconImage == null) { + throw new NullPointerException(); + } + g.drawImage(IconTestFrame.this.iconImage, 0, 0, this); + } + + public Dimension getPreferredSize() { + return new Dimension(IconTestFrame.this.width, + IconTestFrame.this.height); + } + + public Dimension getMinimumSize() { + return getPreferredSize(); + } + + public Dimension getMaximumSize() { + return getPreferredSize(); + } + } + + public String getTestName() { + return testName; + } +} + +class IconTestFrameBG extends IconTestFrame { + public IconTestFrameBG(String testName, String iconFileName, Color bg) { + super(testName, iconFileName); + setBackground(bg); + Panel p = new Panel(); + p.setLayout(new GridLayout(3, 1)); + p.add(new Label("The background of this window has been set.")); + p.add(new Label("Unless the default icon background is the same color,")); + p.add(new Label("the icon background should NOT be this color.")); + add(p, "North"); + pack(); + } +} + +class IconTestFrameDlg extends IconTestFrame implements ActionListener { + Dialog dlg; + Button dlgBtn; + + public IconTestFrameDlg(String testName, String iconFilename) { + super(testName, iconFilename); + Panel p = new Panel(); + p.setLayout(new GridLayout(4, 1)); + p.add(new Label("Click on the button below to display a child dialog.")); + p.add(new Label("On Win32, the Dialog's titlebar icon should match")); + p.add(new Label("the titlebar icon of this window.")); + p.add(new Label("Minimizing this Frame should yield only one icon.")); + add(p, "North"); + + dlg = new Dialog(this); + dlg.setSize(200, 200); + dlg.add(new Label("Dialog stuff.")); + dlg.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + setVisible(false); + } + }); + + dlgBtn = new Button("Display Dialog"); + dlgBtn.addActionListener(this); + add(dlgBtn, "South"); + } + + public void actionPerformed(ActionEvent e) { + dlg.setVisible(true); + } +} diff --git a/test/jdk/java/awt/Frame/MegaIconTest/dukeWave.gif b/test/jdk/java/awt/Frame/MegaIconTest/dukeWave.gif new file mode 100644 index 0000000000000000000000000000000000000000..52ada7979ef573053a282c44b707759e7e47d24c GIT binary patch literal 1661 zcmdUu{ZA8j9LK*!S`HtN0($b`I16ZbQ0v1&b#Cnm3SEs_(CPUETy?`Uj(F(As#Cau zO1BieD3LC!&YK$Pq|;MzIjm4l5xt-x)fv<HG*Q&ms7a?Tc3+tP#J)d#fB4)t`Mh7R zcWz$6+#G$00T@6CfWpEz;cys15EMl*48w6;tJUgsI=x;`5QNEOvREu6Nm3L=(=@{{ zHk-|Ew{sllbUNK`w;%|zEc^ZbKp@c9*B1;1L!pqH=WPsw0DuC31E2-K1b_tq5&#MS z8UO}>P$($N5{|>2DDURof?JeC&dE7>Cu3u1hNfuBLRv_QBus>!(ChR%T#I8khGHm! zA^-s>j<KAbu$V}i`mi`0mSC8{D1s>RgZVyW<$2a_hv|diFvPI2EaVX+39|8m0P!Fv zq-8k{;z4rA4=q^WoFt(Uy~zaCKtWIwKoE|HX=Nwx#&B&g1ef|DfSq&FjE$lhlZ6yS z3GNt_5tbxb5JY}3jVMY`p3}**tR1F+Mr}40s{PL~lntdq>rg)|!DJ#~8?X~tjwJd; zLDK68zZ`J$0)&<XnPZ)jTlNb9nfC|#f}vnYhEZgHU!YGEL>prZ$N|wU%A!n>l#RAA z6hoV6(JqLr+fFccl(1uj4bj;VJqd6Y(P03w0WAx(7JxAW6RjSgB*1I{#{ohCj0HFi zFzvuIOh0hLuW*jg0AXMy0C>G#c>j+M{w7iZKqtr=$UN{*0OUQWi%!aKab2uNVl!4; zZaLIZi)u{He9z&|I&8%FdWYxd_C(+A=od@tyM}9{zI}~!H5~D!WbKJR5;N^#bsgDK zlp4!;y%{sMuZ=ryEj@TpxmR(#)vH-hx+s07k&HzPlCqT3>vN8-H7kZ~^i>qcn6G`N zzP4p$w>m9PyXsQzimuJixxMplKB`=LHeHifHOar`Zp&oFXQ}U0YxBR!jyMqU_S024 zzfATha!RdP)EjSm=Kf`B@87*AqDJAfCp=S=uRE{kD!XpapqETqfj>`KpR~_mm^5S4 z7uNaBR}+hVEp6SHm+8;yjo3T-bw{NlMK$7Wob|z@1ukNY=RNx1dd+UWsAb8F+D%Uv zcULWMIB&*kZ;hEqn_H{m>%#8k=f0~zj63WfuO`aT!YgS<k41D>UqGn#DdQ0D&Mj@x z)1|Rd>Aj0Hn|of~&F*j*s-nlEukzCsX5nURT}9)<INz<q-PK~`w00yN6yj-(k*HyW z?_r4{aq4)kINRfU`FXU)QBF+x2%Td}OF*=_Yu2RhL9s~0+nsfxv6z_B=1Lzr@gSmo zsBWz+Ls6CaPa~32RQbomA1WI7rg<;e8mF?}lMCWg539!R&c9!fdT2dS+q9uwn{+55 zrkZtZGE6Pd{8ZlFrQ$5-jU($yhTc)~XZqKH_vXuNS@RI<i+(pTu0%z$Ta7?*<o?zZ zBZ#yD<;c$5lASH*q>L{|M#S#~r_LrUvNo(7o-0N62KIKO6eKJ)j~ZR^u7CK(E^Ka8 zXO_;;@@W5+s^;Xjd;1j8zNZ<g*>~!#*br1x-R9n~5S&cj8lyfNd0<`jw&eExL<fJP z(YhwXWzg~SduFX(HFUkXEXMcvI{uX}KjpWkglFDMyLPa+`b6fiu{E1tdAP5y5jT2z zxA|tLG%I7SI(A0H{PSd8+`elQ=3Y5j3U(>*?=LFp%!M!3MWVl3mAc^vZu>_19G-bb zSMu%tVVdM)N?j7yA5mVD%BeKy>7jF0j!I5foN1cl+IEI8p|Qr}=F{6<_Y??jRQOih z>rsDFWOx#{?DFF|KRW83I^xE0iC)#rySOHSLW;dh)Rl`2t=Wyc%JN*vJwxPEiJjnS SYv`|cL2uOLZ9#<s%=#CGac;)| literal 0 HcmV?d00001 diff --git a/test/jdk/java/awt/Frame/MegaIconTest/duke_404.gif b/test/jdk/java/awt/Frame/MegaIconTest/duke_404.gif new file mode 100644 index 0000000000000000000000000000000000000000..4958e0d0dfa8c059b704e11fe173f23091cfe8fd GIT binary patch literal 5529 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 literal 0 HcmV?d00001 diff --git a/test/jdk/java/awt/Frame/MegaIconTest/fight.gif b/test/jdk/java/awt/Frame/MegaIconTest/fight.gif new file mode 100644 index 0000000000000000000000000000000000000000..6be1b4972d0de57286ce645cee8f01633e9686a6 GIT binary patch literal 3737 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 U)zYBCAN*CnNe(bc7!0udzewrFYybcN literal 0 HcmV?d00001 diff --git a/test/jdk/java/awt/Frame/SizeMinimizedTest.java b/test/jdk/java/awt/Frame/SizeMinimizedTest.java new file mode 100644 index 00000000000..2520cf42892 --- /dev/null +++ b/test/jdk/java/awt/Frame/SizeMinimizedTest.java @@ -0,0 +1,140 @@ +/* + * Copyright (c) 1999, 2024, 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.Dimension; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.Point; +import java.awt.Robot; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; + +/* + * @test + * @key headful + * @bug 4065534 + * @summary Frame.setSize() doesn't change size if window is in an iconified state + * @run main SizeMinimizedTest + */ + +public class SizeMinimizedTest { + private static Frame frame; + private static final int INITIAL_SIZE = 100; + private static final int INITIAL_X = 150; + private static final int INITIAL_Y = 50; + private static final int RESET_SIZE = 200; + private static final int OFFSET = 10; + private static int iterationCnt = 0; + private static Dimension expectedSize; + private static Dimension frameSize; + private static Point expectedLoc; + private static Point frameLoc; + + public static void main(String[] args) throws Exception { + Robot robot = new Robot(); + try { + EventQueue.invokeAndWait(() -> { + createUI(); + }); + robot.waitForIdle(); + robot.delay(1000); + + EventQueue.invokeAndWait(() -> { + frame.setState(Frame.ICONIFIED); + }); + robot.waitForIdle(); + robot.delay(100); + + EventQueue.invokeAndWait(() -> { + frame.setSize(RESET_SIZE, RESET_SIZE); + }); + robot.waitForIdle(); + robot.delay(100); + + for (int i = 0; i < 5; i++) { + EventQueue.invokeAndWait(() -> { + Point pt = frame.getLocation(); + frame.setLocation(pt.x + OFFSET, pt.y); + }); + iterationCnt++; + robot.waitForIdle(); + robot.delay(100); + } + EventQueue.invokeAndWait(() -> { + frame.setState(Frame.NORMAL); + }); + robot.waitForIdle(); + robot.delay(100); + + System.out.println("Test Passed!"); + } finally { + EventQueue.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } + + public static void createUI() { + frame = new Frame("Frame size test"); + frame.setSize(INITIAL_SIZE, INITIAL_SIZE); + frame.setLocation(INITIAL_X, INITIAL_Y); + + frame.addWindowListener(new WindowAdapter() { + @Override + public void windowOpened(WindowEvent e) { + System.out.println("Initial Frame Size: " + frame.getSize()); + System.out.println("Initial Frame Location: " + + frame.getLocationOnScreen()); + } + }); + + frame.addWindowStateListener(new WindowAdapter() { + @Override + public void windowStateChanged(WindowEvent e) { + if (e.getNewState() == Frame.NORMAL) { + System.out.println("Frame Size: " + frame.getSize()); + System.out.println("Frame Location: " + + frame.getLocationOnScreen()); + expectedSize = new Dimension(RESET_SIZE, RESET_SIZE); + frameSize = frame.getSize(); + + if (!expectedSize.equals(frameSize)) { + throw new RuntimeException("Test Failed due to size mismatch."); + } + + expectedLoc = new Point(INITIAL_X + OFFSET * iterationCnt, + INITIAL_Y); + frameLoc = frame.getLocationOnScreen(); + + if (!expectedLoc.equals(frameLoc)) { + throw new RuntimeException("Test Failed due to " + + "location mismatch."); + } + } + } + }); + frame.setVisible(true); + } +}