RFR: 8320676 : Manual printer tests have no Pass/Fail buttons, instructions close set 1 [v6]
Alexey Ivanov
aivanov at openjdk.org
Tue Feb 13 14:36:04 UTC 2024
On Tue, 13 Feb 2024 08:46:19 GMT, Renjith Kannath Pariyangad <rkannathpari at openjdk.org> wrote:
>> Hi Reviewers,
>>
>> Updated manual printer test cases with 'PassFailJFrame', also removed unused variables. Added 'SkippedException' in case of printer missing or not configured.
>>
>> Please review and let me know your suggestions.
>>
>> Regards,
>> Renjith
>
> Renjith Kannath Pariyangad has updated the pull request incrementally with one additional commit since the last revision:
>
> Fixed compiler error
Changes requested by aivanov (Reviewer).
test/jdk/java/awt/print/PageFormat/PageSetupDialog.java line 46:
> 44: * @key printer
> 45: * @summary Page setup dialog settings
> 46: * @library /test/lib /java/awt/regtesthelpers
Suggestion:
* @library /java/awt/regtesthelpers
The `/test/lib` isn't used any more. Please update other files as appropriate.
test/jdk/java/awt/print/PageFormat/PageSetupDialog.java line 81:
> 79: + myPageFormat.getImageableX());
> 80: myImageableRightLabel.setText("Format Right Margin = " + (myPageFormat.getWidth()
> 81: - (myPageFormat.getImageableX() + myPageFormat.getImageableWidth())));
So, you went ahead with updating the formatting… In this case, be consistent:
Suggestion:
myImageableRightLabel.setText("Format Right Margin = "
+ (myPageFormat.getWidth()
- (myPageFormat.getImageableX() + myPageFormat.getImageableWidth())));
Wrap the line after the text label; wrap more if necessary.
test/jdk/java/awt/print/PageFormat/PageSetupDialog.java line 87:
> 85: + myPageFormat.getImageableY());
> 86: myImageableBottomLabel.setText("Format Bottom Margin = " + (myPageFormat.getHeight()
> 87: - (myPageFormat.getImageableY() + myPageFormat.getImageableHeight())));
Suggestion:
myImageableBottomLabel.setText("Format Bottom Margin = "
+ (myPageFormat.getHeight()
- (myPageFormat.getImageableY() + myPageFormat.getImageableHeight())));
test/jdk/java/awt/print/PageFormat/PageSetupDialog.java line 116:
> 114: pgih.setText("Paper Imageable Height = " + p.getImageableHeight());
> 115: pgbm.setText("Paper Bottom Margin = " + (p.getHeight()
> 116: - (p.getImageableY() + p.getImageableHeight())));
Suggestion:
pgrm.setText("Paper Right Margin = "
+ (p.getWidth()
- (p.getImageableX() + p.getImageableWidth())));
pgtm.setText("Paper Top Margin = " + p.getImageableY());
pgih.setText("Paper Imageable Height = " + p.getImageableHeight());
pgbm.setText("Paper Bottom Margin = "
+ (p.getHeight()
- (p.getImageableY() + p.getImageableHeight())));
test/jdk/java/awt/print/PageFormat/PageSetupDialog.java line 177:
> 175: } catch (PrinterException pe) {
> 176: PassFailJFrame.forceFail( "Test Failed");
> 177: pe.printStackTrace();
Suggestion:
pe.printStackTrace();
PassFailJFrame.forceFail("Test failed because of PrinterException");
First, print the stack trace; then fail the test. Otherwise, printing the stack trace may not finish because jtreg will be stopping the test.
I suggest adding some details of why the test fails.
Please update all the cases.
test/jdk/java/awt/print/PrinterJob/Cancel/PrinterJobCancel.java line 51:
> 49: "You must have a printer available to perform this test.\n" +
> 50: "This test silently starts a print job and while the job is\n" +
> 51: "still being printed, cancels the print job\n" +
Not silently: the tester has to click OK / Print button in the displayed dialog.
test/jdk/java/awt/print/PrinterJob/Cancel/PrinterJobCancel.java line 74:
> 72: Thread.sleep(5000);
> 73: pjc.pj.cancel();
> 74: }
Should the test fail if the tester clicks Cancel instead of OK / Print?
test/jdk/java/awt/print/PrinterJob/Cancel/PrinterJobCancel.java line 97:
> 95: PassFailJFrame.forceFail("This is wrong .. we shouldn't be here, " +
> 96: "Looks like a test failure");
> 97: prex.printStackTrace();
Print the stack trace first.
The error message can be more concise.
test/jdk/java/awt/print/PrinterJob/Cancel/PrinterJobCancel.java line 102:
> 100: if (!cancelWorked) {
> 101: PassFailJFrame.forceFail("Looks like the test failed - we didn't get " +
> 102: "the expected PrintAbortException ");
Suggestion:
PassFailJFrame.forceFail("Didn't get the expected PrintAbortException ");
Straight to the point.
test/jdk/java/awt/print/PrinterJob/Cancel/PrinterJobCancel.java line 119:
> 117: g2d.drawString(("This is page" + (pidx + 1)), 60, 80);
> 118: // Need to slow things down a bit .. important not to try this
> 119: // on the event dispathching thread of course.
Suggestion:
// on the event dispatching thread of course.
test/jdk/java/awt/print/PrinterJob/Cancel/PrinterJobCancel.java line 123:
> 121: Thread.sleep(2000);
> 122: } catch (InterruptedException e) {
> 123: }
Suggestion:
} catch (InterruptedException ignored) {
}
To avoid an IDE warning.
test/jdk/java/awt/print/PrinterJob/PrintAllFonts.java line 43:
> 41: public class PrintAllFonts implements Printable {
> 42:
> 43: private static Font[] allFonts;
Suggestion:
private final Font[] allFonts =
GraphicsEnvironment.getLocalGraphicsEnvironment()
.getAllFonts();
I suggest initialising the list of fonts right here. Otherwise, it looks inconsistent. And `allFonts` should be an instance field for the class.
test/jdk/java/awt/print/PrinterJob/PrintAllFonts.java line 44:
> 42:
> 43: private static Font[] allFonts;
> 44: private int lineHeight = 18;
Suggestion:
private static final int lineHeight = 18;
It's a constant. You may want to use the constant naming style `LINE_HEIGHT`. I also suggest moving it above `allFonts`
test/jdk/java/awt/print/PrinterJob/PrintAllFonts.java line 53:
> 51: "\n" +
> 52: "This bug is system dependent and is not always reproducible.\n" +
> 53: "A passing test will have all text printed with correct font style.";
Clarify that the second column should be proper *italics*. I don't know how to explain it better; you can look at the PDFs attached to [JDK-4884389](https://bugs.openjdk.org/browse/JDK-4884389) to understand better what the bug was.
test/jdk/java/awt/print/PrinterJob/PrintAllFonts.java line 91:
> 89: }
> 90:
> 91: int fontsPerPage = (int) pf.getImageableHeight() / lineHeight;
Suggestion:
int fontsPerPage = (int) pf.getImageableHeight() / lineHeight - 1;
Allow for some margin at the end of the page, otherwise most fonts printed at the bottom of a page are clipped.
test/jdk/java/awt/print/PrinterJob/PrintAllFonts.java line 98:
> 96: for (int n = 0; n < fontsPerPage; n++) {
> 97: Font f = allFonts[fontNum].deriveFont(Font.PLAIN, 14);
> 98: Font fi = allFonts[fontNum].deriveFont(Font.ITALIC, 14);
I suggest declaring the font size as a constant at the top of the class.
test/jdk/java/awt/print/PrinterJob/ValidatePage/ValidatePage.java line 71:
> 69: myImageableXLabel.setText("Format Left Margin = " + drnd(myPageFormat.getImageableX()));
> 70: myImageableRightLabel.setText("Format Right Margin = " + drnd(myPageFormat.getWidth()
> 71: - (myPageFormat.getImageableX() + myPageFormat.getImageableWidth())));
Please update these long lines to the same style as in `PageSetupDialog.java`.
test/jdk/java/awt/print/PrinterJob/ValidatePage/ValidatePage.java line 113:
> 111: } else {
> 112: return ds;
> 113: }
Suggestion:
return String.format("%.2f", d);
I believe it conveys the meaning better.
test/jdk/java/awt/print/PrinterJob/ValidatePage/ValidatePage.java line 190:
> 188: PassFailJFrame.forceFail( "Test Failed");
> 189: pe.printStackTrace();
> 190: }
Provide a better description of the failure, at least mention `PrinterException` was caught.
Print the stack trace before failing the test to ensure it's printed.
test/jdk/java/awt/print/PrinterJob/ValidatePage/ValidatePage.java line 218:
> 216: PassFailJFrame.forceFail( "Test Failed");
> 217: nfe.printStackTrace();
> 218: }
This should rather display a warning to the tester so that they're able to correct it and continue with the test.
test/jdk/java/awt/print/PrinterJob/raster/RasterTest.java line 54:
> 52:
> 53: private static final String INSTRUCTIONS =
> 54: "You must have a printer available to perform this test\n" +
I guess the first line can be removed from all the instructions: the test fails if there's no printer.
-------------
PR Review: https://git.openjdk.org/jdk/pull/17607#pullrequestreview-1877534530
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1487577897
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1487564554
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1487564996
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1487566382
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1487572349
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1487588360
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1487601043
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1487604997
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1487606685
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1487609576
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1487610050
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1487905573
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1487901504
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1487913061
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1487916974
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1487924430
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1487921062
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1487946454
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1487949106
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1487951759
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1487960033
More information about the client-libs-dev
mailing list