mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-08-26 19:33:31 +00:00
CORE-13935 * Make LoadImage1bpp.c a sub-test of LoadImage.c for apitest. * Add broken() for Vista x64 Testbot regression test fix based on reviewer comments.
This commit is contained in:
@@ -71,7 +71,8 @@ list(APPEND PCH_SKIP_SOURCE
|
||||
add_executable(user32_apitest
|
||||
${SOURCE}
|
||||
${PCH_SKIP_SOURCE}
|
||||
user32_apitest.rc)
|
||||
user32_apitest.rc
|
||||
user32_apitest_1bpp.rc)
|
||||
|
||||
target_link_libraries(user32_apitest wine ${PSEH_LIB})
|
||||
set_module_type(user32_apitest win32cui)
|
||||
|
||||
@@ -1,5 +1,148 @@
|
||||
|
||||
#include "precomp.h"
|
||||
#include "resource_1bpp.h"
|
||||
|
||||
#define ROS_HGDI_ERROR (HANDLE)~(ULONG_PTR)0 // This makes MSVC compiler happy
|
||||
|
||||
static void test_LoadImage_1bpp(void)
|
||||
{
|
||||
HDC hdc1, hdc2;
|
||||
HBITMAP hBmp1, hBmp2;
|
||||
BITMAP bitmap1, bitmap2;
|
||||
BITMAPINFO bmi;
|
||||
UINT size;
|
||||
HGLOBAL hMem;
|
||||
LPVOID lpBits;
|
||||
BYTE img[4 * 4] = { 0 };
|
||||
INT result;
|
||||
HGDIOBJ res_obj;
|
||||
|
||||
hdc1 = CreateCompatibleDC(NULL);
|
||||
/* Load bitmap with BITMAPINFOHEADER (40 bytes) */
|
||||
hBmp1 = LoadImageW(GetModuleHandle(NULL), MAKEINTRESOURCEW(201), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR);
|
||||
res_obj = SelectObject(hdc1, hBmp1);
|
||||
if (res_obj == ROS_HGDI_ERROR || res_obj == NULL)
|
||||
{
|
||||
skip("Could not load 1 BPP bitmap\n");
|
||||
goto Cleanup;
|
||||
}
|
||||
GetObject(hBmp1, sizeof(BITMAP), &bitmap1);
|
||||
|
||||
ok(bitmap1.bmBitsPixel == 1, "Should have been '1', but got '%d'\n", bitmap1.bmBitsPixel);
|
||||
ok(bitmap1.bmWidth == 4, "Should have been '4', but got '%d'\n", bitmap1.bmWidth);
|
||||
ok(bitmap1.bmHeight == 4, "Should have been '4', but got '%d'\n", bitmap1.bmHeight);
|
||||
|
||||
memset(&bmi, 0, sizeof(bmi));
|
||||
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
||||
bmi.bmiHeader.biWidth = bitmap1.bmWidth;
|
||||
bmi.bmiHeader.biHeight = bitmap1.bmHeight;
|
||||
bmi.bmiHeader.biPlanes = bitmap1.bmPlanes;
|
||||
bmi.bmiHeader.biBitCount = bitmap1.bmBitsPixel;
|
||||
bmi.bmiHeader.biCompression = BI_RGB;
|
||||
bmi.bmiHeader.biSizeImage = 0;
|
||||
|
||||
/* Get the size of the bitmap */
|
||||
size = ((bitmap1.bmWidth * bitmap1.bmBitsPixel + 31) / 32) * 4 * bitmap1.bmHeight;
|
||||
ok(size == 16, "Expected 16, but size is %d\n", size);
|
||||
|
||||
hMem = GlobalAlloc(GMEM_MOVEABLE, size);
|
||||
lpBits = GlobalLock(hMem);
|
||||
result = GetDIBits(hdc1, hBmp1, 0, bitmap1.bmHeight, lpBits, &bmi, DIB_RGB_COLORS);
|
||||
if (!result)
|
||||
{
|
||||
skip("GetDIBits failed for 1 BPP bitmap\n");
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
/* Get bytes from bitmap (we know its 4x4 1BPP */
|
||||
memcpy(img, lpBits, 16);
|
||||
|
||||
ok(img[0] == 0x60, "Got 0x%02x, expected x60\n", img[0]);
|
||||
ok(img[1] == 0, "Got 0x%02x, expected 0\n", img[1]);
|
||||
ok(img[2] == 0, "Got 0x%02x, expected 0\n", img[2]);
|
||||
ok(img[3] == 0, "Got 0x%02x, expected 0\n", img[3]);
|
||||
|
||||
ok(img[4] == 0x90, "Got 0x%02x, expected x90\n", img[4]);
|
||||
ok(img[5] == 0, "Got 0x%02x, expected 0x60\n", img[5]);
|
||||
ok(img[6] == 0, "Got 0x%02x, expected 0\n", img[6]);
|
||||
ok(img[7] == 0, "Got 0x%02x, expected 0\n", img[7]);
|
||||
|
||||
ok(img[8] == 0x90, "Got 0x%02x, expected x90\n", img[8]);
|
||||
ok(img[9] == 0, "Got 0x%02x, expected 0\n", img[9]);
|
||||
ok(img[10] == 0, "Got 0x%02x, expected 0\n", img[10]);
|
||||
ok(img[11] == 0, "Got 0x%02x, expected 0\n", img[11]);
|
||||
|
||||
ok(img[12] == 0x60, "Got 0x%02x, expected x60\n", img[12]);
|
||||
ok(img[13] == 0, "Got 0x%02x, expected 0x60\n", img[13]);
|
||||
ok(img[14] == 0, "Got 0x%02x, expected 0\n", img[14]);
|
||||
ok(img[15] == 0, "Got 0x%02x, expected 0\n", img[15]);
|
||||
|
||||
hdc2 = CreateCompatibleDC(NULL);
|
||||
/* Load bitmap with BITMAPCOREHEADER (12 bytes) */
|
||||
hBmp2 = LoadImageW(GetModuleHandle(NULL), MAKEINTRESOURCEW(202), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR);
|
||||
res_obj = SelectObject(hdc2, hBmp2);
|
||||
if (res_obj == ROS_HGDI_ERROR || res_obj == NULL)
|
||||
{
|
||||
skip("Could not load 1 BPP bitmap\n");
|
||||
goto Cleanup;
|
||||
}
|
||||
GetObject(hBmp2, sizeof(BITMAP), &bitmap2);
|
||||
ok(bitmap2.bmBitsPixel == 1, "Should have been '1', but got %d\n", bitmap2.bmBitsPixel);
|
||||
ok(bitmap2.bmWidth == 4, "Should have been '4', but got '%d'\n", bitmap2.bmWidth);
|
||||
ok(bitmap2.bmHeight == 4, "Should have been '4', but got '%d'\n", bitmap2.bmHeight);
|
||||
|
||||
memset(&bmi, 0, sizeof(bmi));
|
||||
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
||||
bmi.bmiHeader.biWidth = bitmap2.bmWidth;
|
||||
bmi.bmiHeader.biHeight = bitmap2.bmHeight;
|
||||
bmi.bmiHeader.biPlanes = bitmap2.bmPlanes;
|
||||
bmi.bmiHeader.biBitCount = bitmap2.bmBitsPixel;
|
||||
bmi.bmiHeader.biCompression = BI_RGB;
|
||||
bmi.bmiHeader.biSizeImage = 0;
|
||||
|
||||
/* Get the size of the bitmap */
|
||||
size = ((bitmap2.bmWidth * bitmap2.bmBitsPixel + 31) / 32) * 4 * bitmap2.bmHeight;
|
||||
ok(size == 16, "Expected 16, but size is %d\n", size);
|
||||
|
||||
result = GetDIBits(hdc2, hBmp2, 0, bitmap2.bmHeight, lpBits, &bmi, DIB_RGB_COLORS); // Check for success per Timo
|
||||
if (!result)
|
||||
{
|
||||
skip("GetDIBits failed for 1 BPP bitmap\n");
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
/* Clear img array for new test */
|
||||
memset(img, 0, 16);
|
||||
|
||||
/* Get bytes from bitmap (we know its 4x4 1BPP */
|
||||
memcpy(img, lpBits, 16);
|
||||
|
||||
ok(img[0] == 0x60 || broken(img[0] == 0) /* Vista Testbot */, "Got 0x%02x, expected x60\n", img[0]);
|
||||
ok(img[1] == 0, "Got 0x%02x, expected 0\n", img[1]);
|
||||
ok(img[2] == 0, "Got 0x%02x, expected 0\n", img[2]);
|
||||
ok(img[3] == 0, "Got 0x%02x, expected 0\n", img[3]);
|
||||
|
||||
ok(img[4] == 0x90 || broken(img[4] == 0xf0) /* Vista Testbot */, "Got 0x%02x, expected x90\n", img[4]);
|
||||
ok(img[5] == 0, "Got 0x%02x, expected 0x60\n", img[5]);
|
||||
ok(img[6] == 0, "Got 0x%02x, expected 0\n", img[6]);
|
||||
ok(img[7] == 0, "Got 0x%02x, expected 0\n", img[7]);
|
||||
|
||||
ok(img[8] == 0x90 || broken(img[8] == 0xf0) /* Vista Testbot */, "Got 0x%02x, expected x90\n", img[8]);
|
||||
ok(img[9] == 0, "Got 0x%02x, expected 0\n", img[9]);
|
||||
ok(img[10] == 0, "Got 0x%02x, expected 0\n", img[10]);
|
||||
ok(img[11] == 0, "Got 0x%02x, expected 0\n", img[11]);
|
||||
|
||||
ok(img[12] == 0x60 || broken(img[12] == 0xf0) /* Vista Testbot */, "Got 0x%02x, expected x60\n", img[12]);
|
||||
ok(img[13] == 0, "Got 0x%02x, expected 0x60\n", img[13]);
|
||||
ok(img[14] == 0, "Got 0x%02x, expected 0\n", img[14]);
|
||||
ok(img[15] == 0, "Got 0x%02x, expected 0\n", img[15]);
|
||||
|
||||
Cleanup:
|
||||
if (hMem) GlobalUnlock(hMem);
|
||||
if (hMem) GlobalFree(hMem);
|
||||
if (hdc1) DeleteDC(hdc1);
|
||||
if (hdc2) DeleteDC(hdc2);
|
||||
}
|
||||
|
||||
static void test_LoadImage_DataFile(void)
|
||||
{
|
||||
@@ -171,4 +314,5 @@ START_TEST(LoadImage)
|
||||
WaitForSingleObject (pi.hProcess, INFINITE);
|
||||
|
||||
test_LoadIcon_SystemIds();
|
||||
test_LoadImage_1bpp();
|
||||
}
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 78 B |
Binary file not shown.
|
After Width: | Height: | Size: 48 B |
@@ -0,0 +1,3 @@
|
||||
|
||||
#define BPP1_TEST 201
|
||||
#define BPP2_TEST 202
|
||||
@@ -0,0 +1,9 @@
|
||||
#include <windef.h>
|
||||
#include <winuser.h>
|
||||
#include <dlgs.h>
|
||||
#include "resource_1bpp.h"
|
||||
|
||||
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||
|
||||
BPP1_TEST BITMAP "bpp1a.bmp"
|
||||
BPP2_TEST BITMAP "bpp1b.bmp"
|
||||
Reference in New Issue
Block a user