Paul Vriens : shell32/tests: Fix test failures on several platforms.

Alexandre Julliard julliard at winehq.org
Tue Nov 24 12:40:24 CST 2009


Module: wine
Branch: master
Commit: ac85305c95e6e26954f3b3aea4909371ba36d674
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=ac85305c95e6e26954f3b3aea4909371ba36d674

Author: Paul Vriens <Paul.Vriens.Wine at gmail.com>
Date:   Tue Nov 24 17:06:45 2009 +0100

shell32/tests: Fix test failures on several platforms.

---

 dlls/shell32/tests/progman_dde.c |   68 ++++++++++++++++++++++++++++++--------
 1 files changed, 54 insertions(+), 14 deletions(-)

diff --git a/dlls/shell32/tests/progman_dde.c b/dlls/shell32/tests/progman_dde.c
index c2ff934..09eb791 100644
--- a/dlls/shell32/tests/progman_dde.c
+++ b/dlls/shell32/tests/progman_dde.c
@@ -76,6 +76,45 @@ static void init_function_pointers(void)
     pSHGetSpecialFolderPathA = (void*)GetProcAddress(hmod, "SHGetSpecialFolderPathA");
 }
 
+static char Group1Title[MAX_PATH]  = "Group1";
+static char Group2Title[MAX_PATH]  = "Group2";
+static char Group3Title[MAX_PATH]  = "Group3";
+static char Startup[MAX_PATH]      = "Startup";
+static char StartupTitle[MAX_PATH] = "Startup";
+
+static void init_strings(void)
+{
+    HKEY key;
+    DWORD fullpath = 0;
+    DWORD size = sizeof(DWORD);
+
+    if (!pSHGetSpecialFolderPathA)
+        return;
+
+    RegOpenKeyA(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\CabinetState", &key);
+    RegQueryValueExA(key, "FullPath", NULL, NULL, (LPBYTE)&fullpath, &size);
+    RegCloseKey(key);
+    if (fullpath == 1)
+    {
+        BOOL ret;
+        char commonprog[MAX_PATH], startup[MAX_PATH];
+
+        ret = SHGetSpecialFolderPathA(NULL, commonprog, CSIDL_COMMON_PROGRAMS, FALSE);
+        if (!ret) /* Win9x */
+            SHGetSpecialFolderPathA(NULL, commonprog, CSIDL_PROGRAMS, FALSE);
+        lstrcpyA(Group1Title, commonprog);
+        lstrcatA(Group1Title, "\\Group1");
+        lstrcpyA(Group2Title, commonprog);
+        lstrcatA(Group2Title, "\\Group2");
+        lstrcpyA(Group3Title, commonprog);
+        lstrcatA(Group3Title, "\\Group3");
+
+        SHGetSpecialFolderPathA(NULL, startup, CSIDL_STARTUP, FALSE);
+        lstrcpyA(StartupTitle, startup);
+        lstrcpyA(Startup, (strrchr(StartupTitle, '\\') + 1));
+    }
+}
+
 static HDDEDATA CALLBACK DdeCallback(UINT type, UINT format, HCONV hConv, HSZ hsz1, HSZ hsz2,
                                      HDDEDATA hDDEData, ULONG_PTR data1, ULONG_PTR data2)
 {
@@ -316,7 +355,7 @@ static void CheckFileExistsInProgramGroups(const char *nameToCheck, int shouldEx
  *        2. window is open
  */
 static void CreateGroupTest(DWORD instance, HCONV hConv, const char *command, UINT expected_result,
-                            const char *groupName, int testParams)
+                            const char *groupName, const char *windowTitle, int testParams)
 {
     HDDEDATA hData;
     UINT error;
@@ -337,7 +376,7 @@ static void CreateGroupTest(DWORD instance, HCONV hConv, const char *command, UI
         /* Check if Group Now Exists */
         CheckFileExistsInProgramGroups(groupName, TRUE, TRUE, NULL, testParams);
         /* Check if Window is Open (polling) */
-        CheckWindowCreated(groupName, TRUE, testParams);
+        CheckWindowCreated(windowTitle, TRUE, testParams);
     }
 }
 
@@ -347,7 +386,7 @@ static void CreateGroupTest(DWORD instance, HCONV hConv, const char *command, UI
  *        1. window is open
  */
 static void ShowGroupTest(DWORD instance, HCONV hConv, const char *command, UINT expected_result,
-                          const char *groupName, int closeAfterShowing, int testParams)
+                          const char *groupName, const char *windowTitle, int closeAfterShowing, int testParams)
 {
     HDDEDATA hData;
     UINT error;
@@ -372,7 +411,7 @@ static void ShowGroupTest(DWORD instance, HCONV hConv, const char *command, UINT
     if (error == DMLERR_NO_ERROR)
     {
         /* Check if Window is Open (polling) */
-        CheckWindowCreated(groupName, closeAfterShowing, testParams);
+        CheckWindowCreated(windowTitle, closeAfterShowing, testParams);
     }
 }
 
@@ -461,7 +500,7 @@ static void DeleteItemTest(DWORD instance, HCONV hConv, const char *command, UIN
  *   AddItems) so this covers minimum expected functionality.
  */
 static void CompoundCommandTest(DWORD instance, HCONV hConv, const char *command, UINT expected_result,
-                                const char *groupName, const char *fileName1,
+                                const char *groupName, const char *windowTitle, const char *fileName1,
                                 const char *fileName2, int testParams)
 {
     HDDEDATA hData;
@@ -479,7 +518,7 @@ static void CompoundCommandTest(DWORD instance, HCONV hConv, const char *command
     {
         /* Check that File exists */
         CheckFileExistsInProgramGroups(groupName, TRUE, TRUE, NULL, testParams);
-        CheckWindowCreated(groupName, FALSE, testParams);
+        CheckWindowCreated(windowTitle, FALSE, testParams);
         CheckFileExistsInProgramGroups(fileName1, TRUE, FALSE, groupName, testParams);
         CheckFileExistsInProgramGroups(fileName2, TRUE, FALSE, groupName, testParams);
     }
@@ -499,26 +538,26 @@ static int DdeTestProgman(DWORD instance, HCONV hConv)
         GetStringFromError(DMLERR_NOTPROCESSED), GetStringFromError(error));
 
     /* CreateGroup Tests (including AddItem, DeleteItem) */
-    CreateGroupTest(instance, hConv, "[CreateGroup(Group1)]", DMLERR_NO_ERROR, "Group1", DDE_TEST_COMMON|DDE_TEST_CREATEGROUP|testnum++);
+    CreateGroupTest(instance, hConv, "[CreateGroup(Group1)]", DMLERR_NO_ERROR, "Group1", Group1Title, DDE_TEST_COMMON|DDE_TEST_CREATEGROUP|testnum++);
     AddItemTest(instance, hConv, "[AddItem(c:\\f1g1,f1g1Name)]", DMLERR_NO_ERROR, "f1g1Name.lnk", "Group1", DDE_TEST_COMMON|DDE_TEST_ADDITEM|testnum++);
     AddItemTest(instance, hConv, "[AddItem(c:\\f2g1,f2g1Name)]", DMLERR_NO_ERROR, "f2g1Name.lnk", "Group1", DDE_TEST_COMMON|DDE_TEST_ADDITEM|testnum++);
     DeleteItemTest(instance, hConv, "[DeleteItem(f2g1Name)]", DMLERR_NO_ERROR, "f2g1Name.lnk", "Group1", DDE_TEST_COMMON|DDE_TEST_DELETEITEM|testnum++);
     AddItemTest(instance, hConv, "[AddItem(c:\\f3g1,f3g1Name)]", DMLERR_NO_ERROR, "f3g1Name.lnk", "Group1", DDE_TEST_COMMON|DDE_TEST_ADDITEM|testnum++);
-    CreateGroupTest(instance, hConv, "[CreateGroup(Group2)]", DMLERR_NO_ERROR, "Group2", DDE_TEST_COMMON|DDE_TEST_CREATEGROUP|testnum++);
+    CreateGroupTest(instance, hConv, "[CreateGroup(Group2)]", DMLERR_NO_ERROR, "Group2", Group2Title, DDE_TEST_COMMON|DDE_TEST_CREATEGROUP|testnum++);
     /* Create Group that already exists - same instance */
-    CreateGroupTest(instance, hConv, "[CreateGroup(Group1)]", DMLERR_NO_ERROR, "Group1", DDE_TEST_COMMON|DDE_TEST_CREATEGROUP|testnum++);
+    CreateGroupTest(instance, hConv, "[CreateGroup(Group1)]", DMLERR_NO_ERROR, "Group1", Group1Title, DDE_TEST_COMMON|DDE_TEST_CREATEGROUP|testnum++);
 
     /* ShowGroup Tests */
-    ShowGroupTest(instance, hConv, "[ShowGroup(Group1)]", DMLERR_NOTPROCESSED, "Startup", TRUE, DDE_TEST_SHOWGROUP|testnum++);
+    ShowGroupTest(instance, hConv, "[ShowGroup(Group1)]", DMLERR_NOTPROCESSED, Startup, StartupTitle, TRUE, DDE_TEST_SHOWGROUP|testnum++);
     DeleteItemTest(instance, hConv, "[DeleteItem(f3g1Name)]", DMLERR_NO_ERROR, "f3g1Name.lnk", "Group1", DDE_TEST_COMMON|DDE_TEST_DELETEITEM|testnum++);
-    ShowGroupTest(instance, hConv, "[ShowGroup(Startup,0)]", DMLERR_NO_ERROR, "Startup", TRUE, DDE_TEST_SHOWGROUP|testnum++);
-    ShowGroupTest(instance, hConv, "[ShowGroup(Group1,0)]", DMLERR_NO_ERROR, "Group1", FALSE, DDE_TEST_SHOWGROUP|testnum++);
+    ShowGroupTest(instance, hConv, "[ShowGroup(Startup,0)]", DMLERR_NO_ERROR, Startup, StartupTitle, TRUE, DDE_TEST_SHOWGROUP|testnum++);
+    ShowGroupTest(instance, hConv, "[ShowGroup(Group1,0)]", DMLERR_NO_ERROR, "Group1", Group1Title, FALSE, DDE_TEST_SHOWGROUP|testnum++);
 
     /* DeleteGroup Test - Note that Window is Open for this test */
     DeleteGroupTest(instance, hConv, "[DeleteGroup(Group1)]", DMLERR_NO_ERROR, "Group1", DDE_TEST_DELETEGROUP|testnum++);
 
     /* Compound Execute String Command */
-    CompoundCommandTest(instance, hConv, "[CreateGroup(Group3)][AddItem(c:\\f1g3,f1g3Name)][AddItem(c:\\f2g3,f2g3Name)]", DMLERR_NO_ERROR, "Group3", "f1g3Name.lnk", "f2g3Name.lnk", DDE_TEST_COMMON|DDE_TEST_COMPOUND|testnum++);
+    CompoundCommandTest(instance, hConv, "[CreateGroup(Group3)][AddItem(c:\\f1g3,f1g3Name)][AddItem(c:\\f2g3,f2g3Name)]", DMLERR_NO_ERROR, "Group3", Group3Title, "f1g3Name.lnk", "f2g3Name.lnk", DDE_TEST_COMMON|DDE_TEST_COMPOUND|testnum++);
     DeleteGroupTest(instance, hConv, "[DeleteGroup(Group3)]", DMLERR_NO_ERROR, "Group3", DDE_TEST_DELETEGROUP|testnum++);
 
     /* Full Parameters of Add Item */
@@ -531,7 +570,7 @@ static int DdeTestProgman(DWORD instance, HCONV hConv)
 static void DdeTestProgman2(DWORD instance, HCONV hConv, int testnum)
 {
     /* Create Group that already exists on a separate connection */
-    CreateGroupTest(instance, hConv, "[CreateGroup(Group2)]", DMLERR_NO_ERROR, "Group2", DDE_TEST_COMMON|DDE_TEST_CREATEGROUP|testnum++);
+    CreateGroupTest(instance, hConv, "[CreateGroup(Group2)]", DMLERR_NO_ERROR, "Group2", Group2Title, DDE_TEST_COMMON|DDE_TEST_CREATEGROUP|testnum++);
     DeleteGroupTest(instance, hConv, "[DeleteGroup(Group2)]", DMLERR_NO_ERROR, "Group2", DDE_TEST_COMMON|DDE_TEST_DELETEGROUP|testnum++);
 }
 
@@ -544,6 +583,7 @@ START_TEST(progman_dde)
     int testnum;
 
     init_function_pointers();
+    init_strings();
 
     /* Only report this once */
     if (!pSHGetSpecialFolderPathA)




More information about the wine-cvs mailing list