Misha Koshelev : msi/tests: automation:
Integrate test_createrecord_and_version properly.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri May 4 07:11:11 CDT 2007
Module: wine
Branch: master
Commit: d49b251db9f2b9785c4693366893ffb2aa4c5abf
URL: http://source.winehq.org/git/wine.git/?a=commit;h=d49b251db9f2b9785c4693366893ffb2aa4c5abf
Author: Misha Koshelev <mk144210 at bcm.edu>
Date: Thu May 3 19:02:31 2007 -0500
msi/tests: automation: Integrate test_createrecord_and_version properly.
---
dlls/msi/tests/automation.c | 139 +++++++++++++++++++++----------------------
1 files changed, 68 insertions(+), 71 deletions(-)
diff --git a/dlls/msi/tests/automation.c b/dlls/msi/tests/automation.c
index 0340148..c84c54b 100644
--- a/dlls/msi/tests/automation.c
+++ b/dlls/msi/tests/automation.c
@@ -400,74 +400,6 @@ static void test_dispid(void)
}
}
-/* FIXME: This should be integrated better into the rest of the tests */
-static void test_createrecord_and_version(void)
-{
- IDispatch *record = NULL;
- DISPPARAMS param;
- VARIANTARG varg;
- VARIANT result;
- DISPID dispid;
- DISPID arg;
- HRESULT r;
-
- arg = 0;
-
- V_UINT(&varg) = 1;
- V_VT(&varg) = VT_I4;
-
- param.cArgs = 1;
- param.cNamedArgs = 0;
- param.rgvarg = &varg;
- param.rgdispidNamedArgs = &arg;
-
- dispid = get_dispid( pInstaller, "CreateRecord" );
-
- r = IDispatch_Invoke( pInstaller, dispid, &IID_NULL, 0,
- DISPATCH_METHOD, ¶m, &result, NULL, NULL);
- todo_wine ok( r == S_OK, "dispatch failed %08x\n", r);
- if (SUCCEEDED(r))
- {
- ok( V_VT(&result) == VT_DISPATCH, "type wrong\n");
-
- record = V_DISPATCH(&result);
-
- memset( &result, 0, sizeof result );
- dispid = get_dispid( record, "FieldCount" );
-
- param.cArgs = 0;
- param.cNamedArgs = 0;
- param.rgvarg = &varg;
- param.rgdispidNamedArgs = &arg;
-
- r = IDispatch_Invoke( record, dispid, &IID_NULL, 0,
- DISPATCH_PROPERTYGET, ¶m, &result, NULL, NULL );
- ok( r == S_OK, "dispatch failed %08x\n", r);
-
- ok( V_VT(&result) == VT_I4, "type wrong\n");
- ok( V_I4(&result) == 1, "field count wrong\n");
-
- IDispatch_Release( record );
- }
- else
- skip( "failed to create record\n");
-
- memset( &result, 0, sizeof result );
- dispid = get_dispid( pInstaller, "Version" );
-
- param.cArgs = 0;
- param.cNamedArgs = 0;
- param.rgvarg = &varg;
- param.rgdispidNamedArgs = &arg;
-
- r = IDispatch_Invoke( pInstaller, dispid, &IID_NULL, 0,
- DISPATCH_PROPERTYGET, ¶m, &result, NULL, NULL );
- todo_wine {
- ok( r == S_OK, "dispatch failed %08x\n", r);
- ok( V_VT(&result) == VT_BSTR, "type wrong %d\n", V_VT(&result));
- }
-}
-
/* Test basic IDispatch functions */
static void test_dispatch(void)
{
@@ -534,6 +466,9 @@ static HRESULT invoke(IDispatch *pDispatch, LPCSTR szName, WORD wFlags, DISPPARA
int i;
UINT len;
+ memset(pVarResult, 0, sizeof(VARIANT));
+ VariantInit(pVarResult);
+
len = MultiByteToWideChar(CP_ACP, 0, szName, -1, NULL, 0 );
name = HeapAlloc(GetProcessHeap(), 0, len*sizeof(WCHAR) );
if (!name) return E_FAIL;
@@ -543,7 +478,6 @@ static HRESULT invoke(IDispatch *pDispatch, LPCSTR szName, WORD wFlags, DISPPARA
ok(SUCCEEDED(hr), "IDispatch::GetIDsOfNames returned 0x%08x\n", hr);
if (!SUCCEEDED(hr)) return hr;
- VariantInit(pVarResult);
memset(&excepinfo, 0, sizeof(excepinfo));
hr = IDispatch_Invoke(pDispatch, dispid, &IID_NULL, LOCALE_NEUTRAL, wFlags, pDispParams, pVarResult, &excepinfo, NULL);
@@ -565,6 +499,22 @@ static HRESULT invoke(IDispatch *pDispatch, LPCSTR szName, WORD wFlags, DISPPARA
/* Object_Property helper functions */
+static HRESULT Installer_CreateRecord(int count, IDispatch **pRecord)
+{
+ VARIANT varresult;
+ VARIANTARG vararg[1];
+ DISPPARAMS dispparams = {vararg, NULL, sizeof(vararg)/sizeof(VARIANTARG), 0};
+ HRESULT hr;
+
+ VariantInit(&vararg[0]);
+ V_VT(&vararg[0]) = VT_I4;
+ V_I4(&vararg[0]) = count;
+
+ hr = invoke(pInstaller, "CreateRecord", DISPATCH_METHOD, &dispparams, &varresult, VT_DISPATCH);
+ *pRecord = V_DISPATCH(&varresult);
+ return hr;
+}
+
static HRESULT Installer_OpenPackage(LPCWSTR szPackagePath, int options, IDispatch **pSession)
{
VARIANT varresult;
@@ -584,6 +534,18 @@ static HRESULT Installer_OpenPackage(LPCWSTR szPackagePath, int options, IDispat
return hr;
}
+static HRESULT Installer_VersionGet(LPCWSTR szVersion)
+{
+ VARIANT varresult;
+ DISPPARAMS dispparams = {NULL, NULL, 0, 0};
+ HRESULT hr;
+
+ hr = invoke(pInstaller, "Version", DISPATCH_PROPERTYGET, &dispparams, &varresult, VT_BSTR);
+ lstrcpyW((WCHAR *)szVersion, V_BSTR(&varresult));
+ VariantClear(&varresult);
+ return hr;
+}
+
static HRESULT Session_PropertyGet(IDispatch *pSession, LPCWSTR szName, LPCWSTR szReturn)
{
VARIANT varresult;
@@ -801,6 +763,16 @@ static HRESULT View_Close(IDispatch *pView)
return invoke(pView, "Close", DISPATCH_METHOD, &dispparams, &varresult, VT_EMPTY);
}
+static HRESULT Record_FieldCountGet(IDispatch *pRecord, int *pFieldCount)
+{
+ VARIANT varresult;
+ DISPPARAMS dispparams = {NULL, NULL, 0, 0};
+ HRESULT hr = invoke(pRecord, "FieldCount", DISPATCH_PROPERTYGET, &dispparams, &varresult, VT_I4);
+ *pFieldCount = V_I4(&varresult);
+ VariantClear(&varresult);
+ return hr;
+}
+
static HRESULT Record_StringDataGet(IDispatch *pRecord, int iField, LPCWSTR szString)
{
VARIANT varresult;
@@ -1013,10 +985,29 @@ static void test_Installer(void)
WCHAR szPath[MAX_PATH];
HRESULT hr;
UINT len;
- IDispatch *pSession = NULL;
+ IDispatch *pSession = NULL, *pRecord = NULL;
if (!pInstaller) return;
+ /* Installer::CreateRecord */
+ todo_wine {
+ hr = Installer_CreateRecord(1, &pRecord);
+ ok(SUCCEEDED(hr), "Installer_CreateRecord failed, hresult 0x%08x\n", hr);
+ ok(pRecord != NULL, "Installer_CreateRecord should not have returned NULL record\n");
+ }
+ if (pRecord)
+ {
+ int iFieldCount = 0;
+
+ /* Record::FieldCountGet */
+ hr = Record_FieldCountGet(pRecord, &iFieldCount);
+ ok(SUCCEEDED(hr), "Record_FiledCountGet failed, hresult 0x%08x\n", hr);
+ ok(iFieldCount == 1, "Record_FieldCountGet result was %d but expected 1\n", iFieldCount);
+
+ IDispatch_Release(pRecord);
+ }
+
+ /* Prepare package */
create_database(msifile, tables, sizeof(tables) / sizeof(msi_table));
len = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, CURR_DIR, -1, szPath, MAX_PATH);
@@ -1036,6 +1027,13 @@ static void test_Installer(void)
}
DeleteFileA(msifile);
+
+ /* Installer::Version */
+ todo_wine {
+ memset(szPath, 0, sizeof(szPath));
+ hr = Installer_VersionGet(szPath);
+ ok(SUCCEEDED(hr), "Installer_VersionGet failed, hresult 0x%08x\n", hr);
+ }
}
START_TEST(automation)
@@ -1069,7 +1067,6 @@ START_TEST(automation)
ok (SUCCEEDED(hr), "IUnknown::QueryInterface returned 0x%08x\n", hr);
test_dispid();
- test_createrecord_and_version();
test_dispatch();
test_Installer();
More information about the wine-cvs
mailing list