ddraw: Add a test for IDirectDrawSurface_SetColorKey

Günther Brammer GBrammer at gmx.de
Wed Dec 20 17:06:03 CST 2006


Only tested with wine, unfortunately. Tests for the issue causing Bug
5730. Now also tests GetSurfaceDesc.

diff --git a/dlls/ddraw/tests/dsurface.c b/dlls/ddraw/tests/dsurface.c
index 3d70f82..792a014 100644
--- a/dlls/ddraw/tests/dsurface.c
+++ b/dlls/ddraw/tests/dsurface.c
@@ -167,6 +167,7 @@ static void SrcColorKey32BlitTest(void)
     LPDIRECTDRAWSURFACE lpDst;
     DDSURFACEDESC ddsd;
     DDSURFACEDESC ddsd2;
+    DDCOLORKEY DDColorKey;
     LPDWORD lpData;
     HRESULT rc;
 
@@ -223,6 +224,27 @@ static void SrcColorKey32BlitTest(void)
     rc = IDirectDrawSurface_Unlock(lpDst, NULL);
     ok(rc==DD_OK,"Unlock returned: %x\n",rc);
 
+    /* Also test SetColorKey */
+    IDirectDrawSurface_GetColorKey(lpSrc, DDCKEY_SRCBLT, &DDColorKey);
+    ok(DDColorKey.dwColorSpaceLowValue == 0xFF00FF && DDColorKey.dwColorSpaceHighValue == 0xFF00FF,
+       "GetColorKey does not return the colorkey used at surface creation\n");
+
+    DDColorKey.dwColorSpaceLowValue = 0x00FF00;
+    DDColorKey.dwColorSpaceHighValue = 0x00FF00;
+    IDirectDrawSurface_SetColorKey(lpSrc, DDCKEY_SRCBLT, &DDColorKey);
+
+    DDColorKey.dwColorSpaceLowValue = 0;
+    DDColorKey.dwColorSpaceHighValue = 0;
+    IDirectDrawSurface_GetColorKey(lpSrc, DDCKEY_SRCBLT, &DDColorKey);
+    ok(DDColorKey.dwColorSpaceLowValue == 0x00FF00 && DDColorKey.dwColorSpaceHighValue == 0x00FF00,
+       "GetColorKey does not return the colorkey set with SetColorKey\n");
+
+    ddsd.ddckCKSrcBlt.dwColorSpaceLowValue = 0;
+    ddsd.ddckCKSrcBlt.dwColorSpaceHighValue = 0;
+    IDirectDrawSurface_GetSurfaceDesc(lpSrc, &ddsd);
+    ok(ddsd.ddckCKSrcBlt.dwColorSpaceLowValue == 0x00FF00 && ddsd.ddckCKSrcBlt.dwColorSpaceHighValue == 0x00FF00,
+       "GetSurfaceDesc does not return the colorkey set with SetColorKey\n");
+
     IDirectDrawSurface_Release(lpSrc);
     IDirectDrawSurface_Release(lpDst);
 }





More information about the wine-patches mailing list