From: Jactry Zeng <jzeng(a)codeweavers.com> --- dlls/shell32/tests/shlview.c | 54 ++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/dlls/shell32/tests/shlview.c b/dlls/shell32/tests/shlview.c index 0f6ad9f4158..80e8e845156 100644 --- a/dlls/shell32/tests/shlview.c +++ b/dlls/shell32/tests/shlview.c @@ -1493,10 +1493,36 @@ 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_NONE, FWF_AUTOARRANGE, FWF_USESEARCHFOLDER }, + { FWF_AUTOARRANGE, FWF_AUTOARRANGE, FWF_USESEARCHFOLDER | FWF_AUTOARRANGE }, + { FWF_ABBREVIATEDNAMES, FWF_ABBREVIATEDNAMES | FWF_NOICONS, + FWF_USESEARCHFOLDER | FWF_AUTOARRANGE | FWF_ABBREVIATEDNAMES }, + { FWF_ABBREVIATEDNAMES | FWF_NOICONS, FWF_ABBREVIATEDNAMES | FWF_NOVISIBLE, + FWF_USESEARCHFOLDER | FWF_AUTOARRANGE | FWF_ABBREVIATEDNAMES }, + { FWF_NOICONS, FWF_ABBREVIATEDNAMES | FWF_NOICONS, + FWF_USESEARCHFOLDER | FWF_NOICONS | FWF_AUTOARRANGE | FWF_ABBREVIATEDNAMES }, + { FWF_NONE, FWF_NONE, + FWF_USESEARCHFOLDER | FWF_NOICONS | FWF_AUTOARRANGE | FWF_ABBREVIATEDNAMES }, + { FWF_NOICONS, FWF_ABBREVIATEDNAMES | FWF_NOICONS, + FWF_USESEARCHFOLDER | FWF_NOICONS | FWF_AUTOARRANGE | FWF_ABBREVIATEDNAMES }, + { FWF_NOICONS, FWF_NONE, FWF_USESEARCHFOLDER | FWF_AUTOARRANGE | FWF_ABBREVIATEDNAMES }, + { ~FWF_NONE, FWF_NONE, FWF_NONE }, + { FWF_NOICONS, FWF_NONE, FWF_NONE }, + { FWF_NONE, FWF_AUTOARRANGE, FWF_NONE }, + }; create_interfaces(&desktop, &shellview); @@ -1507,6 +1533,34 @@ 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); + } + + IFolderView2_Release(folderview); destroy_interfaces(desktop, shellview); } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/2628