diff --git a/dlls/oleaut32/tests/tmarshal.c b/dlls/oleaut32/tests/tmarshal.c index 80148ff620a..0467e16f8f6 100644 --- a/dlls/oleaut32/tests/tmarshal.c +++ b/dlls/oleaut32/tests/tmarshal.c @@ -562,6 +562,22 @@ static HRESULT WINAPI Widget_get_prop_with_lcid( return S_OK; } +static HRESULT WINAPI Widget_get_prop_int( + IWidget* iface, INT *i) +{ + trace("get_prop_int(%p)\n", i); + *i = -13; + return S_OK; +} + +static HRESULT WINAPI Widget_get_prop_uint( + IWidget* iface, UINT *i) +{ + trace("get_prop_uint(%p)\n", i); + *i = 42; + return S_OK; +} + static const struct IWidgetVtbl Widget_VTable = { Widget_QueryInterface, @@ -591,7 +607,9 @@ static const struct IWidgetVtbl Widget_VTable = Widget_Error, Widget_CloneInterface, Widget_put_prop_with_lcid, - Widget_get_prop_with_lcid + Widget_get_prop_with_lcid, + Widget_get_prop_int, + Widget_get_prop_uint }; static HRESULT WINAPI StaticWidget_QueryInterface(IStaticWidget *iface, REFIID riid, void **ppvObject) @@ -1299,6 +1317,28 @@ todo_wine } VariantClear(&varresult); + /* test propget of INT value */ + dispparams.cNamedArgs = 0; + dispparams.cArgs = 0; + dispparams.rgvarg = NULL; + dispparams.rgdispidNamedArgs = NULL; + hr = IDispatch_Invoke(pDispatch, DISPID_TM_PROP_INT, &IID_NULL, 0x40c, DISPATCH_PROPERTYGET, &dispparams, &varresult, &excepinfo, NULL); + ok_ole_success(hr, ITypeInfo_Invoke); + todo_wine ok(V_VT(&varresult) == VT_I4, "got %x\n", V_VT(&varresult)); + ok(V_I4(&varresult) == -13, "got %x\n", V_I4(&varresult)); + VariantClear(&varresult); + + /* test propget of INT value */ + dispparams.cNamedArgs = 0; + dispparams.cArgs = 0; + dispparams.rgvarg = NULL; + dispparams.rgdispidNamedArgs = NULL; + hr = IDispatch_Invoke(pDispatch, DISPID_TM_PROP_UINT, &IID_NULL, 0x40c, DISPATCH_PROPERTYGET, &dispparams, &varresult, &excepinfo, NULL); + ok_ole_success(hr, ITypeInfo_Invoke); + todo_wine ok(V_VT(&varresult) == VT_UI4, "got %x\n", V_VT(&varresult)); + ok(V_UI4(&varresult) == 42, "got %x\n", V_UI4(&varresult)); + VariantClear(&varresult); + IDispatch_Release(pDispatch); IWidget_Release(pWidget); diff --git a/dlls/oleaut32/tests/tmarshal.idl b/dlls/oleaut32/tests/tmarshal.idl index ddf02b2b975..f9b18b81f9f 100644 --- a/dlls/oleaut32/tests/tmarshal.idl +++ b/dlls/oleaut32/tests/tmarshal.idl @@ -131,6 +131,12 @@ library TestTypelib [id(DISPID_TM_PROP_WITH_LCID), propget] HRESULT prop_with_lcid([in,lcid] long lcid, [out,retval] INT *i); + + [id(DISPID_TM_PROP_INT), propget] + HRESULT prop_int([out,retval] INT *i); + + [id(DISPID_TM_PROP_UINT), propget] + HRESULT prop_uint([out,retval] UINT *i); } [ diff --git a/dlls/oleaut32/tests/tmarshal_dispids.h b/dlls/oleaut32/tests/tmarshal_dispids.h index 10c2828c4fb..08d77360f80 100644 --- a/dlls/oleaut32/tests/tmarshal_dispids.h +++ b/dlls/oleaut32/tests/tmarshal_dispids.h @@ -35,5 +35,7 @@ #define DISPID_TM_TESTDUAL 16 #define DISPID_TM_STRUCTARGS 17 #define DISPID_TM_PROP_WITH_LCID 18 +#define DISPID_TM_PROP_INT 19 +#define DISPID_TM_PROP_UINT 20 #define DISPID_NOA_BSTRRET 1