Misha Koshelev : msi/tests: automation: Add tests for Installer:: RelatedProducts.

Alexandre Julliard julliard at wine.codeweavers.com
Tue May 15 14:02:09 CDT 2007


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

Author: Misha Koshelev <mk144210 at bcm.edu>
Date:   Mon May 14 12:15:02 2007 -0500

msi/tests: automation: Add tests for Installer::RelatedProducts.

---

 dlls/msi/tests/automation.c |   61 ++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 58 insertions(+), 3 deletions(-)

diff --git a/dlls/msi/tests/automation.c b/dlls/msi/tests/automation.c
index 7151c17..a9da690 100644
--- a/dlls/msi/tests/automation.c
+++ b/dlls/msi/tests/automation.c
@@ -34,6 +34,7 @@
 static const char *msifile = "winetest.msi";
 static const WCHAR szMsifile[] = {'w','i','n','e','t','e','s','t','.','m','s','i',0};
 static const WCHAR szProductCode[] = { '{','F','1','C','3','A','F','5','0','-','8','B','5','6','-','4','A','6','9','-','A','0','0','C','-','0','0','7','7','3','F','E','4','2','F','3','0','}',0 };
+static const WCHAR szUpgradeCode[] = { '{','C','E','0','6','7','E','8','D','-','2','E','1','A','-','4','3','6','7','-','B','7','3','4','-','4','E','B','2','B','D','A','D','6','5','6','5','}',0 };
 CHAR CURR_DIR[MAX_PATH];
 EXCEPINFO excepinfo;
 
@@ -763,6 +764,22 @@ static HRESULT Installer_Products(IDispatch **pStringList)
     return hr;
 }
 
+static HRESULT Installer_RelatedProducts(LPCWSTR szProduct, IDispatch **pStringList)
+{
+    VARIANT varresult;
+    VARIANTARG vararg[1];
+    DISPPARAMS dispparams = {vararg, NULL, sizeof(vararg)/sizeof(VARIANTARG), 0};
+    HRESULT hr;
+
+    VariantInit(&vararg[0]);
+    V_VT(&vararg[0]) = VT_BSTR;
+    V_BSTR(&vararg[0]) = SysAllocString(szProduct);
+
+    hr = invoke(pInstaller, "RelatedProducts", DISPATCH_PROPERTYGET, &dispparams, &varresult, VT_DISPATCH);
+    *pStringList = V_DISPATCH(&varresult);
+    return hr;
+}
+
 static HRESULT Installer_VersionGet(LPCWSTR szVersion)
 {
     VARIANT varresult;
@@ -1631,10 +1648,12 @@ static void test_Installer_InstallProduct(LPCWSTR szPath)
 {
     HRESULT hr;
     CHAR path[MAX_PATH];
+    WCHAR szString[MAX_PATH];
     LONG res;
     HKEY hkey;
     DWORD num, size, type;
-    int iValue;
+    int iValue, iCount;
+    IDispatch *pStringList = NULL;
 
     create_test_files();
 
@@ -1647,6 +1666,27 @@ static void test_Installer_InstallProduct(LPCWSTR szPath)
     ok(SUCCEEDED(hr), "Installer_ProductState failed, hresult 0x%08x\n", hr);
     ok(iValue == INSTALLSTATE_DEFAULT, "Installer_ProductState returned %d, expected %d\n", iValue, INSTALLSTATE_DEFAULT);
 
+    /* Installer::RelatedProducts for our upgrade code */
+    todo_wine {
+        hr = Installer_RelatedProducts(szUpgradeCode, &pStringList);
+        ok(SUCCEEDED(hr), "Installer_RelatedProducts failed, hresult 0x%08x\n", hr);
+        if (SUCCEEDED(hr))
+        {
+            /* StringList::Count */
+            hr = StringList_Count(pStringList, &iCount);
+            ok(SUCCEEDED(hr), "StringList_Count failed, hresult 0x%08x\n", hr);
+            ok(iCount == 1, "Expected one related product but found %d\n", iCount);
+
+            /* StringList::Item */
+            memset(szString, 0, sizeof(szString));
+            hr = StringList_Item(pStringList, 0, szString);
+            ok(SUCCEEDED(hr), "StringList_Item failed (idx 0, count %d), hresult 0x%08x\n", iCount, hr);
+            ok_w2("StringList_Item returned %s but expected %s\n", szString, szProductCode);
+
+            IDispatch_Release(pStringList);
+        }
+    }
+
     /* Check & clean up installed files & registry keys */
     ok(delete_pf("msitest\\cabout\\new\\five.txt", TRUE), "File not installed\n");
     ok(delete_pf("msitest\\cabout\\new", FALSE), "File not installed\n");
@@ -1735,7 +1775,7 @@ static void test_Installer(void)
     HRESULT hr;
     UINT len;
     IDispatch *pSession = NULL, *pRecord = NULL, *pStringList = NULL;
-    int iValue;
+    int iValue, iCount;
 
     if (!pInstaller) return;
 
@@ -1811,7 +1851,7 @@ static void test_Installer(void)
     ok(SUCCEEDED(hr), "Installer_Products failed, hresult 0x%08x\n", hr);
     if (SUCCEEDED(hr))
     {
-        int iCount = 0, idx;
+        int idx;
 
         /* StringList::Count */
         hr = StringList_Count(pStringList, &iCount);
@@ -1848,6 +1888,21 @@ static void test_Installer(void)
     if (SUCCEEDED(hr))
         ok(iValue == INSTALLSTATE_UNKNOWN, "Installer_ProductState returned %d, expected %d\n", iValue, INSTALLSTATE_UNKNOWN);
 
+    /* Installer::RelatedProducts for our upgrade code, should not find anything */
+    todo_wine {
+        hr = Installer_RelatedProducts(szUpgradeCode, &pStringList);
+        ok(SUCCEEDED(hr), "Installer_RelatedProducts failed, hresult 0x%08x\n", hr);
+        if (SUCCEEDED(hr))
+        {
+            /* StringList::Count */
+            hr = StringList_Count(pStringList, &iCount);
+            ok(SUCCEEDED(hr), "StringList_Count failed, hresult 0x%08x\n", hr);
+            ok(!iCount, "Expected no related products but found %d\n", iCount);
+
+            IDispatch_Release(pStringList);
+        }
+    }
+
     /* Installer::Version */
     todo_wine {
         memset(szPath, 0, sizeof(szPath));




More information about the wine-cvs mailing list