From: Zhiyi Zhang Subject: [PATCH v2 resend 1/2] user32/tests: Add display DC bitmap tests. Message-Id: Date: Tue, 2 Feb 2021 15:03:45 +0800 Signed-off-by: Zhiyi Zhang --- v2: Supersede 198913~198914. Remove a todo_wine for a test that succeeds now. v2 resend: Supersede 198919~198920. 198920 seems to be mistakenly marked as superseded. Thus the resend. dlls/user32/tests/monitor.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/dlls/user32/tests/monitor.c b/dlls/user32/tests/monitor.c index 58b3f0d5e0c..926b288da11 100644 --- a/dlls/user32/tests/monitor.c +++ b/dlls/user32/tests/monitor.c @@ -68,6 +68,11 @@ static void flush_events(void) } } +static int get_bitmap_stride(int width, int bpp) +{ + return ((width * bpp + 15) >> 3) & ~1; +} + static BOOL CALLBACK monitor_enum_proc(HMONITOR hmon, HDC hdc, LPRECT lprc, LPARAM lparam) { @@ -1995,7 +2000,10 @@ static void test_handles(void) #define check_display_dc(a, b, c) _check_display_dc(__LINE__, a, b, c) static void _check_display_dc(INT line, HDC hdc, const DEVMODEA *dm, BOOL allow_todo) { + BITMAP bitmap; + HBITMAP hbmp; INT value; + BOOL ret; value = GetDeviceCaps(hdc, HORZRES); todo_wine_if(allow_todo && dm->dmPelsWidth != GetSystemMetrics(SM_CXSCREEN)) @@ -2023,6 +2031,29 @@ static void _check_display_dc(INT line, HDC hdc, const DEVMODEA *dm, BOOL allow_ todo_wine_if(allow_todo) ok_(__FILE__, line)(value == dm->dmDisplayFrequency, "Expected VREFRESH %d, got %d.\n", dm->dmDisplayFrequency, value); + + hbmp = GetCurrentObject(hdc, OBJ_BITMAP); + ok_(__FILE__, line)(!!hbmp, "GetCurrentObject failed, error %#x.\n", GetLastError()); + ret = GetObjectA(hbmp, sizeof(bitmap), &bitmap); + ok_(__FILE__, line)(ret || broken(!ret), /* <= Win7 */ "GetObjectA failed, error %#x.\n", GetLastError()); + if (ret) + { + ok_(__FILE__, line)(bitmap.bmType == 0, "Expected bmType %d, got %d.\n", 0, bitmap.bmType); + todo_wine + ok_(__FILE__, line)(bitmap.bmWidth == GetSystemMetrics(SM_CXVIRTUALSCREEN), + "Expected bmWidth %d, got %d.\n", GetSystemMetrics(SM_CXVIRTUALSCREEN), bitmap.bmWidth); + todo_wine + ok_(__FILE__, line)(bitmap.bmHeight == GetSystemMetrics(SM_CYVIRTUALSCREEN), + "Expected bmHeight %d, got %d.\n", GetSystemMetrics(SM_CYVIRTUALSCREEN), bitmap.bmHeight); + todo_wine + ok_(__FILE__, line)(bitmap.bmBitsPixel == GetDeviceCaps(hdc, BITSPIXEL), + "Expected bmBitsPixel %d, got %d.\n", GetDeviceCaps(hdc, BITSPIXEL), bitmap.bmBitsPixel); + ok_(__FILE__, line)(bitmap.bmWidthBytes == get_bitmap_stride(bitmap.bmWidth, bitmap.bmBitsPixel), + "Expected bmWidthBytes %d, got %d.\n", get_bitmap_stride(bitmap.bmWidth, bitmap.bmBitsPixel), + bitmap.bmWidthBytes); + ok_(__FILE__, line)(bitmap.bmPlanes == 1, "Expected bmPlanes %d, got %d.\n", 1, bitmap.bmPlanes); + ok_(__FILE__, line)(bitmap.bmBits == NULL, "Expected bmBits %p, got %p.\n", NULL, bitmap.bmBits); + } } static void test_display_dc(void) -- 2.27.0