RFR: 8320676 : Manual printer tests have no Pass/Fail buttons, instructions close set 1 [v11]
    Alexey Ivanov 
    aivanov at openjdk.org
       
    Tue Mar  5 12:47:54 UTC 2024
    
    
  
On Mon, 4 Mar 2024 06:04:07 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:
> 
>   Suggesions incorporated
Changes requested by aivanov (Reviewer).
test/jdk/java/awt/print/PageFormat/PageSetupDialog.java line 239:
> 237:         PassFailJFrame.builder()
> 238:                 .instructions(INSTRUCTIONS)
> 239:                 .testUI(PageSetupDialog::new)
Suggestion:
        PassFailJFrame.builder()
                .instructions(INSTRUCTIONS)
                .testTimeOut(10)
                .testUI(PageSetupDialog::new)
Given the number of cases to go through, I suggest increasing the timeout to 10 minutes at least.
test/jdk/java/awt/print/PrinterJob/Cancel/PrinterJobCancel.java line 50:
> 48:             "progress automatically cancels the print job.\n" +
> 49:             "You should see a message on System.out that the job\n" +
> 50:             "was properly cancelled.";
Suggestion:
            "Test that print job cancellation works.\n\n" +
            "This test starts after clicking OK / Print button.
            "While the print job is in progress, the test automatically cancels it.\n" +
            "The test will complete automatically.";
test/jdk/java/awt/print/PrinterJob/Cancel/PrinterJobCancel.java line 69:
> 67:             pjc.pj.cancel();
> 68:         }
> 69:         else {
Suggestion:
        } else {
Use Java style.
test/jdk/java/awt/print/PrinterJob/Cancel/PrinterJobCancel.java line 70:
> 68:         }
> 69:         else {
> 70:             PassFailJFrame.forceFail("User cancelled");
Be more specific?
Suggestion:
            PassFailJFrame.forceFail("User cancelled printing");
test/jdk/java/awt/print/PrinterJob/Cancel/PrinterJobCancel.java line 93:
> 91:             prex.printStackTrace();
> 92:             PassFailJFrame.forceFail("This is wrong .. we shouldn't be here, " +
> 93:                                      "Looks like a test failure");
Suggestion:
            PassFailJFrame.forceFail("Unexpected PrinterException caught: " + prex.getMessage());
test/jdk/java/awt/print/PrinterJob/PrintAllFonts.java line 45:
> 43:     private static final int FONT_SIZE = 14;
> 44:     private final Font[] allFonts =
> 45:             GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
I suggest adding blank lines to visually separate fields / constants with different purpose.
Suggestion:
    private static final int LINE_HEIGHT = 18;
    private static final int FONT_SIZE = 14;
    private final Font[] allFonts =
            GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
test/jdk/java/awt/print/PrinterJob/PrintAllFonts.java line 45:
> 43:     boolean done = false;
> 44:     int thisPage = 0;
> 45: 
This blank was actually good, it separated the instance fields from the instructions constant.
test/jdk/java/awt/print/PrinterJob/PrintAllFonts.java line 61:
> 59:         PassFailJFrame passFailJFrame = new PassFailJFrame.Builder()
> 60:                 .instructions(INSTRUCTIONS)
> 61:                 .rows((int) INSTRUCTIONS.lines().count() + 1)
Suggestion:
                .instructions(INSTRUCTIONS)
                .testTimeOut(10)
                .rows((int) INSTRUCTIONS.lines().count() + 1)
The list of fonts could be long, and the tester may need to go to fetch the printouts from a printer.
test/jdk/java/awt/print/PrinterJob/PrintAllFonts.java line 69:
> 67:         if (pj.printDialog()) {
> 68:             pj.print();
> 69:         }
Fail the test if the user clicks Cancel in the print dialog?
test/jdk/java/awt/print/PrinterJob/ValidatePage/ValidatePage.java line 214:
> 212:                 JOptionPane.showMessageDialog(null,
> 213:                         "NumberFormatException occured", "Error",
> 214:                         JOptionPane.ERROR_MESSAGE);
Suggestion:
                JOptionPane.showMessageDialog(ValidatePage.this,
                        "NumberFormatException occurred", "Error",
                        JOptionPane.ERROR_MESSAGE);
You may provide more information to the user, at the very least the message from the exception itself. Add a comment that the tester should correct the error and try again.
test/jdk/java/awt/print/PrinterJob/ValidatePage/ValidatePage.java line 233:
> 231:                 "needed to accomodate the imageable area.\n \n \n" +
> 232:                 "To test 6229507, put the minimum margins (all 0s) in Page Setup dialog.\n" +
> 233:                 "Compare Imageable width, height, and margins of portrait against landscape.");
Suggestion:
                "When validating a page, the process is 1st to find the closest matching\n" +
                "paper size, next to make sure the requested imageable area fits within\n" +
                "the printer's imageable area for that paper size. Finally the top and\n" +
                "left margins will be shrunk if they are too great for the adjusted\n" +
                "imageable area to fit at that position. They will shrink by the minimum\n" +
                "needed to accomodate the imageable area.\n\n\n" +
                "To test 6229507, put the minimum margins (all 0s) in Page Setup dialog.\n" +
                "Compare Imageable width, height, and margins of portrait against landscape.");
The spaces at the end of lines are redundant.
test/jdk/java/awt/print/PrinterJob/ValidatePage/ValidatePage.java line 301:
> 299:         PassFailJFrame.builder()
> 300:                 .instructions(INSTRUCTIONS)
> 301:                 .testUI(ValidatePage::new)
Suggestion:
                .instructions(INSTRUCTIONS)
                .testTimeOut(15)
                .testUI(ValidatePage::new)
The test requires much interaction, so the timeout should be increased accordingly.
test/jdk/java/awt/print/PrinterJob/raster/RasterTest.java line 92:
> 90:         PrinterJob pj = PrinterJob.getPrinterJob();
> 91: 
> 92:         if (pj != null && pj.printDialog()) {
Suggestion:
        if (pj.printDialog()) {
The contract of [`PrinterJob.getPrinterJob`](https://docs.oracle.com/en/java/javase/21/docs/api/java.desktop/java/awt/print/PrinterJob.html#getPrinterJob()) doesn't allow returning `null`, so the null-check can be removed, which will resolve a warning from IDE.
test/jdk/java/awt/print/PrinterJob/raster/RasterTest.java line 105:
> 103:     private static class RasterCanvas extends Canvas implements Printable {
> 104: 
> 105:         public int print(Graphics g, PageFormat pgFmt, int pgIndex) {
Suggestion:
        @Override
        public int print(Graphics g, PageFormat pgFmt, int pgIndex) {
test/jdk/java/awt/print/PrinterJob/raster/RasterTest.java line 118:
> 116:         }
> 117: 
> 118:         public void paint(Graphics g) {
Suggestion:
        @Override
        public void paint(Graphics g) {
test/jdk/java/awt/print/PrinterJob/raster/RasterTest.java line 125:
> 123:             doPaint(g);
> 124:         }
> 125: 
Suggestion:
The `paintComponent` can be removed; `Canvas` doesn't have it, only Swing components extending `JComponent` have `paintComponent` method.
test/jdk/java/awt/print/PrinterJob/raster/RasterTest.java line 126:
> 124:         }
> 125: 
> 126:         public void doPaint(Graphics g) {
Suggestion:
        private void doPaint(Graphics g) {
Should be `private`.
test/jdk/java/awt/print/PrinterJob/raster/RasterTest.java line 150:
> 148:         }
> 149: 
> 150:         public Dimension getPreferredSize() {
Suggestion:
        @Override
        public Dimension getPreferredSize() {
Let's add `@Override` annotations for clarity when a method is overridden or an interface method is implemented.
-------------
PR Review: https://git.openjdk.org/jdk/pull/17607#pullrequestreview-1916685779
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1512702925
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1512710224
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1512705603
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1512712351
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1512714468
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1512718756
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1512719757
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1512742727
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1512739665
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1512749442
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1512750500
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1512754795
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1512761318
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1512768938
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1512768757
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1512766713
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1512765313
PR Review Comment: https://git.openjdk.org/jdk/pull/17607#discussion_r1512767988
    
    
More information about the client-libs-dev
mailing list