- /* call DoSomething with optional argument set to VT_EMPTY */
- VariantInit(&vararg[0]);
- VariantInit(&vararg[1]);
- VariantInit(&vararg[2]);
- V_VT(&vararg[2]) = VT_R8;
- V_R8(&vararg[2]) = 3.141;
- dispparams.cNamedArgs = 0;
- dispparams.cArgs = 3;
- dispparams.rgdispidNamedArgs = NULL;
- dispparams.rgvarg = vararg;
- VariantInit(&varresult);
- hr = IDispatch_Invoke(pDispatch, DISPID_TM_DOSOMETHING, &IID_NULL, LOCALE_NEUTRAL, DISPATCH_METHOD, &dispparams, &varresult, &excepinfo, NULL);
- ok_ole_success(hr, IDispatch_Invoke);
- ok(V_VT(&varresult) == VT_EMPTY, "varresult should be VT_EMPTY\n");
- VariantClear(&varresult);
-
- /* call DoSomething with optional arguments set to VT_ERROR/DISP_E_PARAMNOTFOUND */
- VariantInit(&vararg[0]);
- VariantInit(&vararg[1]);
- VariantInit(&vararg[2]);
- VariantInit(&vararg[3]);
- V_VT(&vararg[3]) = VT_R8;
- V_R8(&vararg[3]) = 3.141;
- V_VT(&vararg[1]) = VT_ERROR;
- V_ERROR(&vararg[1]) = DISP_E_PARAMNOTFOUND;
- V_VT(&vararg[0]) = VT_ERROR;
- V_ERROR(&vararg[0]) = DISP_E_PARAMNOTFOUND;
- dispparams.cNamedArgs = 0;
- dispparams.cArgs = 4;
- dispparams.rgdispidNamedArgs = NULL;
- dispparams.rgvarg = vararg;
- VariantInit(&varresult);
- hr = IDispatch_Invoke(pDispatch, DISPID_TM_DOSOMETHING, &IID_NULL, LOCALE_NEUTRAL, DISPATCH_METHOD, &dispparams, &varresult, &excepinfo, NULL);
- ok_ole_success(hr, IDispatch_Invoke);
- ok(V_VT(&varresult) == VT_EMPTY, "varresult should be VT_EMPTY\n");
- VariantClear(&varresult);
-