On Tue, 3 Sep 2024 09:20:36 GMT, Tejesh R <t...@openjdk.org> wrote: >> Test failed intermittently on particular host. Though analysis pointed out >> to a test frame at left top on that host, I've updated the test for further >> stabilizing it. Two things done here: >> 1. Move the frame to center of the screen rather than left top. >> 2. Added tolerance checks for color comparison - this is based on analysis >> reports where the image didn't had exact black color which is supposed to >> be. So like other test cases, providing some tolerance for comparison. > > Tejesh R has updated the pull request incrementally with one additional > commit since the last revision: > > Checker pattern comparison
With the updated checker pattern - The test condition is changed to `checkmarkFound = true` which may not be ideal condition to start with. - Are specific pixels being compared? I think it is easier to loop through the entire image and keep track of number of pixels matching the condition compareColor(pixelColor). I was suggesting something like the following. A counter var - `pixelCounter` to keep track of no. of pixels and when 5-6 pixels matches the criteria exit out of the loop. --- a/test/jdk/java/awt/Checkbox/CheckboxCheckerScalingTest.java +++ b/test/jdk/java/awt/Checkbox/CheckboxCheckerScalingTest.java @@ -48,6 +48,8 @@ public class CheckboxCheckerScalingTest { private static Checkbox checkbox; private static BufferedImage imageAfterChecked; private static volatile boolean checkmarkFound = false; + private static final int TOLERANCE = 5; + private static int pixelCounter = 0; public static void main(String[] args) throws Exception { System.setProperty("sun.java2d.uiScale", "2"); @@ -58,6 +60,7 @@ public static void main(String[] args) throws Exception { checkbox = new Checkbox("one"); checkbox.setState(true); frame.add(checkbox); frame.setLocationRelativeTo(null); frame.pack(); frame.setVisible(true); }); @@ -72,9 +75,14 @@ public static void main(String[] args) throws Exception { check: { for (int i = 0; i < imageAfterChecked.getHeight(); i++) { for (int j = 0; j < imageAfterChecked.getWidth(); j++) { - if (Color.black.getRGB() == imageAfterChecked.getRGB(i, j)) { - checkmarkFound = true; - break check; + Color pixelColor = new Color(imageAfterChecked.getRGB(i, j)); + if (compareColor(pixelColor)) { + System.out.println(pixelColor); + pixelCounter++; + if (pixelCounter >= 5) { + checkmarkFound = true; + break check; + } } } } ------------- PR Comment: https://git.openjdk.org/jdk/pull/20723#issuecomment-2327652353