Author: tkreuzer
Date: Thu May 17 18:51:47 2012
New Revision: 56605

URL: http://svn.reactos.org/svn/reactos?rev=56605&view=rev
Log:
[GDI32_APITEST]
More tests for CreateBitmap by Victor Martinez

Modified:
    trunk/rostests/apitests/gdi32/CreateBitmap.c

Modified: trunk/rostests/apitests/gdi32/CreateBitmap.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/gdi32/CreateBitmap.c?rev=56605&r1=56604&r2=56605&view=diff
==============================================================================
--- trunk/rostests/apitests/gdi32/CreateBitmap.c [iso-8859-1] (original)
+++ trunk/rostests/apitests/gdi32/CreateBitmap.c [iso-8859-1] Thu May 17 
18:51:47 2012
@@ -59,6 +59,7 @@
     hbmp = CreateBitmap(0x7FFFFFF, 1, 1, 1, NULL);
     ok(hbmp != 0, "\n");
     DeleteObject(hbmp);
+
     SetLastError(0);
     hbmp = CreateBitmap(0x8000000, 1, 1, 1, NULL);
     ok(hbmp == 0, "\n");
@@ -68,6 +69,7 @@
     hbmp = CreateBitmap(1, 0x1FFFFF00, 1, 1, NULL);
     //ok(hbmp != 0, "\n"); // fails on windows 2003
     DeleteObject(hbmp);
+
     SetLastError(0);
     hbmp = CreateBitmap(1, 0x1FFFFFFF, 1, 1, NULL);
     ok(hbmp == 0, "\n");
@@ -77,6 +79,7 @@
     hbmp = CreateBitmap(0x20000, 0x1FFFF, 1, 1, NULL);
     //ok(hbmp != 0, "\n"); // fails on windows 2003
     DeleteObject(hbmp);
+
     SetLastError(0);
     hbmp = CreateBitmap(0x20000, 0x20000, 1, 1, NULL);
     ok(hbmp == 0, "\n");
@@ -94,41 +97,72 @@
 {
     HBITMAP hbmp;
     BITMAP bitmap;
-    int result;
+    ULONG cjWidthBytes, cBitsPixel, cExpectedBitsPixel;
 
     hbmp = CreateBitmap(0, 0, 0, 0, NULL);
     ok(hbmp != 0, "should get a 1x1 bitmap\n");
     ok(hbmp == GetStockObject(DEFAULT_BITMAP), "\n");
-    result = GetObject(hbmp, sizeof(bitmap), &bitmap);
-    ok(result > 0, "result = %d\n", result);
-    ok(bitmap.bmType == 0, "bmType = %ld\n", bitmap.bmType);
-    ok(bitmap.bmWidth == 1, "bmWidth = %ld\n", bitmap.bmWidth);
-    ok(bitmap.bmHeight == 1, "bmHeight = %ld\n", bitmap.bmHeight);
-    ok(bitmap.bmWidthBytes == 2, "bmWidthBytes = %ld\n", bitmap.bmWidthBytes);
-    ok(bitmap.bmPlanes == 1, "bmPlanes = %d\n", bitmap.bmPlanes);
-    ok(bitmap.bmBitsPixel == 1, "bmBitsPixel = %d\n", bitmap.bmBitsPixel);
-    ok(bitmap.bmBits == 0, "bmBits = %p\n", bitmap.bmBits);
+    ok_int(GetObject(hbmp, sizeof(bitmap), &bitmap), sizeof(BITMAP));
+    ok_int(bitmap.bmType, 0);
+    ok_int(bitmap.bmWidth, 1);
+    ok_int(bitmap.bmHeight, 1);
+    ok_int(bitmap.bmWidthBytes, 2);
+    ok_int(bitmap.bmPlanes, 1);
+    ok_int(bitmap.bmBitsPixel, 1);
+    ok_ptr(bitmap.bmBits, 0);
     DeleteObject(hbmp);
 
     hbmp = CreateBitmap(1, 2, 1, 1, NULL);
     ok(hbmp != 0, "should get a 1x2 bitmap\n");
-    result = GetObject(hbmp, sizeof(bitmap), &bitmap);
-    ok(result > 0, "result = %d\n", result);
-    ok(bitmap.bmType == 0, "bmType = %ld\n", bitmap.bmType);
-    ok(bitmap.bmWidth == 1, "bmWidth = %ld\n", bitmap.bmWidth);
-    ok(bitmap.bmHeight == 2, "bmHeight = %ld\n", bitmap.bmHeight);
-    ok(bitmap.bmWidthBytes == 2, "bmWidthBytes = %ld\n", bitmap.bmWidthBytes);
-    ok(bitmap.bmPlanes == 1, "bmPlanes = %d\n", bitmap.bmPlanes);
-    ok(bitmap.bmBitsPixel == 1, "bmBitsPixel = %d\n", bitmap.bmBitsPixel);
-    ok(bitmap.bmBits == 0, "bmBits = %p\n", bitmap.bmBits);
+    ok_int(GetObject(hbmp, sizeof(bitmap), &bitmap), sizeof(BITMAP));
+    ok_int(bitmap.bmType, 0);
+    ok_int(bitmap.bmWidth, 1);
+    ok_int(bitmap.bmHeight, 2);
+    ok_int(bitmap.bmWidthBytes, 2);
+    ok_int(bitmap.bmPlanes, 1);
+    ok_int(bitmap.bmBitsPixel, 1);
+    ok_ptr(bitmap.bmBits, 0);
     DeleteObject(hbmp);
+
+    for (cBitsPixel = 0; cBitsPixel <= 32; cBitsPixel++)
+    {
+        /* CreateBitmap API accepts any number as BitsPixels param.
+           but it just can create 1, 4, 8, 16, 24, 32 bpp Bitmaps */
+        if (cBitsPixel <= 1) cExpectedBitsPixel = 1;
+        else if (cBitsPixel <= 4) cExpectedBitsPixel = 4;
+        else if (cBitsPixel <= 8) cExpectedBitsPixel = 8;
+        else if (cBitsPixel <= 16) cExpectedBitsPixel = 16;
+        else if (cBitsPixel <= 24) cExpectedBitsPixel = 24;
+        else if (cBitsPixel <= 32) cExpectedBitsPixel = 32;
+
+        hbmp = CreateBitmap(1, 2, 1, cBitsPixel, NULL);
+        ok(hbmp != 0, "should get a 1x2 bitmap %ld\n", cBitsPixel);
+        ok_int(GetObject(hbmp, sizeof(bitmap), &bitmap), sizeof(BITMAP));
+
+        /* calculate expected line width */
+        cjWidthBytes = ((((ULONG)bitmap.bmWidth) * ((ULONG)bitmap.bmBitsPixel) 
+ 15) & ~15) >> 3;
+
+        ok_int(bitmap.bmType, 0);
+        ok_int(bitmap.bmWidth, 1);
+        ok_int(bitmap.bmHeight, 2);
+        ok_int(bitmap.bmPlanes, 1);
+        ok_int(bitmap.bmBitsPixel, cExpectedBitsPixel);
+        ok_int(bitmap.bmWidthBytes, cjWidthBytes);
+        ok_ptr(bitmap.bmBits, 0);
+        DeleteObject(hbmp);
+
+    }
+
+    hbmp = CreateBitmap(1, 2, 1, 33, NULL);
+    ok(hbmp == 0, "Expected failure for 33 bpp\n");
+
 
 
 }
 
 START_TEST(CreateBitmap)
 {
-    Test_CreateBitmap_Params();
+    //Test_CreateBitmap_Params();
     Test_CreateBitmap();
+
 }
-


Reply via email to