add more checks for GetDIBits
authorGed Murphy <gedmurphy@reactos.org>
Tue, 25 Sep 2007 13:20:46 +0000 (13:20 +0000)
committerGed Murphy <gedmurphy@reactos.org>
Tue, 25 Sep 2007 13:20:46 +0000 (13:20 +0000)
svn path=/trunk/; revision=29199

rostests/apitests/gdi32api/tests/GetDIBits.c

index 5af0d31..b778e5a 100644 (file)
@@ -15,6 +15,7 @@ Test_GetDIBits(PTESTINFO pti)
        hBitmap = CreateCompatibleBitmap(hDCScreen, 16, 16);\r
        RTEST(hBitmap != NULL);\r
 \r
+       /* misc */\r
        SetLastError(ERROR_SUCCESS);\r
        RTEST(GetDIBits(0, 0, 0, 0, NULL, NULL, 0) == 0);\r
        RTEST(GetLastError() == ERROR_INVALID_PARAMETER);\r
@@ -31,12 +32,51 @@ Test_GetDIBits(PTESTINFO pti)
        RTEST(GetDIBits((HDC)2345, hBitmap, 0, 15, NULL, &bi, 0) == 0);\r
        RTEST(GetLastError() == ERROR_INVALID_PARAMETER);\r
 \r
+\r
+\r
+       /* null hdc */\r
        SetLastError(ERROR_SUCCESS);\r
-    ZeroMemory(&bi, sizeof(BITMAPINFO));\r
-    bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);\r
-       RTEST(GetDIBits(hDCScreen, hBitmap, 0, 15, NULL, &bi, DIB_RGB_COLORS) > 0);\r
+       ZeroMemory(&bi, sizeof(BITMAPINFO));\r
+       bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);\r
+       RTEST(GetDIBits(NULL, hBitmap, 0, 15, NULL, &bi, DIB_RGB_COLORS) == 0);\r
+       RTEST(GetLastError() == ERROR_INVALID_PARAMETER);\r
+\r
+       /* null bitmap */\r
+       SetLastError(ERROR_SUCCESS);\r
+       ZeroMemory(&bi, sizeof(BITMAPINFO));\r
+       bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);\r
+       RTEST(GetDIBits(hDCScreen, NULL, 0, 15, NULL, &bi, DIB_RGB_COLORS) == 0);\r
+       RTEST(GetLastError() == ERROR_SUCCESS);\r
+\r
+       /* 0 scan lines */\r
+       SetLastError(ERROR_SUCCESS);\r
+       ZeroMemory(&bi, sizeof(BITMAPINFO));\r
+       bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);\r
+       RTEST(GetDIBits(hDCScreen, hBitmap, 0, 0, NULL, &bi, DIB_RGB_COLORS) > 0);\r
+       RTEST(GetLastError() == ERROR_SUCCESS);\r
+\r
+       /* null bitmap info - crashes XP*/\r
+       //SetLastError(ERROR_SUCCESS);\r
+       //RTEST(GetDIBits(hDCScreen, NULL, 0, 15, NULL, NULL, DIB_RGB_COLORS) == 0);\r
+       //RTEST(GetLastError() == ERROR_INVALID_PARAMETER);\r
+\r
+       /* bad bmi colours (uUsage) */\r
+       SetLastError(ERROR_SUCCESS);\r
+       ZeroMemory(&bi, sizeof(BITMAPINFO));\r
+       bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);\r
+       RTEST(GetDIBits(hDCScreen, hBitmap, 0, 15, NULL, &bi, 100) == 0);\r
        RTEST(GetLastError() == ERROR_SUCCESS);\r
+       RTEST(bi.bmiHeader.biWidth == 0);\r
+       RTEST(bi.bmiHeader.biHeight == 0);\r
+       RTEST(bi.bmiHeader.biBitCount == 0);\r
+       RTEST(bi.bmiHeader.biSizeImage == 0);\r
 \r
+       /* basic call */\r
+       SetLastError(ERROR_SUCCESS);\r
+       ZeroMemory(&bi, sizeof(BITMAPINFO));\r
+       bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);\r
+       RTEST(GetDIBits(hDCScreen, hBitmap, 0, 15, NULL, &bi, DIB_RGB_COLORS) > 0);\r
+       RTEST(GetLastError() == ERROR_SUCCESS);\r
        ScreenBpp = GetDeviceCaps(hDCScreen, BITSPIXEL);\r
        RTEST(bi.bmiHeader.biWidth == 16);\r
        RTEST(bi.bmiHeader.biHeight == 16);\r