Module: wine Branch: master Commit: 462ef66105ef1b2d6a0e54cb96a85921fb84fb43 URL: http://source.winehq.org/git/wine.git/?a=commit;h=462ef66105ef1b2d6a0e54cb96...
Author: Dmitry Timoshkov dmitry@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;