diff --git a/test/jdk/sun/java2d/loops/CopyAreaSpeed.html b/test/jdk/sun/java2d/loops/CopyAreaSpeed.html deleted file mode 100644 index a60ef8caa3c..00000000000 --- a/test/jdk/sun/java2d/loops/CopyAreaSpeed.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - CopyAreaSpeed - - - -

CopyAreaSpeed

-
-
Thanh Nguyen
- - -Last modified: Tue Jan 19 16:18:37 PST 1999 - - - - diff --git a/test/jdk/sun/java2d/loops/CopyAreaSpeed.java b/test/jdk/sun/java2d/loops/CopyAreaSpeed.java index 00d1cff5c38..16fbbfe77ce 100644 --- a/test/jdk/sun/java2d/loops/CopyAreaSpeed.java +++ b/test/jdk/sun/java2d/loops/CopyAreaSpeed.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 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 @@ -20,6 +20,17 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ + +import java.awt.Color; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Rectangle; +import javax.swing.JFrame; +import javax.swing.JOptionPane; + +import java.util.Date; + /* * @test * @bug 4189070 @@ -27,46 +38,54 @@ * copyArea calls to be completed. Because the performance measurement is * relative, this code only provides a benchmark to run with different releases * to compare the outcomes. - * @run applet/manual=done CopyAreaSpeed.html + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual CopyAreaSpeed */ -import java.applet.Applet; -import java.awt.*; -import java.awt.event.*; -import java.util.*; +public class CopyAreaSpeed { + public static void main(String args[]) throws Exception { + String instructions = """ + This test prints out the time it takes for a certain amount + of copyArea calls to be completed. Because the performance + measurement is relative, this code only provides a benchmark + to run with different releases to compare the outcomes. + """; -public class CopyAreaSpeed extends Applet implements Runnable { + PassFailJFrame.builder() + .title("Test Instructions") + .instructions(instructions) + .rows(5) + .columns(35) + .testUI(CopyAreaSpeed::initialize) + .build() + .awaitAndCheck(); + } + + public static JFrame initialize() { + JFrame frame = new JFrame("Copy Area Test"); + frame.add(new CopyAreaSpeedTest()); + frame.setSize(300, 320); + frame.setVisible(true); + return frame; + } +} + +class CopyAreaSpeedTest extends Container implements Runnable { int top = 0; + public static String result; - public void init() { - } - - public CopyAreaSpeed() - { + public CopyAreaSpeedTest() { super(); - String[] instructions = - { - "This test prints out the time it takes for a certain amount ", - "of copyArea calls to be completed. Because the performance ", - "measurement is relative, this code only provides a benchmark ", - "to run with different releases to compare the outcomes." - }; - Sysout.createDialogWithInstructions( instructions ); (new Thread(this)).start(); - Button bt = new Button("Hello"); - bt.setBounds(50, 10, 50, 22); - bt.setVisible(false); - add(bt); } - public void update(Graphics g) - { + public void update(Graphics g) { paint(g); } - public void paint(Graphics g) - { - synchronized(this) { + public void paint(Graphics g) { + synchronized (this) { Rectangle rct = g.getClipBounds(); g.setColor(Color.white); g.fillRect(rct.x, rct.y, rct.width, rct.height); @@ -78,19 +97,18 @@ public class CopyAreaSpeed extends Applet implements Runnable { if (y > rct.y) { int z = y / 20 + top; g.drawString("" + z, 10, y); - } /* endif */ - } // endfor + } + } } } static long millsec(Date s, Date e) { long ts = s.getTime(); long te = e.getTime(); - return te-ts; + return te - ts; } - public void run() - { + public void run() { int count = 1000; int loops = count; Date start; @@ -100,7 +118,7 @@ public class CopyAreaSpeed extends Applet implements Runnable { while (count-- > 0) { Dimension dm = getSize(); if (dm != null && dm.width != 0 && dm.height != 0) { - synchronized(this) { + synchronized (this) { top++; Graphics g = getGraphics(); g.copyArea(0, 20, dm.width, dm.height - 20, 0, -20); @@ -111,158 +129,15 @@ public class CopyAreaSpeed extends Applet implements Runnable { } try { Thread.sleep(1); - } catch(Exception ex) { + } catch (Exception ex) { ex.printStackTrace(); } } end = new Date(); - Sysout.println("copyArea X "+loops+" = "+ millsec(start, end) + " msec"); - } - - public static void main(String args[]) { - Frame frm = new Frame("CopyAreaSpeed"); - frm.add(new CopyAreaSpeed()); - frm.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent ev) { - System.exit(0); - } - }); - frm.setSize(500, 500); - frm.show(); + Graphics g = getGraphics(); + g.setFont(getFont()); + g.setColor(Color.black); + result = "copyArea X " + loops + " = " + millsec(start, end) + " msec"; + JOptionPane.showMessageDialog(null, result); } } -/**************************************************** - Standard Test Machinery - DO NOT modify anything below -- it's a standard - chunk of code whose purpose is to make user - interaction uniform, and thereby make it simpler - to read and understand someone else's test. - ****************************************************/ - -/** - This is part of the standard test machinery. - It creates a dialog (with the instructions), and is the interface - for sending text messages to the user. - To print the instructions, send an array of strings to Sysout.createDialog - WithInstructions method. Put one line of instructions per array entry. - To display a message for the tester to see, simply call Sysout.println - with the string to be displayed. - This mimics System.out.println but works within the test harness as well - as standalone. - */ -class Sysout -{ - private static TestDialog dialog; - - public static void createDialogWithInstructions( String[] instructions ) - { - dialog = new TestDialog( new Frame(), "Instructions" ); - dialog.printInstructions( instructions ); - dialog.show(); - println( "Any messages for the tester will display here." ); - } - - public static void createDialog( ) - { - dialog = new TestDialog( new Frame(), "Instructions" ); - String[] defInstr = { "Instructions will appear here. ", "" } ; - dialog.printInstructions( defInstr ); - dialog.show(); - println( "Any messages for the tester will display here." ); - } - - - public static void printInstructions( String[] instructions ) - { - dialog.printInstructions( instructions ); - } - - - public static void println( String messageIn ) - { - dialog.displayMessage( messageIn ); - } - -}// Sysout class - -/** - This is part of the standard test machinery. It provides a place for the - test instructions to be displayed, and a place for interactive messages - to the user to be displayed. - To have the test instructions displayed, see Sysout. - To have a message to the user be displayed, see Sysout. - Do not call anything in this dialog directly. - */ -class TestDialog extends Dialog -{ - - TextArea instructionsText; - TextArea messageText; - int maxStringLength = 80; - - //DO NOT call this directly, go through Sysout - public TestDialog( Frame frame, String name ) - { - super( frame, name ); - int scrollBoth = TextArea.SCROLLBARS_BOTH; - instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth ); - add( "North", instructionsText ); - - messageText = new TextArea( "", 5, maxStringLength, scrollBoth ); - add("South", messageText); - - pack(); - - show(); - }// TestDialog() - - //DO NOT call this directly, go through Sysout - public void printInstructions( String[] instructions ) - { - //Clear out any current instructions - instructionsText.setText( "" ); - - //Go down array of instruction strings - - String printStr, remainingStr; - for( int i=0; i < instructions.length; i++ ) - { - //chop up each into pieces maxSringLength long - remainingStr = instructions[ i ]; - while( remainingStr.length() > 0 ) - { - //if longer than max then chop off first max chars to print - if( remainingStr.length() >= maxStringLength ) - { - //Try to chop on a word boundary - int posOfSpace = remainingStr. - lastIndexOf( ' ', maxStringLength - 1 ); - - if( posOfSpace <= 0 ) { - posOfSpace = maxStringLength - 1; - } - - printStr = remainingStr.substring( 0, posOfSpace + 1 ); - remainingStr = remainingStr.substring( posOfSpace + 1 ); - } - else //else just print - { - printStr = remainingStr; - remainingStr = ""; - } - - instructionsText.append( printStr + "\n" ); - - }// while - - }// for - - }//printInstructions() - - //DO NOT call this directly, go through Sysout - public void displayMessage( String messageIn ) - { - messageText.append( messageIn + "\n" ); - } - -}// TestDialog class