shell32: Add some selection tests.

This commit is contained in:
André Hentschel 2011-04-28 22:32:52 +02:00 committed by Alexandre Julliard
parent e556b45f43
commit e7cc2f76da
1 changed files with 93 additions and 0 deletions

View File

@ -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();
} }