Dmitry Timoshkov : oleaut32/tests: Add a test to show that support for coercion to arrays of variants is specific to vararg methods.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Sep 10 08:07:53 CDT 2015
Module: wine
Branch: master
Commit: 462ef66105ef1b2d6a0e54cb96a85921fb84fb43
URL: http://source.winehq.org/git/wine.git/?a=commit;h=462ef66105ef1b2d6a0e54cb96a85921fb84fb43
Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date: Thu Sep 10 15:17:10 2015 +0800
oleaut32/tests: Add a test to show that support for coercion to arrays of variants is specific to vararg methods.
---
dlls/oleaut32/tests/tmarshal.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/dlls/oleaut32/tests/tmarshal.c b/dlls/oleaut32/tests/tmarshal.c
index d200785..488c0d7 100644
--- a/dlls/oleaut32/tests/tmarshal.c
+++ b/dlls/oleaut32/tests/tmarshal.c
@@ -1534,6 +1534,30 @@ static void test_typelibmarshal(void)
ok_ole_success(hr, IDispatch_Invoke);
VariantClear(&varresult);
+ /* call Array with BSTR argument - type mismatch */
+ VariantInit(&vararg[0]);
+ V_VT(&vararg[0]) = VT_BSTR;
+ V_BSTR(&vararg[0]) = SysAllocString(szSuperman);
+ dispparams.cNamedArgs = 0;
+ dispparams.cArgs = 1;
+ dispparams.rgdispidNamedArgs = NULL;
+ dispparams.rgvarg = vararg;
+ hr = IDispatch_Invoke(pDispatch, DISPID_TM_ARRAY, &IID_NULL, LOCALE_NEUTRAL, DISPATCH_METHOD, &dispparams, NULL, NULL, NULL);
+ ok(hr == DISP_E_TYPEMISMATCH || hr == DISP_E_BADVARTYPE, "expected DISP_E_TYPEMISMATCH, got %#x\n", hr);
+ SysFreeString(V_BSTR(&vararg[0]));
+
+ /* call ArrayPtr with BSTR argument - type mismatch */
+ VariantInit(&vararg[0]);
+ V_VT(&vararg[0]) = VT_BSTR;
+ V_BSTR(&vararg[0]) = SysAllocString(szSuperman);
+ dispparams.cNamedArgs = 0;
+ dispparams.cArgs = 1;
+ dispparams.rgdispidNamedArgs = NULL;
+ dispparams.rgvarg = vararg;
+ hr = IDispatch_Invoke(pDispatch, DISPID_TM_VARARRAYPTR, &IID_NULL, LOCALE_NEUTRAL, DISPATCH_METHOD, &dispparams, NULL, NULL, NULL);
+ ok(hr == DISP_E_TYPEMISMATCH || hr == DISP_E_BADVARTYPE, "expected DISP_E_TYPEMISMATCH, got %#x\n", hr);
+ SysFreeString(V_BSTR(&vararg[0]));
+
/* call VariantCArray - test marshaling of variant arrays */
V_VT(&vararg[0]) = VT_I4;
V_I4(&vararg[0]) = 1;
More information about the wine-cvs
mailing list