Mariusz Pluciński : shell32/tests: Verify known folders available in system.
Alexandre Julliard
julliard at winehq.org
Tue Jun 14 11:57:49 CDT 2011
Module: wine
Branch: master
Commit: 25fd65e4f0c43559f759af58e8ebaeceb10edc1f
URL: http://source.winehq.org/git/wine.git/?a=commit;h=25fd65e4f0c43559f759af58e8ebaeceb10edc1f
Author: Mariusz Pluciński <vshader at gmail.com>
Date: Tue Jun 14 13:08:59 2011 +0200
shell32/tests: Verify known folders available in system.
---
dlls/shell32/tests/shellpath.c | 164 +++++++++++++++++++++++++++++++++++++++-
1 files changed, 162 insertions(+), 2 deletions(-)
diff --git a/dlls/shell32/tests/shellpath.c b/dlls/shell32/tests/shellpath.c
index add59db..72868db 100644
--- a/dlls/shell32/tests/shellpath.c
+++ b/dlls/shell32/tests/shellpath.c
@@ -883,16 +883,169 @@ if (0) { /* crashes */
ok(hr == S_OK, "expected S_OK, got 0x%08x\n", hr);
}
+/* Standard CSIDL values (and their flags) uses only two less-significant bytes */
+#define NO_CSIDL 0x10000
+#define CSIDL_TODO_WINE 0x20000
+#define KNOWN_FOLDER(id, csidl) \
+ { &id, # id, csidl, # csidl, __LINE__ }
+
+struct knownFolderDef {
+ const KNOWNFOLDERID *folderId;
+ const char *sFolderId;
+ const int csidl;
+ const char *sCsidl;
+ const int line;
+};
+
+static const struct knownFolderDef known_folders[] = {
+ KNOWN_FOLDER(FOLDERID_AddNewPrograms, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_AddNewPrograms, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_AdminTools, CSIDL_ADMINTOOLS),
+ KNOWN_FOLDER(FOLDERID_AppUpdates, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_CDBurning, CSIDL_CDBURN_AREA),
+ KNOWN_FOLDER(FOLDERID_ChangeRemovePrograms, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_CommonAdminTools, CSIDL_COMMON_ADMINTOOLS),
+ KNOWN_FOLDER(FOLDERID_CommonOEMLinks, CSIDL_COMMON_OEM_LINKS),
+ KNOWN_FOLDER(FOLDERID_CommonPrograms, CSIDL_COMMON_PROGRAMS),
+ KNOWN_FOLDER(FOLDERID_CommonStartMenu, CSIDL_COMMON_STARTMENU),
+ KNOWN_FOLDER(FOLDERID_CommonStartup, CSIDL_COMMON_STARTUP),
+ KNOWN_FOLDER(FOLDERID_CommonTemplates, CSIDL_COMMON_TEMPLATES),
+ KNOWN_FOLDER(FOLDERID_ComputerFolder, CSIDL_DRIVES),
+ KNOWN_FOLDER(FOLDERID_ConflictFolder, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_ConnectionsFolder, CSIDL_CONNECTIONS),
+ KNOWN_FOLDER(FOLDERID_Contacts, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_ControlPanelFolder, CSIDL_CONTROLS),
+ KNOWN_FOLDER(FOLDERID_Cookies, CSIDL_COOKIES),
+ KNOWN_FOLDER(FOLDERID_Desktop, CSIDL_DESKTOP),
+ KNOWN_FOLDER(FOLDERID_DeviceMetadataStore, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_Documents, CSIDL_MYDOCUMENTS | CSIDL_TODO_WINE),
+ KNOWN_FOLDER(FOLDERID_DocumentsLibrary, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_Downloads, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_Favorites, CSIDL_FAVORITES),
+ KNOWN_FOLDER(FOLDERID_Fonts, CSIDL_FONTS),
+ KNOWN_FOLDER(FOLDERID_Games, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_GameTasks, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_History, CSIDL_HISTORY),
+ KNOWN_FOLDER(FOLDERID_HomeGroup, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_ImplicitAppShortcuts, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_InternetCache, CSIDL_INTERNET_CACHE),
+ KNOWN_FOLDER(FOLDERID_InternetFolder, CSIDL_INTERNET),
+ KNOWN_FOLDER(FOLDERID_Libraries, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_Links, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_LocalAppData, CSIDL_LOCAL_APPDATA),
+ KNOWN_FOLDER(FOLDERID_LocalAppDataLow, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_LocalizedResourcesDir, CSIDL_RESOURCES_LOCALIZED),
+ KNOWN_FOLDER(FOLDERID_Music, CSIDL_MYMUSIC),
+ KNOWN_FOLDER(FOLDERID_MusicLibrary, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_NetHood, CSIDL_NETHOOD),
+ KNOWN_FOLDER(FOLDERID_NetworkFolder, CSIDL_NETWORK),
+ KNOWN_FOLDER(FOLDERID_OriginalImages, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_PhotoAlbums, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_Pictures, CSIDL_MYPICTURES),
+ KNOWN_FOLDER(FOLDERID_PicturesLibrary, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_Playlists, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_PrintersFolder, CSIDL_PRINTERS),
+ KNOWN_FOLDER(FOLDERID_PrintHood, CSIDL_PRINTHOOD),
+ KNOWN_FOLDER(FOLDERID_Profile, CSIDL_PROFILE),
+ KNOWN_FOLDER(FOLDERID_ProgramData, CSIDL_COMMON_APPDATA),
+ KNOWN_FOLDER(FOLDERID_ProgramFiles, CSIDL_PROGRAM_FILES),
+ KNOWN_FOLDER(FOLDERID_ProgramFilesCommon, CSIDL_PROGRAM_FILES_COMMON),
+ KNOWN_FOLDER(FOLDERID_ProgramFilesCommonX86, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_ProgramFilesX86, CSIDL_PROGRAM_FILESX86),
+ KNOWN_FOLDER(FOLDERID_Programs, CSIDL_PROGRAMS),
+ KNOWN_FOLDER(FOLDERID_Public, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_PublicDesktop, CSIDL_COMMON_DESKTOPDIRECTORY),
+ KNOWN_FOLDER(FOLDERID_PublicDocuments, CSIDL_COMMON_DOCUMENTS),
+ KNOWN_FOLDER(FOLDERID_PublicDownloads, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_PublicGameTasks, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_PublicLibraries, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_PublicMusic, CSIDL_COMMON_MUSIC),
+ KNOWN_FOLDER(FOLDERID_PublicPictures, CSIDL_COMMON_PICTURES),
+ KNOWN_FOLDER(FOLDERID_PublicRingtones, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_PublicVideos, CSIDL_COMMON_VIDEO),
+ KNOWN_FOLDER(FOLDERID_QuickLaunch, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_Recent, CSIDL_RECENT),
+ KNOWN_FOLDER(FOLDERID_RecordedTVLibrary, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_RecycleBinFolder, CSIDL_BITBUCKET),
+ KNOWN_FOLDER(FOLDERID_ResourceDir, CSIDL_RESOURCES),
+ KNOWN_FOLDER(FOLDERID_Ringtones, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_RoamingAppData, CSIDL_APPDATA),
+ KNOWN_FOLDER(FOLDERID_SampleMusic, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_SamplePictures, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_SamplePlaylists, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_SampleVideos, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_SavedGames, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_SavedSearches, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_SEARCH_CSC, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_SearchHome, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_SEARCH_MAPI, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_SendTo, CSIDL_SENDTO),
+ KNOWN_FOLDER(FOLDERID_SidebarDefaultParts, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_SidebarParts, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_StartMenu, CSIDL_STARTMENU),
+ KNOWN_FOLDER(FOLDERID_Startup, CSIDL_STARTUP),
+ KNOWN_FOLDER(FOLDERID_SyncManagerFolder, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_SyncResultsFolder, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_SyncSetupFolder, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_System, CSIDL_SYSTEM),
+ KNOWN_FOLDER(FOLDERID_SystemX86, CSIDL_SYSTEMX86),
+ KNOWN_FOLDER(FOLDERID_Templates, CSIDL_TEMPLATES),
+ KNOWN_FOLDER(FOLDERID_UserPinned, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_UserProfiles, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_UserProgramFiles, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_UserProgramFilesCommon, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_UsersFiles, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_UsersLibraries, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_Videos, CSIDL_MYVIDEO),
+ KNOWN_FOLDER(FOLDERID_VideosLibrary, NO_CSIDL),
+ KNOWN_FOLDER(FOLDERID_Windows, CSIDL_WINDOWS),
+ { NULL, NULL, 0, NULL }
+};
+#undef KNOWN_FOLDER
+
+static void check_known_folder(IKnownFolderManager *mgr, KNOWNFOLDERID *folderId)
+{
+ HRESULT hr;
+ const struct knownFolderDef *known_folder = &known_folders[0];
+ int csidl, expectedCsidl;
+
+ while(known_folder->folderId != NULL)
+ {
+ if(IsEqualGUID(known_folder->folderId, folderId))
+ {
+ /* verify CSIDL */
+ if(known_folder->csidl != NO_CSIDL)
+ {
+ expectedCsidl = known_folder->csidl & (~CSIDL_TODO_WINE);
+
+ hr = IKnownFolderManager_FolderIdToCsidl(mgr, folderId, &csidl);
+ ok_(__FILE__, known_folder->line)(hr == S_OK, "cannot retrieve CSIDL for folder %s\n", known_folder->sFolderId);
+
+ if(known_folder->csidl & CSIDL_TODO_WINE)
+ todo_wine ok_(__FILE__, known_folder->line)(csidl == expectedCsidl, "invalid CSIDL retrieved for folder %s. %d (%s) expected, but %d found\n", known_folder->sFolderId, expectedCsidl, known_folder->sCsidl, csidl);
+ else
+ ok_(__FILE__, known_folder->line)(csidl == expectedCsidl, "invalid CSIDL retrieved for folder %s. %d (%s) expected, but %d found\n", known_folder->sFolderId, expectedCsidl, known_folder->sCsidl, csidl);
+ }
+
+ break;
+ }
+ known_folder++;
+ }
+}
+#undef NO_CSIDL
+#undef CSIDL_TODO_WINE
+
static void test_knownFolders(void)
{
static const WCHAR sWindows[] = {'W','i','n','d','o','w','s',0};
HRESULT hr;
IKnownFolderManager *mgr = NULL;
IKnownFolder *folder = NULL;
- KNOWNFOLDERID folderId;
+ KNOWNFOLDERID folderId, *folders;
KF_CATEGORY cat = 0;
KNOWNFOLDER_DEFINITION kfDefinition;
- int csidl;
+ int csidl, i;
+ UINT nCount = 0;
LPWSTR folderPath;
KF_REDIRECTION_CAPABILITIES redirectionCapabilities = 1;
WCHAR sWinDir[MAX_PATH];
@@ -976,6 +1129,13 @@ static void test_knownFolders(void)
ok(hr == S_OK, "failed to release KnownFolder instance: 0x%08x\n", hr);
}
+ hr = IKnownFolderManager_GetFolderIds(mgr, &folders, &nCount);
+ ok(hr == S_OK, "failed to get known folders: 0x%08x\n", hr);
+ for(i=0;i<nCount;++i)
+ check_known_folder(mgr, &folders[i]);
+
+ CoTaskMemFree(folders);
+
hr = IKnownFolderManager_Release(mgr);
ok(hr == S_OK, "failed to release KnownFolderManager instance: 0x%08x\n", hr);
}
More information about the wine-cvs
mailing list