Jacek Caban : scrobj/tests: Add property element tests.
Alexandre Julliard
julliard at winehq.org
Wed Sep 25 16:45:19 CDT 2019
Module: wine
Branch: master
Commit: 3013d5d1e7dec454077b95f680e6d4507c70226f
URL: https://source.winehq.org/git/wine.git/?a=commit;h=3013d5d1e7dec454077b95f680e6d4507c70226f
Author: Jacek Caban <jacek at codeweavers.com>
Date: Wed Sep 25 19:22:40 2019 +0200
scrobj/tests: Add property element tests.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/scrobj/tests/scrobj.c | 125 +++++++++++++++++++++++++++++++++++++++----
dlls/scrobj/tests/scrobj.wsc | 8 +--
2 files changed, 119 insertions(+), 14 deletions(-)
diff --git a/dlls/scrobj/tests/scrobj.c b/dlls/scrobj/tests/scrobj.c
index 709f005080..e0a3ace708 100644
--- a/dlls/scrobj/tests/scrobj.c
+++ b/dlls/scrobj/tests/scrobj.c
@@ -106,9 +106,15 @@ DEFINE_EXPECT(Clone);
DEFINE_EXPECT(GetScriptDispatch);
DEFINE_EXPECT(GetDispID_vbAddOne);
DEFINE_EXPECT(GetDispID_wtTest);
+DEFINE_EXPECT(GetDispID_get_gsProp);
+DEFINE_EXPECT(GetDispID_put_gsProp);
DEFINE_EXPECT(InvokeEx);
+DEFINE_EXPECT(InvokeEx_get_gsProp);
+DEFINE_EXPECT(InvokeEx_put_gsProp);
-#define DISPID_WTTEST 100
+#define DISPID_WTTEST 100
+#define DISPID_GET_GSPROP 101
+#define DISPID_PUT_GSPROP 102
static DWORD parse_flags;
static BOOL support_clone;
@@ -182,6 +188,20 @@ static HRESULT WINAPI DispatchEx_GetDispID(IDispatchEx *iface, BSTR name, DWORD
*pid = DISPID_WTTEST;
return S_OK;
}
+ if (!wcscmp(name, L"get_gsProp"))
+ {
+ CHECK_EXPECT(GetDispID_get_gsProp);
+ ok(!grfdex, "grfdex = %x\n", grfdex);
+ *pid = DISPID_GET_GSPROP;
+ return S_OK;
+ }
+ if (!wcscmp(name, L"put_gsProp"))
+ {
+ CHECK_EXPECT(GetDispID_put_gsProp);
+ ok(!grfdex, "grfdex = %x\n", grfdex);
+ *pid = DISPID_PUT_GSPROP;
+ return S_OK;
+ }
ok(0, "unexpected name %s\n", wine_dbgstr_w(name));
return DISP_E_UNKNOWNNAME;
}
@@ -189,14 +209,35 @@ static HRESULT WINAPI DispatchEx_GetDispID(IDispatchEx *iface, BSTR name, DWORD
static HRESULT WINAPI DispatchEx_InvokeEx(IDispatchEx *iface, DISPID id, LCID lcid, WORD flags, DISPPARAMS *pdp,
VARIANT *res, EXCEPINFO *pei, IServiceProvider *caller)
{
- CHECK_EXPECT(InvokeEx);
- ok(id == DISPID_WTTEST, "id = %u\n", id);
- ok(lcid == 0x100, "lcid = %x\n", lcid);
- ok(flags == DISPATCH_METHOD, "flags = %x\n", flags);
- ok(caller == (void*)0xdeadbeef, "called = %p\n", caller);
- V_VT(res) = VT_BOOL;
- V_BOOL(res) = VARIANT_TRUE;
- return S_OK;
+ switch (id)
+ {
+ case DISPID_WTTEST:
+ CHECK_EXPECT(InvokeEx);
+ ok(lcid == 0x100, "lcid = %x\n", lcid);
+ ok(flags == DISPATCH_METHOD, "flags = %x\n", flags);
+ ok(caller == (void*)0xdeadbeef, "called = %p\n", caller);
+ V_VT(res) = VT_BOOL;
+ V_BOOL(res) = VARIANT_TRUE;
+ return S_OK;
+ case DISPID_GET_GSPROP:
+ CHECK_EXPECT(InvokeEx_get_gsProp);
+ ok(flags == DISPATCH_METHOD, "flags = %x\n", flags);
+ ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs);
+ V_VT(res) = VT_BOOL;
+ V_BOOL(res) = VARIANT_TRUE;
+ return S_OK;
+ case DISPID_PUT_GSPROP:
+ CHECK_EXPECT(InvokeEx_put_gsProp);
+ ok(flags == DISPATCH_METHOD, "flags = %x\n", flags);
+ ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs);
+ ok(pdp->cNamedArgs == 0, "cNamedArgs = %d\n", pdp->cNamedArgs);
+ V_VT(res) = VT_BOOL;
+ V_BOOL(res) = VARIANT_FALSE;
+ return S_OK;
+ }
+
+ ok(0, "unexpected id %u\n", id);
+ return E_FAIL;
}
static HRESULT WINAPI DispatchEx_DeleteMemberByName(IDispatchEx *iface, BSTR name, DWORD grfdex)
@@ -530,6 +571,8 @@ static HRESULT WINAPI ActiveScript_Clone(IActiveScript *iface, IActiveScript **p
SET_EXPECT(GetScriptDispatch);
SET_EXPECT(GetDispID_vbAddOne);
SET_EXPECT(GetDispID_wtTest);
+ SET_EXPECT(GetDispID_get_gsProp);
+ SET_EXPECT(GetDispID_put_gsProp);
SET_EXPECT(SetScriptState_STARTED);
SET_EXPECT(ParseScriptText);
@@ -746,7 +789,8 @@ static void register_script_object(BOOL do_register, const WCHAR *file_name)
static void test_create_object(void)
{
- DISPID vb_add_one_id, js_add_two_id, wt_test_id, id;
+ DISPID vb_add_one_id, js_add_two_id, wt_test_id, wt_gsprop_id, id;
+ DISPID id_propput = DISPID_PROPERTYPUT;
IDispatchEx *dispex;
IClassFactory *cf;
IDispatch *disp;
@@ -791,6 +835,10 @@ static void test_create_object(void)
CHECK_CALLED(GetDispID_vbAddOne);
todo_wine
CHECK_CALLED(GetDispID_wtTest);
+ todo_wine
+ CHECK_CALLED(GetDispID_get_gsProp);
+ todo_wine
+ CHECK_CALLED(GetDispID_put_gsProp);
CHECK_CALLED(SetScriptState_STARTED);
CHECK_CALLED(ParseScriptText);
@@ -820,6 +868,12 @@ static void test_create_object(void)
ok(hres == S_OK, "Could not get wtTest id: %08x\n", hres);
SysFreeString(str);
+ str = SysAllocString(L"gsProp");
+ hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseSensitive, &wt_gsprop_id);
+ todo_wine
+ ok(hres == S_OK, "Could not get wtTest id: %08x\n", hres);
+ SysFreeString(str);
+
str = SysAllocString(L"vbaddone");
hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseSensitive, &id);
todo_wine
@@ -902,6 +956,44 @@ static void test_create_object(void)
todo_wine
ok(V_BOOL(&r) == VARIANT_TRUE, "V_I4(r) = %d\n", V_I4(&r));
+ memset(&ei, 0, sizeof(ei));
+ memset(&dp, 0, sizeof(dp));
+ V_VT(&v) = VT_I4;
+ V_I4(&v) = 4;
+ V_VT(&r) = VT_ERROR;
+ dp.cArgs = 1;
+ dp.rgvarg = &v;
+ SET_EXPECT(InvokeEx_get_gsProp);
+ hres = IDispatchEx_InvokeEx(dispex, wt_gsprop_id, 0, DISPATCH_PROPERTYGET|DISPATCH_METHOD, &dp, &r, &ei, NULL);
+ todo_wine
+ ok(hres == S_OK, "InvokeEx failed: %08x\n", hres);
+ todo_wine
+ CHECK_CALLED(InvokeEx_get_gsProp);
+ todo_wine
+ ok(V_VT(&r) == VT_BOOL, "V_VT(r) = %d\n", V_VT(&r));
+ todo_wine
+ ok(V_BOOL(&r) == VARIANT_TRUE, "V_I4(r) = %d\n", V_I4(&r));
+
+ memset(&ei, 0, sizeof(ei));
+ memset(&dp, 0, sizeof(dp));
+ V_VT(&v) = VT_I4;
+ V_I4(&v) = 4;
+ V_VT(&r) = VT_ERROR;
+ dp.cArgs = 1;
+ dp.rgdispidNamedArgs = &id_propput;
+ dp.rgvarg = &v;
+ dp.cNamedArgs = 1;
+ SET_EXPECT(InvokeEx_put_gsProp);
+ hres = IDispatchEx_InvokeEx(dispex, wt_gsprop_id, 0, DISPATCH_PROPERTYPUT, &dp, &r, &ei, NULL);
+ todo_wine
+ ok(hres == S_OK, "InvokeEx failed: %08x\n", hres);
+ todo_wine
+ CHECK_CALLED(InvokeEx_put_gsProp);
+ todo_wine
+ ok(V_VT(&r) == VT_BOOL, "V_VT(r) = %d\n", V_VT(&r));
+ todo_wine
+ ok(V_BOOL(&r) == VARIANT_FALSE, "V_I4(r) = %d\n", V_I4(&r));
+
hres = IDispatchEx_InvokeEx(dispex, wt_test_id, 0x100, DISPATCH_PROPERTYGET, &dp, &r, &ei, (void*)0xdeadbeef);
ok(hres == DISP_E_MEMBERNOTFOUND, "InvokeEx returned: %08x\n", hres);
@@ -914,7 +1006,6 @@ static void test_create_object(void)
IDispatchEx_Release(dispex);
SET_EXPECT(SetScriptState_UNINITIALIZED);
- todo_wine
SET_EXPECT(Close);
IUnknown_Release(unk);
CHECK_CALLED(SetScriptState_UNINITIALIZED);
@@ -932,6 +1023,8 @@ static void test_create_object(void)
SET_EXPECT(GetScriptDispatch);
SET_EXPECT(GetDispID_vbAddOne);
SET_EXPECT(GetDispID_wtTest);
+ SET_EXPECT(GetDispID_get_gsProp);
+ SET_EXPECT(GetDispID_put_gsProp);
SET_EXPECT(SetScriptState_STARTED);
SET_EXPECT(ParseScriptText);
hres = IClassFactory_CreateInstance(cf, NULL, &IID_IUnknown, (void**)&unk);
@@ -949,6 +1042,10 @@ static void test_create_object(void)
CHECK_CALLED(GetDispID_vbAddOne);
todo_wine
CHECK_CALLED(GetDispID_wtTest);
+ todo_wine
+ CHECK_CALLED(GetDispID_get_gsProp);
+ todo_wine
+ CHECK_CALLED(GetDispID_put_gsProp);
CHECK_CALLED(SetScriptState_STARTED);
CHECK_CALLED(ParseScriptText);
@@ -967,6 +1064,8 @@ static void test_create_object(void)
SET_EXPECT(GetScriptDispatch);
SET_EXPECT(GetDispID_vbAddOne);
SET_EXPECT(GetDispID_wtTest);
+ SET_EXPECT(GetDispID_get_gsProp);
+ SET_EXPECT(GetDispID_put_gsProp);
SET_EXPECT(SetScriptState_STARTED);
hres = IClassFactory_CreateInstance(cf, NULL, &IID_IUnknown, (void**)&unk);
ok(hres == S_OK, "Could not create scriptlet instance: %08x\n", hres);
@@ -981,6 +1080,10 @@ static void test_create_object(void)
CHECK_CALLED(GetDispID_vbAddOne);
todo_wine
CHECK_CALLED(GetDispID_wtTest);
+ todo_wine
+ CHECK_CALLED(GetDispID_get_gsProp);
+ todo_wine
+ CHECK_CALLED(GetDispID_put_gsProp);
CHECK_CALLED(SetScriptState_STARTED);
SET_EXPECT(SetScriptState_UNINITIALIZED);
diff --git a/dlls/scrobj/tests/scrobj.wsc b/dlls/scrobj/tests/scrobj.wsc
index 41c7626cee..4cc4224dd7 100644
--- a/dlls/scrobj/tests/scrobj.wsc
+++ b/dlls/scrobj/tests/scrobj.wsc
@@ -6,12 +6,14 @@
<method name="vbAddOne">
<PARAMETER name="n"></PARAMETER>
</method>
- <method name="jsAddTwo">
- <Parameter name="n"/>
- </method>
+ <method name="jsAddTwo" />
<method name="wtTest">
<Parameter name="i"/>
</method>
+ <property name="gsProp">
+ <get />
+ <put> </put>
+ </property>
</public>
<script language="VBScript">
<![CDATA[
More information about the wine-cvs
mailing list