user32/tests: Test that monitor handles are user32 handles.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
2d0fefbc49
commit
bc4d22b3dc
|
@ -1862,6 +1862,86 @@ static void test_display_config(void)
|
||||||
test_DisplayConfigGetDeviceInfo();
|
test_DisplayConfigGetDeviceInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static BOOL CALLBACK test_handle_proc(HMONITOR full_monitor, HDC hdc, LPRECT rect, LPARAM lparam)
|
||||||
|
{
|
||||||
|
MONITORINFO monitor_info = {sizeof(monitor_info)};
|
||||||
|
HMONITOR monitor;
|
||||||
|
BOOL ret;
|
||||||
|
|
||||||
|
#ifdef _WIN64
|
||||||
|
if ((ULONG_PTR)full_monitor >> 32)
|
||||||
|
monitor = full_monitor;
|
||||||
|
else
|
||||||
|
monitor = (HMONITOR)((ULONG_PTR)full_monitor | ((ULONG_PTR)~0u << 32));
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
ret = GetMonitorInfoW(monitor, &monitor_info);
|
||||||
|
ok(ret, "GetMonitorInfoW failed, error %#x.\n", GetLastError());
|
||||||
|
|
||||||
|
monitor = (HMONITOR)((ULONG_PTR)full_monitor & 0xffffffff);
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
ret = GetMonitorInfoW(monitor, &monitor_info);
|
||||||
|
ok(ret, "GetMonitorInfoW failed, error %#x.\n", GetLastError());
|
||||||
|
|
||||||
|
monitor = (HMONITOR)(((ULONG_PTR)full_monitor & 0xffffffff) | ((ULONG_PTR)0x1234 << 32));
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
ret = GetMonitorInfoW(monitor, &monitor_info);
|
||||||
|
ok(ret, "GetMonitorInfoW failed, error %#x.\n", GetLastError());
|
||||||
|
|
||||||
|
monitor = (HMONITOR)((ULONG_PTR)full_monitor & 0xffff);
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
ret = GetMonitorInfoW(monitor, &monitor_info);
|
||||||
|
todo_wine ok(!ret, "GetMonitorInfoW succeeded.\n");
|
||||||
|
todo_wine ok(GetLastError() == ERROR_INVALID_MONITOR_HANDLE, "Expected error code %#x, got %#x.\n",
|
||||||
|
ERROR_INVALID_MONITOR_HANDLE, GetLastError());
|
||||||
|
|
||||||
|
monitor = (HMONITOR)(((ULONG_PTR)full_monitor & 0xffff) | ((ULONG_PTR)0x9876 << 16));
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
ret = GetMonitorInfoW(monitor, &monitor_info);
|
||||||
|
ok(!ret, "GetMonitorInfoW succeeded.\n");
|
||||||
|
ok(GetLastError() == ERROR_INVALID_MONITOR_HANDLE, "Expected error code %#x, got %#x.\n",
|
||||||
|
ERROR_INVALID_MONITOR_HANDLE, GetLastError());
|
||||||
|
|
||||||
|
monitor = (HMONITOR)(((ULONG_PTR)full_monitor & 0xffff) | ((ULONG_PTR)0x12345678 << 16));
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
ret = GetMonitorInfoW(monitor, &monitor_info);
|
||||||
|
ok(!ret, "GetMonitorInfoW succeeded.\n");
|
||||||
|
ok(GetLastError() == ERROR_INVALID_MONITOR_HANDLE, "Expected error code %#x, got %#x.\n",
|
||||||
|
ERROR_INVALID_MONITOR_HANDLE, GetLastError());
|
||||||
|
#else
|
||||||
|
if ((ULONG_PTR)full_monitor >> 16)
|
||||||
|
monitor = full_monitor;
|
||||||
|
else
|
||||||
|
monitor = (HMONITOR)((ULONG_PTR)full_monitor | ((ULONG_PTR)~0u << 16));
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
ret = GetMonitorInfoW(monitor, &monitor_info);
|
||||||
|
todo_wine_if(((ULONG_PTR)full_monitor >> 16) == 0)
|
||||||
|
ok(ret, "GetMonitorInfoW failed, error %#x.\n", GetLastError());
|
||||||
|
|
||||||
|
monitor = (HMONITOR)((ULONG_PTR)full_monitor & 0xffff);
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
ret = GetMonitorInfoW(monitor, &monitor_info);
|
||||||
|
ok(ret, "GetMonitorInfoW failed, error %#x.\n", GetLastError());
|
||||||
|
|
||||||
|
monitor = (HMONITOR)(((ULONG_PTR)full_monitor & 0xffff) | ((ULONG_PTR)0x1234 << 16));
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
ret = GetMonitorInfoW(monitor, &monitor_info);
|
||||||
|
ok(!ret, "GetMonitorInfoW succeeded.\n");
|
||||||
|
ok(GetLastError() == ERROR_INVALID_MONITOR_HANDLE, "Expected error code %#x, got %#x.\n",
|
||||||
|
ERROR_INVALID_MONITOR_HANDLE, GetLastError());
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_handles(void)
|
||||||
|
{
|
||||||
|
BOOL ret;
|
||||||
|
|
||||||
|
/* Test that monitor handles are user32 handles */
|
||||||
|
ret = EnumDisplayMonitors(NULL, NULL, test_handle_proc, 0);
|
||||||
|
ok(ret, "EnumDisplayMonitors failed, error %#x.\n", GetLastError());
|
||||||
|
}
|
||||||
|
|
||||||
START_TEST(monitor)
|
START_TEST(monitor)
|
||||||
{
|
{
|
||||||
init_function_pointers();
|
init_function_pointers();
|
||||||
|
@ -1871,4 +1951,5 @@ START_TEST(monitor)
|
||||||
test_monitors();
|
test_monitors();
|
||||||
test_work_area();
|
test_work_area();
|
||||||
test_display_config();
|
test_display_config();
|
||||||
|
test_handles();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue