Alexandre Julliard : msi/tests: Add some tests for MsiEnumPatchesW, fix a few failures on XP.

Alexandre Julliard julliard at winehq.org
Wed Feb 25 09:22:52 CST 2009


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Feb 25 15:04:45 2009 +0100

msi/tests: Add some tests for MsiEnumPatchesW, fix a few failures on XP.

---

 dlls/msi/tests/msi.c |   44 ++++++++++++++++++++++++++++++++++++++------
 1 files changed, 38 insertions(+), 6 deletions(-)

diff --git a/dlls/msi/tests/msi.c b/dlls/msi/tests/msi.c
index fec9d89..f3d2e4b 100644
--- a/dlls/msi/tests/msi.c
+++ b/dlls/msi/tests/msi.c
@@ -9090,6 +9090,7 @@ static void test_MsiEnumPatches(void)
     CHAR patchcode[MAX_PATH], patch_squashed[MAX_PATH];
     CHAR prodcode[MAX_PATH], prod_squashed[MAX_PATH];
     CHAR transforms[MAX_PATH];
+    WCHAR patchW[MAX_PATH], prodcodeW[MAX_PATH], transformsW[MAX_PATH];
     HKEY prodkey, patches, udprod;
     HKEY userkey, hpatch, udpatch;
     DWORD size, data;
@@ -9298,7 +9299,7 @@ static void test_MsiEnumPatches(void)
        "Expected \"%s\", got \"%s\"\n", patchcode, patch);
     ok(!lstrcmpA(transforms, "whatever"),
        "Expected \"whatever\", got \"%s\"\n", transforms);
-    ok(size == 8, "Expected 8, got %d\n", size);
+    ok(size == 8 || size == MAX_PATH, "Expected 8 or MAX_PATH, got %d\n", size);
 
     /* lpPatchBuf is NULL */
     size = MAX_PATH;
@@ -9341,7 +9342,7 @@ static void test_MsiEnumPatches(void)
        "Expected \"%s\", got \"%s\"\n", patchcode, patch);
     ok(!lstrcmpA(transforms, "whate"),
        "Expected \"whate\", got \"%s\"\n", transforms);
-    ok(size == 16, "Expected 16, got %d\n", size);
+    ok(size == 8 || size == 16, "Expected 8 or 16, got %d\n", size);
 
     /* increase the index */
     size = MAX_PATH;
@@ -9507,7 +9508,7 @@ static void test_MsiEnumPatches(void)
        "Expected \"%s\", got \"%s\"\n", patchcode, patch);
     ok(!lstrcmpA(transforms, "whatever"),
        "Expected \"whatever\", got \"%s\"\n", transforms);
-    ok(size == 8, "Expected 8, got %d\n", size);
+    ok(size == 8 || size == MAX_PATH, "Expected 8 or MAX_PATH, got %d\n", size);
 
     RegDeleteKeyA(userkey, "");
     RegCloseKey(userkey);
@@ -9632,7 +9633,7 @@ static void test_MsiEnumPatches(void)
        "Expected \"%s\", got \"%s\"\n", patchcode, patch);
     ok(!lstrcmpA(transforms, "whatever"),
        "Expected \"whatever\", got \"%s\"\n", transforms);
-    ok(size == 8, "Expected 8, got %d\n", size);
+    ok(size == 8 || size == MAX_PATH, "Expected 8 or MAX_PATH, got %d\n", size);
 
     lstrcpyA(keypath, "Software\\Microsoft\\Windows\\CurrentVersion\\");
     lstrcatA(keypath, "Installer\\UserData\\S-1-5-18\\Products\\");
@@ -9651,7 +9652,7 @@ static void test_MsiEnumPatches(void)
        "Expected \"%s\", got \"%s\"\n", patchcode, patch);
     ok(!lstrcmpA(transforms, "whatever"),
        "Expected \"whatever\", got \"%s\"\n", transforms);
-    ok(size == 8, "Expected 8, got %d\n", size);
+    ok(size == 8 || size == MAX_PATH, "Expected 8 or MAX_PATH, got %d\n", size);
 
     res = RegCreateKeyA(udprod, "Patches", &udpatch);
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
@@ -9666,7 +9667,7 @@ static void test_MsiEnumPatches(void)
        "Expected \"%s\", got \"%s\"\n", patchcode, patch);
     ok(!lstrcmpA(transforms, "whatever"),
        "Expected \"whatever\", got \"%s\"\n", transforms);
-    ok(size == 8, "Expected 8, got %d\n", size);
+    ok(size == 8 || size == MAX_PATH, "Expected 8 or MAX_PATH, got %d\n", size);
 
     res = RegCreateKeyA(udpatch, patch_squashed, &hpatch);
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
@@ -9698,8 +9699,39 @@ static void test_MsiEnumPatches(void)
        "Expected \"%s\", got \"%s\"\n", patchcode, patch);
     ok(!lstrcmpA(transforms, "whatever"),
        "Expected \"whatever\", got \"%s\"\n", transforms);
+    ok(size == 8 || size == MAX_PATH, "Expected 8 or MAX_PATH, got %d\n", size);
+
+    /* now duplicate some of the tests for the W version */
+
+    /* pcchTransformsBuf is too small */
+    size = 6;
+    MultiByteToWideChar( CP_ACP, 0, prodcode, -1, prodcodeW, MAX_PATH );
+    MultiByteToWideChar( CP_ACP, 0, "apple", -1, patchW, MAX_PATH );
+    MultiByteToWideChar( CP_ACP, 0, "banana", -1, transformsW, MAX_PATH );
+    r = MsiEnumPatchesW(prodcodeW, 0, patchW, transformsW, &size);
+    ok(r == ERROR_MORE_DATA, "Expected ERROR_MORE_DATA, got %d\n", r);
+    WideCharToMultiByte( CP_ACP, 0, patchW, -1, patch, MAX_PATH, NULL, NULL );
+    WideCharToMultiByte( CP_ACP, 0, transformsW, -1, transforms, MAX_PATH, NULL, NULL );
+    ok(!lstrcmpA(patch, patchcode),
+       "Expected \"%s\", got \"%s\"\n", patchcode, patch);
+    ok(!lstrcmpA(transforms, "whate"),
+       "Expected \"whate\", got \"%s\"\n", transforms);
     ok(size == 8, "Expected 8, got %d\n", size);
 
+    /* patch code value exists */
+    size = MAX_PATH;
+    MultiByteToWideChar( CP_ACP, 0, "apple", -1, patchW, MAX_PATH );
+    MultiByteToWideChar( CP_ACP, 0, "banana", -1, transformsW, MAX_PATH );
+    r = MsiEnumPatchesW(prodcodeW, 0, patchW, transformsW, &size);
+    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+    WideCharToMultiByte( CP_ACP, 0, patchW, -1, patch, MAX_PATH, NULL, NULL );
+    WideCharToMultiByte( CP_ACP, 0, transformsW, -1, transforms, MAX_PATH, NULL, NULL );
+    ok(!lstrcmpA(patch, patchcode),
+       "Expected \"%s\", got \"%s\"\n", patchcode, patch);
+    ok(!lstrcmpA(transforms, "whatever"),
+       "Expected \"whatever\", got \"%s\"\n", transforms);
+    ok(size == 8 || size == MAX_PATH, "Expected 8 or MAX_PATH, got %d\n", size);
+
     RegDeleteValueA(patches, patch_squashed);
     RegDeleteValueA(patches, "Patches");
     RegDeleteKeyA(patches, "");




More information about the wine-cvs mailing list