shell32/tests: Add tests for IFolderView2_{Get, Set}CurrentFolderFlags().

This commit is contained in:
Jactry Zeng 2023-04-09 10:40:11 -05:00 committed by Alexandre Julliard
parent cd09a22439
commit c8209830d5

View file

@ -1493,10 +1493,26 @@ static void test_newmenu(void)
static void test_folder_flags(void)
{
IFolderView2 *folderview;
FOLDERSETTINGS settings;
IShellFolder *desktop;
IShellView *shellview;
DWORD flags;
HRESULT hr;
int i;
static const struct
{
DWORD mask, flags;
DWORD expected;
} tests[] =
{
{ FWF_USESEARCHFOLDER, FWF_NONE, FWF_NONE },
{ FWF_NONE, FWF_AUTOARRANGE, FWF_NONE },
{ FWF_AUTOARRANGE, FWF_AUTOARRANGE, FWF_AUTOARRANGE },
{ FWF_OWNERDATA, FWF_AUTOARRANGE, FWF_NONE },
{ FWF_AUTOARRANGE, FWF_OWNERDATA | FWF_AUTOARRANGE, FWF_AUTOARRANGE },
{ ~FWF_NONE, FWF_AUTOARRANGE, FWF_AUTOARRANGE },
};
create_interfaces(&desktop, &shellview);
@ -1507,6 +1523,37 @@ static void test_folder_flags(void)
ok(settings.fFlags == FWF_USESEARCHFOLDER || broken(!settings.fFlags) /* pre vista */,
"Got flags %#x.\n", settings.fFlags);
hr = IShellView_QueryInterface(shellview, &IID_IFolderView2, (void **)&folderview);
ok(hr == S_OK || broken(hr == E_NOINTERFACE) /* pre vista */, "Got hr %#lx.\n", hr);
if (hr != S_OK)
{
win_skip("No IFolderView2 for the desktop folder.\n");
destroy_interfaces(desktop, shellview);
return;
}
hr = IFolderView2_GetCurrentFolderFlags(folderview, NULL);
todo_wine ok(hr == S_OK, "Got hr %#lx.\n", hr);
flags = 0xdeadbeef;
hr = IFolderView2_GetCurrentFolderFlags(folderview, &flags);
todo_wine ok(hr == S_OK, "Got hr %#lx.\n", hr);
todo_wine ok(flags == FWF_USESEARCHFOLDER, "Got flags %#lx.\n", flags);
for (i = 0; i < ARRAY_SIZE(tests); ++i)
{
hr = IFolderView2_SetCurrentFolderFlags(folderview, tests[i].mask, tests[i].flags);
todo_wine ok(hr == S_OK, "Test %u: Got hr %#lx.\n", i, hr);
flags = 0xdeadbeef;
hr = IFolderView2_GetCurrentFolderFlags(folderview, &flags);
todo_wine ok(hr == S_OK, "Test %u: Got hr %#lx.\n", i, hr);
todo_wine ok(flags == tests[i].expected, "Test %u: Got flags %#lx.\n", i, flags);
hr = IFolderView2_SetCurrentFolderFlags(folderview, ~FWF_NONE, FWF_NONE);
todo_wine ok(hr == S_OK, "Test %u: Got hr %#lx.\n", i, hr);
}
IFolderView2_Release(folderview);
destroy_interfaces(desktop, shellview);
}