Module: wine Branch: master Commit: 4b0a6a18b2937b041feec92a2dc32a47a4d220e8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=4b0a6a18b2937b041feec92a2d...
Author: Huw Davies huw@codeweavers.com Date: Wed Jun 17 14:37:52 2009 +0100
oleaut32/tests: Add some tests for [lcid] parameters.
---
dlls/oleaut32/tests/tmarshal.c | 53 +++++++++++++++++++++++++++++++- dlls/oleaut32/tests/tmarshal.idl | 6 +++ dlls/oleaut32/tests/tmarshal_dispids.h | 1 + 3 files changed, 59 insertions(+), 1 deletions(-)
diff --git a/dlls/oleaut32/tests/tmarshal.c b/dlls/oleaut32/tests/tmarshal.c index 2d23b48..ec23204 100644 --- a/dlls/oleaut32/tests/tmarshal.c +++ b/dlls/oleaut32/tests/tmarshal.c @@ -624,6 +624,24 @@ static HRESULT WINAPI Widget_CloneInterface( return S_OK; }
+static HRESULT WINAPI Widget_put_prop_with_lcid( + IWidget* iface, LONG lcid, INT i) +{ + trace("put_prop_with_lcid(%08x, %x)\n", lcid, i); + ok(lcid == MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), "got lcid %08x\n", lcid); + ok(i == 0xcafe, "got %08x\n", i); + return S_OK; +} + +static HRESULT WINAPI Widget_get_prop_with_lcid( + IWidget* iface, LONG lcid, INT *i) +{ + trace("get_prop_with_lcid(%08x, %p)\n", lcid, i); + ok(lcid == MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), "got lcid %08x\n", lcid); + *i = lcid; + return S_OK; +} + static const struct IWidgetVtbl Widget_VTable = { Widget_QueryInterface, @@ -651,7 +669,9 @@ static const struct IWidgetVtbl Widget_VTable = Widget_VarArg, Widget_StructArgs, Widget_Error, - Widget_CloneInterface + Widget_CloneInterface, + Widget_put_prop_with_lcid, + Widget_get_prop_with_lcid };
static HRESULT WINAPI StaticWidget_QueryInterface(IStaticWidget *iface, REFIID riid, void **ppvObject) @@ -1328,6 +1348,37 @@ static void test_typelibmarshal(void) hr = IDispatch_Invoke(pDispatch, DISPID_TM_STATE, &IID_NULL, LOCALE_NEUTRAL, DISPATCH_PROPERTYGET, &dispparams, &varresult, &excepinfo, NULL); ok(hr == DISP_E_NOTACOLLECTION, "IDispatch_Invoke should have returned DISP_E_NOTACOLLECTION instead of 0x%08x\n", hr);
+ /* test propput with lcid */ + + /* the lcid passed to the function is the first lcid in the typelib header. + Since we don't explicitly set an lcid in the idl, it'll default to US English. */ + VariantInit(&vararg[0]); + V_VT(&vararg[0]) = VT_I4; + V_I4(&vararg[0]) = 0xcafe; + dispparams.cNamedArgs = 1; + dispparams.rgdispidNamedArgs = &dispidNamed; + dispparams.cArgs = 1; + dispparams.rgvarg = vararg; + VariantInit(&varresult); + hr = IDispatch_Invoke(pDispatch, DISPID_TM_PROP_WITH_LCID, &IID_NULL, 0x40c, DISPATCH_PROPERTYPUT, &dispparams, &varresult, &excepinfo, NULL); +todo_wine + ok_ole_success(hr, ITypeInfo_Invoke); + VariantClear(&varresult); + + /* test propget with lcid */ + dispparams.cNamedArgs = 0; + dispparams.cArgs = 0; + dispparams.rgvarg = NULL; + dispparams.rgdispidNamedArgs = NULL; + hr = IDispatch_Invoke(pDispatch, DISPID_TM_PROP_WITH_LCID, &IID_NULL, 0x40c, DISPATCH_PROPERTYGET, &dispparams, &varresult, &excepinfo, NULL); +todo_wine +{ + ok_ole_success(hr, ITypeInfo_Invoke); + ok(V_VT(&varresult) == VT_I4, "got %x\n", V_VT(&varresult)); + ok(V_I4(&varresult) == 0x409, "got %x\n", V_I4(&varresult)); +} + VariantClear(&varresult); + IDispatch_Release(pDispatch); IWidget_Release(pWidget);
diff --git a/dlls/oleaut32/tests/tmarshal.idl b/dlls/oleaut32/tests/tmarshal.idl index 2b57ddd..ddf02b2 100644 --- a/dlls/oleaut32/tests/tmarshal.idl +++ b/dlls/oleaut32/tests/tmarshal.idl @@ -125,6 +125,12 @@ library TestTypelib
[propget, id(DISPID_TM_CLONEINTERFACE)] HRESULT CloneInterface([out, retval] ISomethingFromDispatch **ppVal); + + [id(DISPID_TM_PROP_WITH_LCID), propput] + HRESULT prop_with_lcid([in,lcid] long lcid, [in] INT i); + + [id(DISPID_TM_PROP_WITH_LCID), propget] + HRESULT prop_with_lcid([in,lcid] long lcid, [out,retval] INT *i); }
[ diff --git a/dlls/oleaut32/tests/tmarshal_dispids.h b/dlls/oleaut32/tests/tmarshal_dispids.h index 8fcf109..10c2828 100644 --- a/dlls/oleaut32/tests/tmarshal_dispids.h +++ b/dlls/oleaut32/tests/tmarshal_dispids.h @@ -34,5 +34,6 @@ #define DISPID_TM_CLONEINTERFACE 15 #define DISPID_TM_TESTDUAL 16 #define DISPID_TM_STRUCTARGS 17 +#define DISPID_TM_PROP_WITH_LCID 18
#define DISPID_NOA_BSTRRET 1