[Gdiplus 3/5] Tests for region equality

Adam Petaccia adam at tpetaccia.com
Sat Aug 16 22:28:10 CDT 2008


---
 dlls/gdiplus/tests/region.c |  107 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 107 insertions(+), 0 deletions(-)

diff --git a/dlls/gdiplus/tests/region.c b/dlls/gdiplus/tests/region.c
index 6072840..7850dc0 100644
--- a/dlls/gdiplus/tests/region.c
+++ b/dlls/gdiplus/tests/region.c
@@ -463,6 +463,112 @@ static void test_getregiondata(void)
     expect(Ok, status);
 }
 
+static void test_equals(void)
+{
+    GpStatus stat;
+    GpRectF rect;
+    GpRegion *region, *region2;
+    GpPath* path;
+    HDC hdc = GetDC(0);
+    GpGraphics* graphics;
+    BOOL equals;
+
+    stat = GdipCreateFromHDC(hdc, &graphics);
+    expect(Ok, stat);
+
+    /* Test defaults */
+    stat = GdipCreateRegion(&region);
+    expect(Ok, stat);
+    stat = GdipCreateRegion(&region2);
+    expect(Ok, stat);
+todo_wine {
+    stat = GdipIsEqualRegion(region, region2, graphics, &equals);
+    expect(Ok, stat);
+    expect(TRUE, equals);
+}
+
+    /* Test SetEmpty */
+    stat = GdipSetEmpty(region);
+    expect(Ok, stat);
+    stat = GdipSetEmpty(region2);
+    expect(Ok, stat);
+todo_wine {
+    stat = GdipIsEqualRegion(region, region2, graphics, &equals);
+    expect(Ok, stat);
+    expect(TRUE, equals);
+}
+
+    stat = GdipDeleteRegion(region);
+    expect(Ok, stat);
+    stat = GdipDeleteRegion(region2);
+    expect(Ok, stat);
+
+    /* Test two rectangles */
+    rect.X = 4;
+    rect.Y = 56;
+    rect.Width = 63;
+    rect.Height = 42;
+    stat = GdipCreateRegionRect(&rect, &region);
+    expect(Ok, stat);
+    stat = GdipCreateRegionRect(&rect, &region2);
+    expect(Ok, stat);
+todo_wine {
+    stat = GdipIsEqualRegion(region, region2, graphics, &equals);
+    expect(Ok, stat);
+    expect(TRUE, equals);
+}
+
+    stat = GdipDeleteRegion(region2);
+    expect(Ok, stat);
+
+    /* Test for CloneRegion */
+    stat = GdipCloneRegion(region, &region2);
+    expect(Ok, stat);
+todo_wine {
+    stat = GdipIsEqualRegion(region, region2, graphics, &equals);
+    expect(Ok, stat);
+    expect(TRUE, equals);
+}
+
+    stat = GdipDeleteRegion(region2);
+    expect(Ok, stat);
+
+    stat = GdipCreatePath(FillModeAlternate, &path);
+    expect(Ok, stat);
+    stat = GdipAddPathRectangle(path, 4, 56, 63, 42);
+    expect(Ok, stat);
+
+    /* Are equivalent Rectangles and Paths "equal"? (yes, they are) */
+    GdipCreateRegionPath(path, &region2);
+todo_wine {
+    GdipIsEqualRegion(region, region2, graphics, &equals);
+    expect(Ok, stat);
+    expect(TRUE, equals);
+}
+
+    stat = GdipDeleteRegion(region2);
+    expect(Ok, stat);
+    stat = GdipDeletePath(path);
+    expect(Ok, stat);
+
+    /* Test two different paths */
+    stat = GdipCreatePath(FillModeAlternate, &path);
+    expect(Ok, stat);
+    stat = GdipAddPathRectangle(path, 4, 56, 63, 52);
+    expect(Ok, stat);
+    stat = GdipCreateRegionPath(path, &region2);
+    expect(Ok, stat);
+    stat = GdipIsEqualRegion(region, region2, graphics, &equals);
+    expect(Ok, stat);
+    expect(FALSE, equals);
+
+    GdipDeletePath(path);
+    GdipDeleteRegion(region);
+    GdipDeleteRegion(region2);
+    GdipDeleteGraphics(graphics);
+    ReleaseDC(0, hdc);
+}
+
 static void test_regionbounds(void)
 {
     GpStatus stat;
@@ -550,6 +656,7 @@ START_TEST(region)
     GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
 
     test_getregiondata();
+    test_equals();
     test_regionbounds();
 
     GdiplusShutdown(gdiplusToken);
-- 
1.5.4.3




More information about the wine-patches mailing list