Misha Koshelev : msi/tests: automation: Add tests for SummaryInfo::Property , put.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Jun 5 05:48:15 CDT 2007


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

Author: Misha Koshelev <mk144210 at bcm.edu>
Date:   Mon Jun  4 09:26:42 2007 -0500

msi/tests: automation: Add tests for SummaryInfo::Property, put.

---

 dlls/msi/tests/automation.c |   88 ++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 82 insertions(+), 6 deletions(-)

diff --git a/dlls/msi/tests/automation.c b/dlls/msi/tests/automation.c
index 2c29c6d..ad96503 100644
--- a/dlls/msi/tests/automation.c
+++ b/dlls/msi/tests/automation.c
@@ -1280,12 +1280,32 @@ static HRESULT SummaryInfo_PropertyGet(IDispatch *pSummaryInfo, int pid, VARIANT
     return invoke(pSummaryInfo, "Property", DISPATCH_PROPERTYGET, &dispparams, pVarResult, vtExpect);
 }
 
+static HRESULT SummaryInfo_PropertyPut(IDispatch *pSummaryInfo, int pid, VARIANT *pVariant)
+{
+    VARIANT varresult;
+    VARIANTARG vararg[2];
+    DISPID dispid = DISPID_PROPERTYPUT;
+    DISPPARAMS dispparams = {vararg, &dispid, sizeof(vararg)/sizeof(VARIANTARG), 1};
+
+    VariantInit(&vararg[1]);
+    V_VT(&vararg[1]) = VT_I4;
+    V_I4(&vararg[1]) = pid;
+    VariantInit(&vararg[0]);
+    VariantCopyInd(vararg, pVariant);
+
+    return invoke(pSummaryInfo, "Property", DISPATCH_PROPERTYPUT, &dispparams, &varresult, VT_EMPTY);
+}
+
 /* Test the various objects */
 
+#define TEST_SUMMARYINFO_PROPERTIES_MODIFIED 4
+
 static void test_SummaryInfo(IDispatch *pSummaryInfo, const msi_summary_info *info, int num_info, BOOL readonly)
 {
     static const WCHAR szPropertyException[] = { 'P','r','o','p','e','r','t','y',',','P','i','d',0 };
-    VARIANT varresult;
+    static const WCHAR szTitle[] = { 'T','i','t','l','e',0 };
+    VARIANT varresult, var;
+    SYSTEMTIME st;
     HRESULT hr;
     int j;
 
@@ -1297,20 +1317,17 @@ static void test_SummaryInfo(IDispatch *pSummaryInfo, const msi_summary_info *in
         int vt = entry->datatype;
         if (vt == VT_LPSTR) vt = VT_BSTR;
         else if (vt == VT_FILETIME) vt = VT_DATE;
+        else if (vt == VT_I2) vt = VT_I4;
 
         hr = SummaryInfo_PropertyGet(pSummaryInfo, entry->property, &varresult, vt);
         ok(hr == S_OK, "SummaryInfo_Property (pid %d) failed, hresult 0x%08x\n", entry->property, hr);
         if (V_VT(&varresult) != vt)
             skip("Skipping property tests due to type mismatch\n");
-        else if (vt == VT_I2)
-            ok(V_I2(&varresult) == entry->iValue, "SummaryInfo_Property (pid %d) I2 result expected to be %d, but was %d\n",
-               entry->property, entry->iValue, V_I2(&varresult));
         else if (vt == VT_I4)
             ok(V_I4(&varresult) == entry->iValue, "SummaryInfo_Property (pid %d) I4 result expected to be %d, but was %d\n",
                entry->property, entry->iValue, V_I4(&varresult));
         else if (vt == VT_DATE)
         {
-            SYSTEMTIME st;
             FILETIME ft;
             DATE d;
 
@@ -1357,6 +1374,65 @@ static void test_SummaryInfo(IDispatch *pSummaryInfo, const msi_summary_info *in
 
     hr = SummaryInfo_PropertyGet(pSummaryInfo, PID_CHARCOUNT, &varresult, VT_EMPTY);
     ok(hr == S_OK, "SummaryInfo_PropertyGet failed, hresult 0x%08x\n", hr);
+
+    if (!readonly)
+    {
+        /* SummaryInfo::Property, put; one for each type */
+
+        _invoke_todo_vtResult = 1;
+
+        /* VT_I2 */
+        VariantInit(&var);
+        V_VT(&var) = VT_I2;
+        V_I2(&var) = 1;
+        hr = SummaryInfo_PropertyPut(pSummaryInfo, PID_CODEPAGE, &var);
+        todo_wine ok(hr == S_OK, "SummaryInfo_PropertyPut failed, hresult 0x%08x\n", hr);
+
+        hr = SummaryInfo_PropertyGet(pSummaryInfo, PID_CODEPAGE, &varresult, VT_I4 /* NOT VT_I2 */);
+        ok(hr == S_OK, "SummaryInfo_PropertyGet failed, hresult 0x%08x\n", hr);
+        todo_wine ok(V_I2(&var) == V_I2(&varresult), "SummaryInfo_PropertyGet expected %d, but returned %d\n", V_I2(&var), V_I2(&varresult));
+        VariantClear(&varresult);
+        VariantClear(&var);
+
+        /* VT_BSTR */
+        V_VT(&var) = VT_BSTR;
+        V_BSTR(&var) = SysAllocString(szTitle);
+        hr = SummaryInfo_PropertyPut(pSummaryInfo, PID_TITLE, &var);
+        todo_wine ok(hr == S_OK, "SummaryInfo_PropertyPut failed, hresult 0x%08x\n", hr);
+
+        hr = SummaryInfo_PropertyGet(pSummaryInfo, PID_TITLE, &varresult, V_VT(&var));
+        ok(hr == S_OK, "SummaryInfo_PropertyGet failed, hresult 0x%08x\n", hr);
+        todo_wine ok_w2("SummaryInfo_PropertyGet expected %s, but returned %s\n", V_BSTR(&var), V_BSTR(&varresult));
+        VariantClear(&varresult);
+        VariantClear(&var);
+
+        /* VT_DATE */
+        V_VT(&var) = VT_DATE;
+        FileTimeToSystemTime(&systemtime, &st);
+        SystemTimeToVariantTime(&st, &V_DATE(&var));
+        hr = SummaryInfo_PropertyPut(pSummaryInfo, PID_LASTSAVE_DTM, &var);
+        todo_wine ok(hr == S_OK, "SummaryInfo_PropertyPut failed, hresult 0x%08x\n", hr);
+
+        hr = SummaryInfo_PropertyGet(pSummaryInfo, PID_LASTSAVE_DTM, &varresult, V_VT(&var));
+        ok(hr == S_OK, "SummaryInfo_PropertyGet failed, hresult 0x%08x\n", hr);
+        todo_wine ok(V_DATE(&var) == V_DATE(&varresult), "SummaryInfo_PropertyGet expected %lf, but returned %lf\n", V_DATE(&var), V_DATE(&varresult));
+        VariantClear(&varresult);
+        VariantClear(&var);
+
+        /* VT_I4 */
+        V_VT(&var) = VT_I4;
+        V_I4(&var) = 1000;
+        hr = SummaryInfo_PropertyPut(pSummaryInfo, PID_CHARCOUNT, &var);
+        todo_wine ok(hr == S_OK, "SummaryInfo_PropertyPut failed, hresult 0x%08x\n", hr);
+
+        hr = SummaryInfo_PropertyGet(pSummaryInfo, PID_CHARCOUNT, &varresult, V_VT(&var));
+        ok(hr == S_OK, "SummaryInfo_PropertyGet failed, hresult 0x%08x\n", hr);
+        todo_wine ok(V_I4(&var) == V_I4(&varresult), "SummaryInfo_PropertyGet expected %d, but returned %d\n", V_I4(&var), V_I4(&varresult));
+        VariantClear(&varresult);
+        VariantClear(&var);
+
+        _invoke_todo_vtResult = 0;
+    }
 }
 
 static void test_Database(IDispatch *pDatabase, BOOL readonly)
@@ -1464,7 +1540,7 @@ static void test_Database(IDispatch *pDatabase, BOOL readonly)
     }
 
     /* Database::SummaryInformation */
-    hr = Database_SummaryInformation(pDatabase, 0, &pSummaryInfo);
+    hr = Database_SummaryInformation(pDatabase, TEST_SUMMARYINFO_PROPERTIES_MODIFIED, &pSummaryInfo);
     ok(hr == S_OK, "Database_SummaryInformation failed, hresult 0x%08x\n", hr);
     ok(pSummaryInfo != NULL, "Database_SummaryInformation should not have returned NULL record\n");
     if (pSummaryInfo)




More information about the wine-cvs mailing list