Ge van Geldorp : msi/tests: EstimatedSize is not set consistently between Windows Installer versions.

Alexandre Julliard julliard at winehq.org
Tue Jan 20 08:27:55 CST 2009


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

Author: Ge van Geldorp <ge at gse.nl>
Date:   Tue Jan 20 02:57:07 2009 +0100

msi/tests: EstimatedSize is not set consistently between Windows Installer versions.

---

 dlls/msi/tests/install.c |   69 +++++++++++++++++++++++++++++++++++++++------
 1 files changed, 59 insertions(+), 10 deletions(-)

diff --git a/dlls/msi/tests/install.c b/dlls/msi/tests/install.c
index 8bc50c5..95dd03a 100644
--- a/dlls/msi/tests/install.c
+++ b/dlls/msi/tests/install.c
@@ -2395,6 +2395,41 @@ static void check_reg_dword(HKEY prodkey, LPCSTR name, DWORD expected, DWORD lin
     ok_(__FILE__, line)(val == expected, "Expected %d, got %d\n", expected, val);
 }
 
+static void check_reg_dword2(HKEY prodkey, LPCSTR name, DWORD expected1, DWORD expected2, DWORD line)
+{
+    DWORD val, size, type;
+    LONG res;
+
+    size = sizeof(DWORD);
+    res = RegQueryValueExA(prodkey, name, NULL, &type, (LPBYTE)&val, &size);
+
+    if (res != ERROR_SUCCESS || type != REG_DWORD)
+    {
+        ok_(__FILE__, line)(FALSE, "Key doesn't exist or wrong type\n");
+        return;
+    }
+
+    ok_(__FILE__, line)(val == expected1 || val == expected2, "Expected %d or %d, got %d\n", expected1, expected2, val);
+}
+
+static void check_reg_dword3(HKEY prodkey, LPCSTR name, DWORD expected1, DWORD expected2, DWORD expected3, DWORD line)
+{
+    DWORD val, size, type;
+    LONG res;
+
+    size = sizeof(DWORD);
+    res = RegQueryValueExA(prodkey, name, NULL, &type, (LPBYTE)&val, &size);
+
+    if (res != ERROR_SUCCESS || type != REG_DWORD)
+    {
+        ok_(__FILE__, line)(FALSE, "Key doesn't exist or wrong type\n");
+        return;
+    }
+
+    ok_(__FILE__, line)(val == expected1 || val == expected2 || val == expected3,
+                        "Expected %d, %d or %d, got %d\n", expected1, expected2, expected3, val);
+}
+
 #define CHECK_REG_STR(prodkey, name, expected) \
     check_reg_str(prodkey, name, expected, TRUE, __LINE__);
 
@@ -2416,6 +2451,20 @@ static void check_reg_dword(HKEY prodkey, LPCSTR name, DWORD expected, DWORD lin
     check_reg_dword(prodkey, name, expected, __LINE__); \
     RegDeleteValueA(prodkey, name);
 
+#define CHECK_REG_DWORD2(prodkey, name, expected1, expected2) \
+    check_reg_dword2(prodkey, name, expected1, expected2, __LINE__);
+
+#define CHECK_DEL_REG_DWORD2(prodkey, name, expected1, expected2) \
+    check_reg_dword2(prodkey, name, expected1, expected2, __LINE__); \
+    RegDeleteValueA(prodkey, name);
+
+#define CHECK_REG_DWORD3(prodkey, name, expected1, expected2, expected3) \
+    check_reg_dword3(prodkey, name, expected1, expected2, expected3, __LINE__);
+
+#define CHECK_DEL_REG_DWORD3(prodkey, name, expected1, expected2, expected3) \
+    check_reg_dword3(prodkey, name, expected1, expected2, expected3, __LINE__); \
+    RegDeleteValueA(prodkey, name);
+
 static void get_date_str(LPSTR date)
 {
     SYSTEMTIME systime;
@@ -2498,7 +2547,7 @@ static void test_publish_registerproduct(void)
     CHECK_DEL_REG_DWORD(hkey, "WindowsInstaller", 1);
     todo_wine
     {
-        CHECK_DEL_REG_DWORD(hkey, "EstimatedSize", 12);
+        CHECK_DEL_REG_DWORD3(hkey, "EstimatedSize", 12, -12, 4);
     }
 
     RegDeleteKeyA(hkey, "");
@@ -2536,7 +2585,7 @@ static void test_publish_registerproduct(void)
     CHECK_DEL_REG_DWORD(props, "WindowsInstaller", 1);
     todo_wine
     {
-        CHECK_DEL_REG_DWORD(props, "EstimatedSize", 12);
+        CHECK_DEL_REG_DWORD3(props, "EstimatedSize", 12, -12, 4);
     }
 
     RegDeleteKeyA(props, "");
@@ -2597,7 +2646,7 @@ static void test_publish_registerproduct(void)
     CHECK_DEL_REG_DWORD(hkey, "WindowsInstaller", 1);
     todo_wine
     {
-        CHECK_DEL_REG_DWORD(hkey, "EstimatedSize", 12);
+        CHECK_DEL_REG_DWORD3(hkey, "EstimatedSize", 12, -12, 4);
     }
 
     RegDeleteKeyA(hkey, "");
@@ -2635,7 +2684,7 @@ static void test_publish_registerproduct(void)
     CHECK_DEL_REG_DWORD(props, "WindowsInstaller", 1);
     todo_wine
     {
-        CHECK_DEL_REG_DWORD(props, "EstimatedSize", 12);
+        CHECK_DEL_REG_DWORD3(props, "EstimatedSize", 12, -12, 4);
     }
 
     RegDeleteKeyA(props, "");
@@ -3360,7 +3409,7 @@ static void test_publish(void)
     CHECK_REG_DWORD(prodkey, "WindowsInstaller", 1);
     todo_wine
     {
-        CHECK_REG_DWORD(prodkey, "EstimatedSize", 12);
+        CHECK_REG_DWORD2(prodkey, "EstimatedSize", 12, -12);
     }
 
     RegCloseKey(prodkey);
@@ -3434,7 +3483,7 @@ static void test_publish(void)
     CHECK_REG_DWORD(prodkey, "WindowsInstaller", 1);
     todo_wine
     {
-        CHECK_REG_DWORD(prodkey, "EstimatedSize", 12);
+        CHECK_REG_DWORD2(prodkey, "EstimatedSize", 12, -12);
     }
 
     RegCloseKey(prodkey);
@@ -3512,7 +3561,7 @@ static void test_publish(void)
     CHECK_REG_DWORD(prodkey, "WindowsInstaller", 1);
     todo_wine
     {
-        CHECK_REG_DWORD(prodkey, "EstimatedSize", 12);
+        CHECK_REG_DWORD2(prodkey, "EstimatedSize", 12, -12);
     }
 
     RegCloseKey(prodkey);
@@ -3564,7 +3613,7 @@ static void test_publish(void)
     CHECK_REG_DWORD(prodkey, "WindowsInstaller", 1);
     todo_wine
     {
-        CHECK_REG_DWORD(prodkey, "EstimatedSize", 12);
+        CHECK_REG_DWORD2(prodkey, "EstimatedSize", 12, -12);
     }
 
     RegCloseKey(prodkey);
@@ -3616,7 +3665,7 @@ static void test_publish(void)
     CHECK_REG_DWORD(prodkey, "WindowsInstaller", 1);
     todo_wine
     {
-        CHECK_REG_DWORD(prodkey, "EstimatedSize", 12);
+        CHECK_REG_DWORD2(prodkey, "EstimatedSize", 12, -20);
     }
 
     RegCloseKey(prodkey);
@@ -3694,7 +3743,7 @@ static void test_publish(void)
     CHECK_REG_DWORD(prodkey, "WindowsInstaller", 1);
     todo_wine
     {
-        CHECK_REG_DWORD(prodkey, "EstimatedSize", 12);
+        CHECK_REG_DWORD2(prodkey, "EstimatedSize", 12, -12);
     }
 
     RegCloseKey(prodkey);




More information about the wine-cvs mailing list