Skip to content

Commit a9526c3

Browse files
committed
Simplify GC.drawImage() test with applied transformation
The GC test case for drawing images with a transformation applied has an unnecessarily complex assertion. It uses GC's copyArea operation to extract certain parts of a drawing with different transformations applied and compares them with each other. This makes the test implicitly rely on a proper implementation of copyArea(), which should actually be tested independently. This change adapts the test to just create a reference image without any transformations and the actual image created with transforms applied.
1 parent 6ad4870 commit a9526c3

1 file changed

Lines changed: 14 additions & 15 deletions

File tree

tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_graphics_GC.java

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,14 @@
7272
@SuppressWarnings("restriction")
7373
public class Test_org_eclipse_swt_graphics_GC {
7474

75+
private static final int IMAGE_SIZE = 200;
76+
7577
@BeforeEach
7678
public void setUp() {
7779
display = Display.getDefault();
7880
shell = new Shell(display);
7981
shell.setBounds(0,30,240,290);
80-
image = new Image(display, 200, 200);
82+
image = new Image(display, IMAGE_SIZE, IMAGE_SIZE);
8183
gc = new GC(image);
8284
}
8385

@@ -408,27 +410,24 @@ public void test_drawImageLorg_eclipse_swt_graphics_ImageIIII_withTransform() th
408410
try (InputStream is = getClass().getResourceAsStream("collapseall.svg")) {
409411
image = new Image(Display.getDefault(), is);
410412
}
413+
414+
Image referenceImage = new Image(display, IMAGE_SIZE, IMAGE_SIZE);
415+
GC referenceImageGC = new GC(referenceImage);
416+
referenceImageGC.drawImage(image, 0, 0, 4, 4);
417+
referenceImageGC.drawImage(image, 10, 10, 4, 4);
418+
ImageData referenceImageData = referenceImage.getImageData(DPIUtil.getDeviceZoom());
419+
referenceImage.dispose();
420+
411421
Transform transform = new Transform(display, 2, 0, 0, 2, 0, 0);
412422
gc.setTransform(transform);
413423
gc.drawImage(image, 0, 0, 2, 2);
414-
ImageData resultImageDataWithTransform = getImageDataFromGC(gc, 0, 0, 4, 4);
415-
416424
gc.setTransform(null);
417425
gc.drawImage(image, 10, 10, 4, 4);
418-
ImageData resultImageDataWithoutTransform = getImageDataFromGC(gc, 10, 10, 4, 4);
419-
420-
ImageDataTestHelper.assertImageDataEqual(resultImageDataWithoutTransform, resultImageDataWithoutTransform, resultImageDataWithTransform);
421-
422-
image.dispose();
423426
transform.dispose();
424-
}
427+
ImageData imageData = this.image.getImageData(DPIUtil.getDeviceZoom());
425428

426-
private ImageData getImageDataFromGC(GC gc, int x, int y, int width, int height) {
427-
Image extractionImage = new Image(display, width, height);
428-
gc.copyArea(extractionImage, x, y);
429-
ImageData resultImageData = extractionImage.getImageData();
430-
extractionImage.dispose();
431-
return resultImageData;
429+
ImageDataTestHelper.assertImageDataEqual(referenceImageData, imageData, referenceImageData);
430+
image.dispose();
432431
}
433432

434433
@Test

0 commit comments

Comments
 (0)