jscript: Added invoke version 2 tests.
This commit is contained in:
parent
86e7beae82
commit
fded8dc017
|
@ -667,7 +667,7 @@ ok(arr === arr.valueOf(), "arr !== arr.valueOf");
|
||||||
|
|
||||||
arr = [1,2,3];
|
arr = [1,2,3];
|
||||||
tmp = arr.unshift(0);
|
tmp = arr.unshift(0);
|
||||||
ok(tmp === undefined, "[1,2,3].unshift(0) returned " +tmp);
|
ok(tmp === (invokeVersion < 2 ? undefined : 4), "[1,2,3].unshift(0) returned " +tmp);
|
||||||
ok(arr.length === 4, "arr.length = " + arr.length);
|
ok(arr.length === 4, "arr.length = " + arr.length);
|
||||||
ok(arr.toString() === "0,1,2,3", "arr.toString() = " + arr.toString());
|
ok(arr.toString() === "0,1,2,3", "arr.toString() = " + arr.toString());
|
||||||
|
|
||||||
|
@ -675,13 +675,13 @@ arr = new Array(3);
|
||||||
arr[0] = 1;
|
arr[0] = 1;
|
||||||
arr[2] = 3;
|
arr[2] = 3;
|
||||||
tmp = arr.unshift(-1,0);
|
tmp = arr.unshift(-1,0);
|
||||||
ok(tmp === undefined, "unshift returned " +tmp);
|
ok(tmp === (invokeVersion < 2 ? undefined : 5), "unshift returned " +tmp);
|
||||||
ok(arr.length === 5, "arr.length = " + arr.length);
|
ok(arr.length === 5, "arr.length = " + arr.length);
|
||||||
ok(arr.toString() === "-1,0,1,,3", "arr.toString() = " + arr.toString());
|
ok(arr.toString() === "-1,0,1,,3", "arr.toString() = " + arr.toString());
|
||||||
|
|
||||||
arr = [1,2,3];
|
arr = [1,2,3];
|
||||||
tmp = arr.unshift();
|
tmp = arr.unshift();
|
||||||
ok(tmp === undefined, "unshift returned " +tmp);
|
ok(tmp === (invokeVersion < 2 ? undefined : 3), "unshift returned " +tmp);
|
||||||
ok(arr.length === 3, "arr.length = " + arr.length);
|
ok(arr.length === 3, "arr.length = " + arr.length);
|
||||||
ok(arr.toString() === "1,2,3", "arr.toString() = " + arr.toString());
|
ok(arr.toString() === "1,2,3", "arr.toString() = " + arr.toString());
|
||||||
|
|
||||||
|
@ -690,7 +690,7 @@ arr.length = 2;
|
||||||
arr[0] = 1;
|
arr[0] = 1;
|
||||||
arr[1] = 2;
|
arr[1] = 2;
|
||||||
tmp = Array.prototype.unshift.call(arr, 0);
|
tmp = Array.prototype.unshift.call(arr, 0);
|
||||||
ok(tmp === undefined, "unshift returned " +tmp);
|
ok(tmp === (invokeVersion < 2 ? undefined : 3), "unshift returned " +tmp);
|
||||||
ok(arr.length === 3, "arr.length = " + arr.length);
|
ok(arr.length === 3, "arr.length = " + arr.length);
|
||||||
ok(arr[0] === 0 && arr[1] === 1 && arr[2] === 2, "unexpected array");
|
ok(arr[0] === 0 && arr[1] === 1 && arr[2] === 2, "unexpected array");
|
||||||
|
|
||||||
|
@ -1587,7 +1587,7 @@ ok(Error.prototype.name === "Error", "Error.prototype.name = " + Error.prototype
|
||||||
ok(err.name === "Error", "err.name = " + err.name);
|
ok(err.name === "Error", "err.name = " + err.name);
|
||||||
EvalError.prototype.message = "test";
|
EvalError.prototype.message = "test";
|
||||||
ok(err.toString !== Object.prototype.toString, "err.toString === Object.prototype.toString");
|
ok(err.toString !== Object.prototype.toString, "err.toString === Object.prototype.toString");
|
||||||
ok(err.toString() === "[object Error]", "err.toString() = " + err.toString());
|
ok(err.toString() === (invokeVersion < 2 ? "[object Error]" : "Error"), "err.toString() = " + err.toString());
|
||||||
err = new EvalError();
|
err = new EvalError();
|
||||||
ok(EvalError.prototype.name === "EvalError", "EvalError.prototype.name = " + EvalError.prototype.name);
|
ok(EvalError.prototype.name === "EvalError", "EvalError.prototype.name = " + EvalError.prototype.name);
|
||||||
ok(err.name === "EvalError", "err.name = " + err.name);
|
ok(err.name === "EvalError", "err.name = " + err.name);
|
||||||
|
@ -1595,31 +1595,32 @@ ok(err.toString === Error.prototype.toString, "err.toString !== Error.prototype.
|
||||||
ok(err.message === "", "err.message != ''");
|
ok(err.message === "", "err.message != ''");
|
||||||
err.message = date;
|
err.message = date;
|
||||||
ok(err.message === date, "err.message != date");
|
ok(err.message === date, "err.message != date");
|
||||||
ok(err.toString() === "[object Error]", "err.toString() = " + err.toString());
|
ok(err.toString() === (invokeVersion < 2 ? "[object Error]" : "EvalError: Fri Aug 17 22:50:50 UTC+0200 85"),
|
||||||
|
"err.toString() = " + err.toString());
|
||||||
ok(err.toString !== Object.prototype.toString, "err.toString === Object.prototype.toString");
|
ok(err.toString !== Object.prototype.toString, "err.toString === Object.prototype.toString");
|
||||||
err = new RangeError();
|
err = new RangeError();
|
||||||
ok(RangeError.prototype.name === "RangeError", "RangeError.prototype.name = " + RangeError.prototype.name);
|
ok(RangeError.prototype.name === "RangeError", "RangeError.prototype.name = " + RangeError.prototype.name);
|
||||||
ok(err.name === "RangeError", "err.name = " + err.name);
|
ok(err.name === "RangeError", "err.name = " + err.name);
|
||||||
ok(err.toString() === "[object Error]", "err.toString() = " + err.toString());
|
ok(err.toString() === (invokeVersion < 2 ? "[object Error]" : "RangeError"), "err.toString() = " + err.toString());
|
||||||
err = new ReferenceError();
|
err = new ReferenceError();
|
||||||
ok(ReferenceError.prototype.name === "ReferenceError", "ReferenceError.prototype.name = " + ReferenceError.prototype.name);
|
ok(ReferenceError.prototype.name === "ReferenceError", "ReferenceError.prototype.name = " + ReferenceError.prototype.name);
|
||||||
ok(err.name === "ReferenceError", "err.name = " + err.name);
|
ok(err.name === "ReferenceError", "err.name = " + err.name);
|
||||||
ok(err.toString() === "[object Error]", "err.toString() = " + err.toString());
|
ok(err.toString() === (invokeVersion < 2 ? "[object Error]" : "ReferenceError"), "err.toString() = " + err.toString());
|
||||||
err = new SyntaxError();
|
err = new SyntaxError();
|
||||||
ok(SyntaxError.prototype.name === "SyntaxError", "SyntaxError.prototype.name = " + SyntaxError.prototype.name);
|
ok(SyntaxError.prototype.name === "SyntaxError", "SyntaxError.prototype.name = " + SyntaxError.prototype.name);
|
||||||
ok(err.name === "SyntaxError", "err.name = " + err.name);
|
ok(err.name === "SyntaxError", "err.name = " + err.name);
|
||||||
ok(err.toString() === "[object Error]", "err.toString() = " + err.toString());
|
ok(err.toString() === (invokeVersion < 2 ? "[object Error]" : "SyntaxError"), "err.toString() = " + err.toString());
|
||||||
err = new TypeError();
|
err = new TypeError();
|
||||||
ok(TypeError.prototype.name === "TypeError", "TypeError.prototype.name = " + TypeError.prototype.name);
|
ok(TypeError.prototype.name === "TypeError", "TypeError.prototype.name = " + TypeError.prototype.name);
|
||||||
ok(err.name === "TypeError", "err.name = " + err.name);
|
ok(err.name === "TypeError", "err.name = " + err.name);
|
||||||
ok(err.toString() === "[object Error]", "err.toString() = " + err.toString());
|
ok(err.toString() === (invokeVersion < 2 ? "[object Error]" : "TypeError"), "err.toString() = " + err.toString());
|
||||||
err = new URIError();
|
err = new URIError();
|
||||||
ok(URIError.prototype.name === "URIError", "URIError.prototype.name = " + URIError.prototype.name);
|
ok(URIError.prototype.name === "URIError", "URIError.prototype.name = " + URIError.prototype.name);
|
||||||
ok(err.name === "URIError", "err.name = " + err.name);
|
ok(err.name === "URIError", "err.name = " + err.name);
|
||||||
ok(err.toString() === "[object Error]", "err.toString() = " + err.toString());
|
ok(err.toString() === (invokeVersion < 2 ? "[object Error]" : "URIError"), "err.toString() = " + err.toString());
|
||||||
err = new Error("message");
|
err = new Error("message");
|
||||||
ok(err.message === "message", "err.message !== 'message'");
|
ok(err.message === "message", "err.message !== 'message'");
|
||||||
ok(err.toString() === "[object Error]", "err.toString() = " + err.toString());
|
ok(err.toString() === (invokeVersion < 2 ? "[object Error]" : "Error: message"), "err.toString() = " + err.toString());
|
||||||
err = new Error(123);
|
err = new Error(123);
|
||||||
ok(err.number === 123, "err.number = " + err.number);
|
ok(err.number === 123, "err.number = " + err.number);
|
||||||
err = new Error(0, "message");
|
err = new Error(0, "message");
|
||||||
|
@ -1627,6 +1628,35 @@ ok(err.number === 0, "err.number = " + err.number);
|
||||||
ok(err.message === "message", "err.message = " + err.message);
|
ok(err.message === "message", "err.message = " + err.message);
|
||||||
ok(err.description === "message", "err.description = " + err.description);
|
ok(err.description === "message", "err.description = " + err.description);
|
||||||
|
|
||||||
|
tmp = new Object();
|
||||||
|
tmp.toString = function() { return "test"; };
|
||||||
|
|
||||||
|
tmp = Error.prototype.toString.call(tmp);
|
||||||
|
ok(tmp === "[object Error]", "Error.prototype.toString.call(tmp) = " + tmp);
|
||||||
|
|
||||||
|
err = new Error();
|
||||||
|
err.name = null;
|
||||||
|
ok(err.name === null, "err.name = " + err.name + " expected null");
|
||||||
|
if(invokeVersion >= 2)
|
||||||
|
ok(err.toString() === "null", "err.toString() = " + err.toString());
|
||||||
|
|
||||||
|
err = new Error();
|
||||||
|
err.message = false;
|
||||||
|
ok(err.message === false, "err.message = " + err.message + " expected false");
|
||||||
|
if(invokeVersion >= 2)
|
||||||
|
ok(err.toString() === "Error: false", "err.toString() = " + err.toString());
|
||||||
|
|
||||||
|
err = new Error();
|
||||||
|
err.message = new Object();
|
||||||
|
err.message.toString = function() { return ""; };
|
||||||
|
if(invokeVersion >= 2)
|
||||||
|
ok(err.toString() === "Error", "err.toString() = " + err.toString());
|
||||||
|
|
||||||
|
err = new Error();
|
||||||
|
err.message = undefined;
|
||||||
|
if(invokeVersion >= 2)
|
||||||
|
ok(err.toString() === "Error", "err.toString() = " + err.toString());
|
||||||
|
|
||||||
function exception_test(func, type, number) {
|
function exception_test(func, type, number) {
|
||||||
ret = "";
|
ret = "";
|
||||||
num = "";
|
num = "";
|
||||||
|
|
|
@ -81,6 +81,7 @@ DEFINE_EXPECT(GetItemInfo_testVal);
|
||||||
#define DISPID_GLOBAL_NULL_DISP 0x1008
|
#define DISPID_GLOBAL_NULL_DISP 0x1008
|
||||||
#define DISPID_GLOBAL_TESTTHIS 0x1009
|
#define DISPID_GLOBAL_TESTTHIS 0x1009
|
||||||
#define DISPID_GLOBAL_TESTTHIS2 0x100a
|
#define DISPID_GLOBAL_TESTTHIS2 0x100a
|
||||||
|
#define DISPID_GLOBAL_INVOKEVERSION 0x100b
|
||||||
|
|
||||||
#define DISPID_TESTOBJ_PROP 0x2000
|
#define DISPID_TESTOBJ_PROP 0x2000
|
||||||
|
|
||||||
|
@ -92,6 +93,7 @@ static const CHAR test_valA[] = "testVal";
|
||||||
static BOOL strict_dispid_check;
|
static BOOL strict_dispid_check;
|
||||||
static const char *test_name = "(null)";
|
static const char *test_name = "(null)";
|
||||||
static IDispatch *script_disp;
|
static IDispatch *script_disp;
|
||||||
|
static int invoke_version;
|
||||||
|
|
||||||
static BSTR a2bstr(const char *str)
|
static BSTR a2bstr(const char *str)
|
||||||
{
|
{
|
||||||
|
@ -112,6 +114,13 @@ static int strcmp_wa(LPCWSTR strw, const char *stra)
|
||||||
return lstrcmpA(buf, stra);
|
return lstrcmpA(buf, stra);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define test_grfdex(a,b) _test_grfdex(__LINE__,a,b)
|
||||||
|
static void _test_grfdex(unsigned line, DWORD grfdex, DWORD expect)
|
||||||
|
{
|
||||||
|
expect |= invoke_version << 28;
|
||||||
|
ok_(__FILE__,line)(grfdex == expect, "grfdex = %x, expected %x\n", grfdex, expect);
|
||||||
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI DispatchEx_QueryInterface(IDispatchEx *iface, REFIID riid, void **ppv)
|
static HRESULT WINAPI DispatchEx_QueryInterface(IDispatchEx *iface, REFIID riid, void **ppv)
|
||||||
{
|
{
|
||||||
*ppv = NULL;
|
*ppv = NULL;
|
||||||
|
@ -205,13 +214,13 @@ static HRESULT WINAPI testObj_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD
|
||||||
{
|
{
|
||||||
if(!strcmp_wa(bstrName, "prop")) {
|
if(!strcmp_wa(bstrName, "prop")) {
|
||||||
CHECK_EXPECT(testobj_prop_d);
|
CHECK_EXPECT(testobj_prop_d);
|
||||||
ok(grfdex == fdexNameCaseSensitive, "grfdex = %x\n", grfdex);
|
test_grfdex(grfdex, fdexNameCaseSensitive);
|
||||||
*pid = DISPID_TESTOBJ_PROP;
|
*pid = DISPID_TESTOBJ_PROP;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
if(!strcmp_wa(bstrName, "noprop")) {
|
if(!strcmp_wa(bstrName, "noprop")) {
|
||||||
CHECK_EXPECT(testobj_noprop_d);
|
CHECK_EXPECT(testobj_noprop_d);
|
||||||
ok(grfdex == fdexNameCaseSensitive, "grfdex = %x\n", grfdex);
|
test_grfdex(grfdex, fdexNameCaseSensitive);
|
||||||
return DISP_E_UNKNOWNNAME;
|
return DISP_E_UNKNOWNNAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -250,7 +259,7 @@ static HRESULT WINAPI testObj_DeleteMemberByName(IDispatchEx *iface, BSTR bstrNa
|
||||||
CHECK_EXPECT(testobj_delete);
|
CHECK_EXPECT(testobj_delete);
|
||||||
|
|
||||||
ok(!strcmp_wa(bstrName, "deleteTest"), "unexpected name %s\n", wine_dbgstr_w(bstrName));
|
ok(!strcmp_wa(bstrName, "deleteTest"), "unexpected name %s\n", wine_dbgstr_w(bstrName));
|
||||||
ok(grfdex == fdexNameCaseSensitive, "grfdex = %x\n", grfdex);
|
test_grfdex(grfdex, fdexNameCaseSensitive);
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -277,40 +286,40 @@ static IDispatchEx testObj = { &testObjVtbl };
|
||||||
static HRESULT WINAPI Global_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid)
|
static HRESULT WINAPI Global_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid)
|
||||||
{
|
{
|
||||||
if(!strcmp_wa(bstrName, "ok")) {
|
if(!strcmp_wa(bstrName, "ok")) {
|
||||||
ok(grfdex == fdexNameCaseSensitive, "grfdex = %x\n", grfdex);
|
test_grfdex(grfdex, fdexNameCaseSensitive);
|
||||||
*pid = DISPID_GLOBAL_OK;
|
*pid = DISPID_GLOBAL_OK;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
if(!strcmp_wa(bstrName, "trace")) {
|
if(!strcmp_wa(bstrName, "trace")) {
|
||||||
ok(grfdex == fdexNameCaseSensitive, "grfdex = %x\n", grfdex);
|
test_grfdex(grfdex, fdexNameCaseSensitive);
|
||||||
*pid = DISPID_GLOBAL_TRACE;
|
*pid = DISPID_GLOBAL_TRACE;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
if(!strcmp_wa(bstrName, "reportSuccess")) {
|
if(!strcmp_wa(bstrName, "reportSuccess")) {
|
||||||
CHECK_EXPECT(global_success_d);
|
CHECK_EXPECT(global_success_d);
|
||||||
ok(grfdex == fdexNameCaseSensitive, "grfdex = %x\n", grfdex);
|
test_grfdex(grfdex, fdexNameCaseSensitive);
|
||||||
*pid = DISPID_GLOBAL_REPORTSUCCESS;
|
*pid = DISPID_GLOBAL_REPORTSUCCESS;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
if(!strcmp_wa(bstrName, "testPropGet")) {
|
if(!strcmp_wa(bstrName, "testPropGet")) {
|
||||||
CHECK_EXPECT(global_propget_d);
|
CHECK_EXPECT(global_propget_d);
|
||||||
ok(grfdex == fdexNameCaseSensitive, "grfdex = %x\n", grfdex);
|
test_grfdex(grfdex, fdexNameCaseSensitive);
|
||||||
*pid = DISPID_GLOBAL_TESTPROPGET;
|
*pid = DISPID_GLOBAL_TESTPROPGET;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
if(!strcmp_wa(bstrName, "testPropPut")) {
|
if(!strcmp_wa(bstrName, "testPropPut")) {
|
||||||
CHECK_EXPECT(global_propput_d);
|
CHECK_EXPECT(global_propput_d);
|
||||||
ok(grfdex == fdexNameCaseSensitive, "grfdex = %x\n", grfdex);
|
test_grfdex(grfdex, fdexNameCaseSensitive);
|
||||||
*pid = DISPID_GLOBAL_TESTPROPPUT;
|
*pid = DISPID_GLOBAL_TESTPROPPUT;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
if(!strcmp_wa(bstrName, "getVT")) {
|
if(!strcmp_wa(bstrName, "getVT")) {
|
||||||
ok(grfdex == fdexNameCaseSensitive, "grfdex = %x\n", grfdex);
|
test_grfdex(grfdex, fdexNameCaseSensitive);
|
||||||
*pid = DISPID_GLOBAL_GETVT;
|
*pid = DISPID_GLOBAL_GETVT;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
if(!strcmp_wa(bstrName, "testObj")) {
|
if(!strcmp_wa(bstrName, "testObj")) {
|
||||||
ok(grfdex == fdexNameCaseSensitive, "grfdex = %x\n", grfdex);
|
test_grfdex(grfdex, fdexNameCaseSensitive);
|
||||||
*pid = DISPID_GLOBAL_TESTOBJ;
|
*pid = DISPID_GLOBAL_TESTOBJ;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
@ -324,22 +333,28 @@ static HRESULT WINAPI Global_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD
|
||||||
}
|
}
|
||||||
if(!strcmp_wa(bstrName, "notExists")) {
|
if(!strcmp_wa(bstrName, "notExists")) {
|
||||||
CHECK_EXPECT(global_notexists_d);
|
CHECK_EXPECT(global_notexists_d);
|
||||||
ok(grfdex == fdexNameCaseSensitive, "grfdex = %x\n", grfdex);
|
test_grfdex(grfdex, fdexNameCaseSensitive);
|
||||||
return DISP_E_UNKNOWNNAME;
|
return DISP_E_UNKNOWNNAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!strcmp_wa(bstrName, "testThis")) {
|
if(!strcmp_wa(bstrName, "testThis")) {
|
||||||
ok(grfdex == fdexNameCaseSensitive, "grfdex = %x\n", grfdex);
|
test_grfdex(grfdex, fdexNameCaseSensitive);
|
||||||
*pid = DISPID_GLOBAL_TESTTHIS;
|
*pid = DISPID_GLOBAL_TESTTHIS;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!strcmp_wa(bstrName, "testThis2")) {
|
if(!strcmp_wa(bstrName, "testThis2")) {
|
||||||
ok(grfdex == fdexNameCaseSensitive, "grfdex = %x\n", grfdex);
|
test_grfdex(grfdex, fdexNameCaseSensitive);
|
||||||
*pid = DISPID_GLOBAL_TESTTHIS2;
|
*pid = DISPID_GLOBAL_TESTTHIS2;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!strcmp_wa(bstrName, "invokeVersion")) {
|
||||||
|
test_grfdex(grfdex, fdexNameCaseSensitive);
|
||||||
|
*pid = DISPID_GLOBAL_INVOKEVERSION;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
if(strict_dispid_check)
|
if(strict_dispid_check)
|
||||||
ok(0, "unexpected call %s\n", wine_dbgstr_w(bstrName));
|
ok(0, "unexpected call %s\n", wine_dbgstr_w(bstrName));
|
||||||
return DISP_E_UNKNOWNNAME;
|
return DISP_E_UNKNOWNNAME;
|
||||||
|
@ -536,6 +551,23 @@ static HRESULT WINAPI Global_InvokeEx(IDispatchEx *iface, DISPID id, LCID lcid,
|
||||||
ok(V_DISPATCH(pdp->rgvarg) == script_disp, "disp != script_disp\n");
|
ok(V_DISPATCH(pdp->rgvarg) == script_disp, "disp != script_disp\n");
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
|
||||||
|
case DISPID_GLOBAL_INVOKEVERSION:
|
||||||
|
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) = invoke_version;
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ok(0, "unexpected call %x\n", id);
|
ok(0, "unexpected call %x\n", id);
|
||||||
|
@ -657,15 +689,40 @@ static const IActiveScriptSiteVtbl ActiveScriptSiteVtbl = {
|
||||||
|
|
||||||
static IActiveScriptSite ActiveScriptSite = { &ActiveScriptSiteVtbl };
|
static IActiveScriptSite ActiveScriptSite = { &ActiveScriptSiteVtbl };
|
||||||
|
|
||||||
|
static HRESULT set_script_prop(IActiveScript *engine, DWORD property, VARIANT *val)
|
||||||
|
{
|
||||||
|
IActiveScriptProperty *script_prop;
|
||||||
|
HRESULT hres;
|
||||||
|
|
||||||
|
hres = IActiveScript_QueryInterface(engine, &IID_IActiveScriptProperty,
|
||||||
|
(void**)&script_prop);
|
||||||
|
ok(hres == S_OK, "Could not get IActiveScriptProperty iface: %08x\n", hres);
|
||||||
|
|
||||||
|
hres = IActiveScriptProperty_SetProperty(script_prop, property, NULL, val);
|
||||||
|
IActiveScriptProperty_Release(script_prop);
|
||||||
|
|
||||||
|
return hres;
|
||||||
|
}
|
||||||
|
|
||||||
static IActiveScript *create_script(void)
|
static IActiveScript *create_script(void)
|
||||||
{
|
{
|
||||||
IActiveScript *script;
|
IActiveScript *script;
|
||||||
|
VARIANT v;
|
||||||
HRESULT hres;
|
HRESULT hres;
|
||||||
|
|
||||||
hres = CoCreateInstance(&CLSID_JScript, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
|
hres = CoCreateInstance(&CLSID_JScript, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
|
||||||
&IID_IActiveScript, (void**)&script);
|
&IID_IActiveScript, (void**)&script);
|
||||||
ok(hres == S_OK, "CoCreateInstance failed: %08x\n", hres);
|
ok(hres == S_OK, "CoCreateInstance failed: %08x\n", hres);
|
||||||
|
|
||||||
|
V_VT(&v) = VT_I4;
|
||||||
|
V_I4(&v) = invoke_version;
|
||||||
|
hres = set_script_prop(script, SCRIPTPROP_INVOKEVERSIONING, &v);
|
||||||
|
ok(hres == S_OK || broken(hres == E_NOTIMPL), "SetProperty(SCRIPTPROP_INVOKEVERSIONING) failed: %08x\n", hres);
|
||||||
|
if(invoke_version && FAILED(hres)) {
|
||||||
|
IActiveScript_Release(script);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
return script;
|
return script;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -912,6 +969,17 @@ static void run_tests(void)
|
||||||
{
|
{
|
||||||
HRESULT hres;
|
HRESULT hres;
|
||||||
|
|
||||||
|
if(invoke_version) {
|
||||||
|
IActiveScript *script;
|
||||||
|
|
||||||
|
script = create_script();
|
||||||
|
if(!script) {
|
||||||
|
win_skip("Could not create script\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
IActiveScript_Release(script);
|
||||||
|
}
|
||||||
|
|
||||||
strict_dispid_check = TRUE;
|
strict_dispid_check = TRUE;
|
||||||
|
|
||||||
parse_script_a("");
|
parse_script_a("");
|
||||||
|
@ -1019,10 +1087,17 @@ START_TEST(run)
|
||||||
|
|
||||||
CoInitialize(NULL);
|
CoInitialize(NULL);
|
||||||
|
|
||||||
if(argc > 2)
|
if(argc > 2) {
|
||||||
run_from_file(argv[2]);
|
run_from_file(argv[2]);
|
||||||
else
|
}else {
|
||||||
|
trace("invoke version 0\n");
|
||||||
|
invoke_version = 0;
|
||||||
run_tests();
|
run_tests();
|
||||||
|
|
||||||
|
trace("invoke version 2\n");
|
||||||
|
invoke_version = 2;
|
||||||
|
run_tests();
|
||||||
|
}
|
||||||
|
|
||||||
CoUninitialize();
|
CoUninitialize();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue