Author: tkreuzer Date: Sat Feb 14 14:07:50 2015 New Revision: 66262
URL: http://svn.reactos.org/svn/reactos?rev=66262&view=rev Log: [GDI32_APITEST] Add additional tests for CreateBitmap and fix a test. Patch by Victor Martinez ROSTESTS-56 #resolve
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/CreateBitma... ============================================================================== --- trunk/rostests/apitests/gdi32/CreateBitmap.c [iso-8859-1] (original) +++ trunk/rostests/apitests/gdi32/CreateBitmap.c [iso-8859-1] Sat Feb 14 14:07:50 2015 @@ -76,12 +76,13 @@ ok_err(0);
/* Check for overflow in width * height */ - 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); + hbmp = CreateBitmap(0x2000, 0x4000, 1, 1, NULL); //128 MB.Should work. + ok(hbmp != 0, "\n"); + DeleteObject(hbmp); + + /* XP doesn't allow to create bitmaps larger than 128 Mb */ + SetLastError(0); + hbmp = CreateBitmap(0x2000, 0x4001, 1, 1, NULL);//More than 128MB.Should fail. ok(hbmp == 0, "\n"); ok_err(0);
@@ -98,6 +99,7 @@ HBITMAP hbmp; BITMAP bitmap; ULONG cjWidthBytes, cBitsPixel, cExpectedBitsPixel; + int result, TestBitsPixel, ExpectedBitsPixel;
hbmp = CreateBitmap(0, 0, 0, 0, NULL); ok(hbmp != 0, "should get a 1x1 bitmap\n"); @@ -112,6 +114,36 @@ ok_ptr(bitmap.bmBits, 0); DeleteObject(hbmp);
+ /* Above 32 bpp should fail */ + hbmp = CreateBitmap(1, 2, 1, 33, NULL); + ok(hbmp == 0, "should fail\n"); + + for (TestBitsPixel = 0; TestBitsPixel <= 32; TestBitsPixel++) + { + /* CreateBitmap API accepts any number as BitsPixels param. + but it can only create 1, 4, 8, 16, 24, 32 bpp bitmaps */ + if (TestBitsPixel <= 1) ExpectedBitsPixel = 1; + else if(TestBitsPixel <= 4) ExpectedBitsPixel = 4; + else if(TestBitsPixel <= 8) ExpectedBitsPixel = 8; + else if(TestBitsPixel <= 16) ExpectedBitsPixel = 16; + else if(TestBitsPixel <= 24) ExpectedBitsPixel = 24; + else if(TestBitsPixel <= 32) ExpectedBitsPixel = 32; + + /* Calculate proper bmWidthBytes */ + + hbmp = CreateBitmap(1, 2, 1, TestBitsPixel, 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.bmPlanes == 1, "bmPlanes = %d\n", bitmap.bmPlanes); + ok(bitmap.bmBitsPixel == ExpectedBitsPixel, "bmBitsPixel = %d ExpectedBitsPixel= %d \n", bitmap.bmBitsPixel, ExpectedBitsPixel); + ok(bitmap.bmBits == 0, "bmBits = %p\n", bitmap.bmBits); + DeleteObject(hbmp); + } + hbmp = CreateBitmap(1, 2, 1, 1, NULL); ok(hbmp != 0, "should get a 1x2 bitmap\n"); ok_int(GetObject(hbmp, sizeof(bitmap), &bitmap), sizeof(BITMAP)); @@ -162,7 +194,7 @@
START_TEST(CreateBitmap) { - //Test_CreateBitmap_Params(); + Test_CreateBitmap_Params(); Test_CreateBitmap();
}