From 865fe9cf971adf95b35c9712e7ff2cb3e09578f3 Mon Sep 17 00:00:00 2001 From: Akihiro Sagawa Date: Wed, 7 Aug 2019 22:46:37 +0900 Subject: [PATCH] shell32/tests: Add DragQueryPoint tests. Signed-off-by: Akihiro Sagawa Signed-off-by: Alexandre Julliard --- dlls/shell32/tests/shellole.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/dlls/shell32/tests/shellole.c b/dlls/shell32/tests/shellole.c index 4b91302a156..a96e8695a19 100644 --- a/dlls/shell32/tests/shellole.c +++ b/dlls/shell32/tests/shellole.c @@ -745,6 +745,7 @@ static void test_SHCreateQueryCancelAutoPlayMoniker(void) IMoniker_Release(mon); } +#define WM_EXPECTED_VALUE WM_APP #define DROPTEST_FILENAME "c:\\wintest.bin" struct DragParam { HWND hwnd; @@ -753,11 +754,20 @@ struct DragParam { static LRESULT WINAPI drop_window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { + static BOOL expected; + switch (msg) { + case WM_EXPECTED_VALUE: + { + expected = lparam; + break; + } case WM_DROPFILES: { HDROP hDrop = (HDROP)wparam; char filename[MAX_PATH] = "dummy"; + POINT pt; + BOOL r; UINT num; num = DragQueryFileA(hDrop, 0xffffffff, NULL, 0); ok(num == 1, "expected 1, got %u\n", num); @@ -766,6 +776,10 @@ static LRESULT WINAPI drop_window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARA num = DragQueryFileA(hDrop, 0, filename, sizeof(filename)); ok(num == strlen(DROPTEST_FILENAME), "got %u\n", num); ok(!strcmp(filename, DROPTEST_FILENAME), "got %s\n", filename); + r = DragQueryPoint(hDrop, &pt); + todo_wine ok(r == expected, "expected %d, got %d\n", expected, r); + ok(pt.x == 10, "expected 10, got %d\n", pt.x); + ok(pt.y == 20, "expected 20, got %d\n", pt.y); DragFinish(hDrop); return 0; } @@ -820,7 +834,7 @@ static DWORD WINAPI drop_window_therad(void *arg) return 0; } -static void test_DragQueryFile(void) +static void test_DragQueryFile(BOOL non_client_flag) { struct DragParam param; HANDLE hThread; @@ -839,6 +853,9 @@ static void test_DragQueryFile(void) hDrop = GlobalAlloc(GHND, sizeof(DROPFILES) + (strlen(DROPTEST_FILENAME) + 2) * sizeof(WCHAR)); pDrop = GlobalLock(hDrop); + pDrop->pt.x = 10; + pDrop->pt.y = 20; + pDrop->fNC = non_client_flag; pDrop->pFiles = sizeof(DROPFILES); ret = MultiByteToWideChar(CP_ACP, 0, DROPTEST_FILENAME, -1, (LPWSTR)(pDrop + 1), strlen(DROPTEST_FILENAME) + 1); @@ -846,6 +863,9 @@ static void test_DragQueryFile(void) pDrop->fWide = TRUE; GlobalUnlock(hDrop); + r = PostMessageA(param.hwnd, WM_EXPECTED_VALUE, 0, !non_client_flag); + ok(r, "got %d\n", r); + r = PostMessageA(param.hwnd, WM_DROPFILES, (WPARAM)hDrop, 0); ok(r, "got %d\n", r); @@ -858,6 +878,7 @@ static void test_DragQueryFile(void) CloseHandle(param.ready); CloseHandle(hThread); } +#undef WM_EXPECTED_VALUE #undef DROPTEST_FILENAME static void test_SHCreateSessionKey(void) @@ -936,7 +957,8 @@ START_TEST(shellole) test_SHPropStg_functions(); test_SHCreateQueryCancelAutoPlayMoniker(); - test_DragQueryFile(); + test_DragQueryFile(TRUE); + test_DragQueryFile(FALSE); test_SHCreateSessionKey(); test_dragdrophelper();