Alexandre Julliard : gdi32/tests: Add tests for DC bounds on various device types.

Alexandre Julliard julliard at winehq.org
Tue Apr 10 13:52:32 CDT 2012


Module: wine
Branch: master
Commit: a186a8b170d5f6976148d30307202bb7c62c7070
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=a186a8b170d5f6976148d30307202bb7c62c7070

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Tue Apr 10 13:20:01 2012 +0200

gdi32/tests: Add tests for DC bounds on various device types.

---

 dlls/gdi32/tests/dc.c |   61 ++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 48 insertions(+), 13 deletions(-)

diff --git a/dlls/gdi32/tests/dc.c b/dlls/gdi32/tests/dc.c
index da2c31b..52f0fba 100644
--- a/dlls/gdi32/tests/dc.c
+++ b/dlls/gdi32/tests/dc.c
@@ -345,7 +345,7 @@ static void test_device_caps( HDC hdc, HDC ref_dc, const char *descr )
     unsigned int i;
     WORD ramp[3][256];
     BOOL ret;
-    RECT clip;
+    RECT rect;
     UINT type;
 
     if (GetObjectType( hdc ) == OBJ_METADC)
@@ -360,8 +360,15 @@ static void test_device_caps( HDC hdc, HDC ref_dc, const char *descr )
         ok( !ret, "GetDeviceGammaRamp succeeded on %s\n", descr );
         ok( GetLastError() == ERROR_INVALID_PARAMETER || broken(GetLastError() == 0xdeadbeef), /* nt4 */
             "wrong error %u on %s\n", GetLastError(), descr );
-        type = GetClipBox( hdc, &clip );
+        type = GetClipBox( hdc, &rect );
         ok( type == ERROR, "GetClipBox returned %d on %s\n", type, descr );
+
+        SetBoundsRect( hdc, NULL, DCB_RESET | DCB_ENABLE );
+        SetMapMode( hdc, MM_TEXT );
+        Rectangle( hdc, 2, 2, 5, 5 );
+        type = GetBoundsRect( hdc, &rect, DCB_RESET );
+        todo_wine
+        ok( !type, "GetBoundsRect succeeded on %s\n", descr );
     }
     else
     {
@@ -375,16 +382,35 @@ static void test_device_caps( HDC hdc, HDC ref_dc, const char *descr )
         ok( !ret, "GetDeviceGammaRamp succeeded on %s\n", descr );
         ok( GetLastError() == ERROR_INVALID_PARAMETER || broken(GetLastError() == 0xdeadbeef), /* nt4 */
             "wrong error %u on %s\n", GetLastError(), descr );
-        type = GetClipBox( hdc, &clip );
+        type = GetClipBox( hdc, &rect );
         ok( type == SIMPLEREGION, "GetClipBox returned %d on memdc for %s\n", type, descr );
+
+        SetBoundsRect( hdc, NULL, DCB_RESET | DCB_ENABLE );
+        SetMapMode( hdc, MM_TEXT );
+        Rectangle( hdc, 2, 2, 4, 4 );
+        type = GetBoundsRect( hdc, &rect, DCB_RESET );
+        todo_wine
+        ok( rect.left == 2 && rect.top == 2 && rect.right == 4 && rect.bottom == 4 && type == DCB_SET,
+            "GetBoundsRect returned %d,%d,%d,%d type %x on memdc for %s\n",
+            rect.left, rect.top, rect.right, rect.bottom, type, descr );
     }
 
-    type = GetClipBox( ref_dc, &clip );
+    type = GetClipBox( ref_dc, &rect );
     ok( type == SIMPLEREGION, "GetClipBox returned %d on %s\n", type, descr );
-    ok( clip.left == 0 && clip.top == 0 &&
-        clip.right == GetDeviceCaps( ref_dc, DESKTOPHORZRES ) &&
-        clip.bottom == GetDeviceCaps( ref_dc, DESKTOPVERTRES ),
-        "GetClipBox returned %d,%d,%d,%d on %s\n", clip.left, clip.top, clip.right, clip.bottom, descr );
+    ok( rect.left == 0 && rect.top == 0 &&
+        rect.right == GetDeviceCaps( ref_dc, DESKTOPHORZRES ) &&
+        rect.bottom == GetDeviceCaps( ref_dc, DESKTOPVERTRES ),
+        "GetClipBox returned %d,%d,%d,%d on %s\n", rect.left, rect.top, rect.right, rect.bottom, descr );
+
+    SetBoundsRect( ref_dc, NULL, DCB_RESET | DCB_ACCUMULATE );
+    SetMapMode( ref_dc, MM_TEXT );
+    Rectangle( ref_dc, 3, 3, 5, 5 );
+    type = GetBoundsRect( ref_dc, &rect, DCB_RESET );
+    /* it may or may not work on non-memory DCs */
+    ok( (rect.left == 0 && rect.top == 0 && rect.right == 0 && rect.bottom == 0 && type == DCB_RESET) ||
+        (rect.left == 3 && rect.top == 3 && rect.right == 5 && rect.bottom == 5 && type == DCB_SET),
+        "GetBoundsRect returned %d,%d,%d,%d type %x on %s\n",
+        rect.left, rect.top, rect.right, rect.bottom, type, descr );
 
     if (GetObjectType( hdc ) == OBJ_MEMDC)
     {
@@ -413,11 +439,20 @@ static void test_device_caps( HDC hdc, HDC ref_dc, const char *descr )
         ok( GetLastError() == ERROR_INVALID_PARAMETER || broken(GetLastError() == 0xdeadbeef), /* nt4 */
             "wrong error %u on %s\n", GetLastError(), descr );
 
-        type = GetClipBox( hdc, &clip );
+        type = GetClipBox( hdc, &rect );
         ok( type == SIMPLEREGION, "GetClipBox returned %d on memdc for %s\n", type, descr );
-        ok( clip.left == 0 && clip.top == 0 && clip.right == 16 && clip.bottom == 16,
+        ok( rect.left == 0 && rect.top == 0 && rect.right == 16 && rect.bottom == 16,
             "GetClipBox returned %d,%d,%d,%d on memdc for %s\n",
-            clip.left, clip.top, clip.right, clip.bottom, descr );
+            rect.left, rect.top, rect.right, rect.bottom, descr );
+
+        SetBoundsRect( hdc, NULL, DCB_RESET | DCB_ENABLE );
+        SetMapMode( hdc, MM_TEXT );
+        Rectangle( hdc, 5, 5, 12, 14 );
+        type = GetBoundsRect( hdc, &rect, DCB_RESET );
+        todo_wine
+        ok( rect.left == 5 && rect.top == 5 && rect.right == 12 && rect.bottom == 14 && type == DCB_SET,
+            "GetBoundsRect returned %d,%d,%d,%d type %x on memdc for %s\n",
+            rect.left, rect.top, rect.right, rect.bottom, type, descr );
 
         SelectObject( hdc, old );
         DeleteObject( dib );
@@ -1022,13 +1057,13 @@ static void test_printer_dc(void)
     ret = GetDeviceCaps( display_memdc, TECHNOLOGY );
     ok( ret == DT_RASDISPLAY, "wrong type %u\n", ret );
 
-    test_device_caps( memdc, hdc, "printer dc" );
-
     bmp = CreateBitmap( 100, 100, 1, GetDeviceCaps( hdc, BITSPIXEL ), NULL );
     orig = SelectObject( memdc, bmp );
     ok( orig != NULL, "SelectObject failed\n" );
     ok( BitBlt( hdc, 10, 10, 20, 20, memdc, 0, 0, SRCCOPY ), "BitBlt failed\n" );
 
+    test_device_caps( memdc, hdc, "printer dc" );
+
     ok( !SelectObject( display_memdc, bmp ), "SelectObject succeeded\n" );
     SelectObject( memdc, orig );
     DeleteObject( bmp );




More information about the wine-cvs mailing list