jscript: Added to_primitive on hosting objects test.

This commit is contained in:
Jacek Caban 2009-09-02 12:25:21 +02:00 committed by Alexandre Julliard
parent 3b336da990
commit 00644c5449
2 changed files with 31 additions and 5 deletions

View File

@ -199,8 +199,10 @@ HRESULT to_primitive(script_ctx_t *ctx, VARIANT *v, jsexcept_t *ei, VARIANT *ret
static const WCHAR valueOfW[] = {'v','a','l','u','e','O','f',0};
jsdisp = iface_to_jsdisp((IUnknown*)V_DISPATCH(v));
if(!jsdisp)
if(!jsdisp) {
V_VT(ret) = VT_EMPTY;
return disp_propget(V_DISPATCH(v), DISPID_VALUE, ctx->lcid, ret, ei, NULL /*FIXME*/);
}
if(hint == NO_HINT)
hint = is_class(jsdisp, JSCLASS_DATE) ? HINT_STRING : HINT_NUMBER;

View File

@ -65,6 +65,7 @@ DEFINE_EXPECT(global_success_d);
DEFINE_EXPECT(global_success_i);
DEFINE_EXPECT(global_notexists_d);
DEFINE_EXPECT(testobj_delete);
DEFINE_EXPECT(testobj_value);
DEFINE_EXPECT(GetItemInfo_testVal);
#define DISPID_GLOBAL_TESTPROPGET 0x1000
@ -198,11 +199,30 @@ static HRESULT WINAPI DispatchEx_GetDispID(IDispatchEx *iface, BSTR bstrName, DW
return E_NOTIMPL;
}
static HRESULT WINAPI DispatchEx_InvokeEx(IDispatchEx *iface, DISPID id, LCID lcid, WORD wFlags, DISPPARAMS *pdp,
static HRESULT WINAPI testObj_InvokeEx(IDispatchEx *iface, DISPID id, LCID lcid, WORD wFlags, DISPPARAMS *pdp,
VARIANT *pvarRes, EXCEPINFO *pei, IServiceProvider *pspCaller)
{
ok(0, "unexpected call\n");
return E_NOTIMPL;
switch(id) {
case DISPID_VALUE:
CHECK_EXPECT(testobj_value);
ok(wFlags == INVOKE_PROPERTYGET, "wFlags = %x\n", wFlags);
ok(pdp != NULL, "pdp == NULL\n");
ok(!pdp->rgvarg, "rgvarg != NULL\n");
ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
ok(!pdp->cArgs, "cArgs = %d\n", pdp->cArgs);
ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs);
ok(pvarRes != NULL, "pvarRes == NULL\n");
ok(V_VT(pvarRes) == VT_EMPTY, "V_VT(pvarRes) = %d\n", V_VT(pvarRes));
ok(pei != NULL, "pei == NULL\n");
V_VT(pvarRes) = VT_I4;
V_I4(pvarRes) = 1;
return S_OK;
}
ok(0, "unexpected call %x\n", id);
return DISP_E_MEMBERNOTFOUND;
}
static HRESULT WINAPI testObj_DeleteMemberByName(IDispatchEx *iface, BSTR bstrName, DWORD grfdex)
@ -223,7 +243,7 @@ static IDispatchExVtbl testObjVtbl = {
DispatchEx_GetIDsOfNames,
DispatchEx_Invoke,
DispatchEx_GetDispID,
DispatchEx_InvokeEx,
testObj_InvokeEx,
testObj_DeleteMemberByName,
DispatchEx_DeleteMemberByDispID,
DispatchEx_GetMemberProperties,
@ -844,6 +864,10 @@ static void run_tests(void)
parse_script_a("ok((testObj instanceof Object) === false, 'testObj is instance of Object');");
SET_EXPECT(testobj_value);
parse_script_a("ok(String(testObj) === '1', 'wrong testObj value');");
CHECK_CALLED(testobj_value);
run_from_res("lang.js");
run_from_res("api.js");
run_from_res("regexp.js");