shell32: Add some selection tests.
This commit is contained in:
parent
e556b45f43
commit
e7cc2f76da
|
@ -2,6 +2,7 @@
|
||||||
* Unit test of the SHBrowseForFolder function.
|
* Unit test of the SHBrowseForFolder function.
|
||||||
*
|
*
|
||||||
* Copyright 2009-2010 Michael Mc Donnell
|
* Copyright 2009-2010 Michael Mc Donnell
|
||||||
|
* Copyright 2011 André Hentschel
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
@ -27,6 +28,7 @@
|
||||||
#define TIMER_WAIT_MS 50 /* Should be long enough for slow systems */
|
#define TIMER_WAIT_MS 50 /* Should be long enough for slow systems */
|
||||||
|
|
||||||
static const char new_folder_name[] = "foo";
|
static const char new_folder_name[] = "foo";
|
||||||
|
static LPITEMIDLIST selected_folder_pidl;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns the number of folders in a folder.
|
* Returns the number of folders in a folder.
|
||||||
|
@ -247,7 +249,98 @@ static void test_click_make_new_folder_button(void)
|
||||||
CoUninitialize();
|
CoUninitialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Callback used by test_selection.
|
||||||
|
*/
|
||||||
|
static int CALLBACK selection_callback(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
|
||||||
|
{
|
||||||
|
DWORD ret;
|
||||||
|
|
||||||
|
switch (uMsg)
|
||||||
|
{
|
||||||
|
case BFFM_INITIALIZED:
|
||||||
|
/* test with zero values */
|
||||||
|
ret = SendMessage(hwnd, BFFM_SETSELECTIONA, 0, 0);
|
||||||
|
ok(!ret, "SendMessage returned: %u\n", ret);
|
||||||
|
ret = SendMessage(hwnd, BFFM_SETSELECTIONW, 0, 0);
|
||||||
|
ok(!ret, "SendMessage returned: %u\n", ret);
|
||||||
|
|
||||||
|
ret = SendMessage(hwnd, BFFM_SETSELECTIONA, 1, 0);
|
||||||
|
ok(!ret, "SendMessage returned: %u\n", ret);
|
||||||
|
|
||||||
|
if(0)
|
||||||
|
{
|
||||||
|
/* Crashes on NT4 */
|
||||||
|
ret = SendMessage(hwnd, BFFM_SETSELECTIONW, 1, 0);
|
||||||
|
ok(!ret, "SendMessage returned: %u\n", ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = SendMessage(hwnd, BFFM_SETSELECTIONA, 0, (LPARAM)selected_folder_pidl);
|
||||||
|
ok(!ret, "SendMessage returned: %u\n", ret);
|
||||||
|
ret = SendMessage(hwnd, BFFM_SETSELECTIONW, 0, (LPARAM)selected_folder_pidl);
|
||||||
|
ok(!ret, "SendMessage returned: %u\n", ret);
|
||||||
|
|
||||||
|
ret = SendMessage(hwnd, BFFM_SETSELECTIONA, 1, (LPARAM)selected_folder_pidl);
|
||||||
|
ok(!ret, "SendMessage returned: %u\n", ret);
|
||||||
|
ret = SendMessage(hwnd, BFFM_SETSELECTIONW, 1, (LPARAM)selected_folder_pidl);
|
||||||
|
ok(!ret, "SendMessage returned: %u\n", ret);
|
||||||
|
|
||||||
|
ret = SendMessage(hwnd, BFFM_SETSELECTIONA, 1, (LPARAM)new_folder_name);
|
||||||
|
ok(!ret, "SendMessage returned: %u\n", ret);
|
||||||
|
ret = SendMessage(hwnd, BFFM_SETSELECTIONW, 1, (LPARAM)new_folder_name);
|
||||||
|
ok(!ret, "SendMessage returned: %u\n", ret);
|
||||||
|
|
||||||
|
SendMessage(hwnd, WM_COMMAND, IDOK, 0);
|
||||||
|
return TRUE;
|
||||||
|
default:
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_selection(void)
|
||||||
|
{
|
||||||
|
HRESULT resCoInit;
|
||||||
|
BROWSEINFO bi;
|
||||||
|
LPITEMIDLIST pidl = NULL;
|
||||||
|
IShellFolder *desktop_object;
|
||||||
|
WCHAR selected_folderW[MAX_PATH];
|
||||||
|
const CHAR title[] = "test_selection";
|
||||||
|
|
||||||
|
resCoInit = CoInitialize(NULL);
|
||||||
|
if(!(resCoInit == S_OK || resCoInit == S_FALSE))
|
||||||
|
{
|
||||||
|
skip("COM could not be initialized %u\n", GetLastError());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!GetCurrentDirectoryW(MAX_PATH, selected_folderW))
|
||||||
|
{
|
||||||
|
skip("GetCurrentDirectoryW failed %u\n", GetLastError());
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Initialize browse info struct for SHBrowseForFolder */
|
||||||
|
bi.hwndOwner = NULL;
|
||||||
|
bi.pszDisplayName = NULL;
|
||||||
|
bi.lpszTitle = (LPTSTR) title;
|
||||||
|
bi.ulFlags = BIF_NEWDIALOGSTYLE;
|
||||||
|
bi.lpfn = selection_callback;
|
||||||
|
|
||||||
|
SHGetDesktopFolder(&desktop_object);
|
||||||
|
desktop_object->lpVtbl->ParseDisplayName(desktop_object, NULL, NULL,
|
||||||
|
selected_folderW, 0UL, &selected_folder_pidl, 0UL);
|
||||||
|
bi.pidlRoot = selected_folder_pidl;
|
||||||
|
|
||||||
|
pidl = SHBrowseForFolder(&bi);
|
||||||
|
|
||||||
|
if (pidl)
|
||||||
|
CoTaskMemFree(pidl);
|
||||||
|
|
||||||
|
CoUninitialize();
|
||||||
|
}
|
||||||
|
|
||||||
START_TEST(brsfolder)
|
START_TEST(brsfolder)
|
||||||
{
|
{
|
||||||
test_click_make_new_folder_button();
|
test_click_make_new_folder_button();
|
||||||
|
test_selection();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue