jscript: Added decoding tests.
This commit is contained in:
parent
f7a8650500
commit
c18b84cf4e
|
@ -29,6 +29,8 @@
|
||||||
|
|
||||||
static const CLSID CLSID_JScript =
|
static const CLSID CLSID_JScript =
|
||||||
{0xf414c260,0x6ac0,0x11cf,{0xb6,0xd1,0x00,0xaa,0x00,0xbb,0xbb,0x58}};
|
{0xf414c260,0x6ac0,0x11cf,{0xb6,0xd1,0x00,0xaa,0x00,0xbb,0xbb,0x58}};
|
||||||
|
static const CLSID CLSID_JScriptEncode =
|
||||||
|
{0xf414c262,0x6ac0,0x11cf,{0xb6,0xd1,0x00,0xaa,0x00,0xbb,0xbb,0x58}};
|
||||||
|
|
||||||
#define DEFINE_EXPECT(func) \
|
#define DEFINE_EXPECT(func) \
|
||||||
static BOOL expect_ ## func = FALSE, called_ ## func = FALSE
|
static BOOL expect_ ## func = FALSE, called_ ## func = FALSE
|
||||||
|
@ -97,6 +99,8 @@ DEFINE_EXPECT(DeleteMemberByDispID);
|
||||||
#define DISPID_TESTOBJ_PROP 0x2000
|
#define DISPID_TESTOBJ_PROP 0x2000
|
||||||
#define DISPID_TESTOBJ_ONLYDISPID 0x2001
|
#define DISPID_TESTOBJ_ONLYDISPID 0x2001
|
||||||
|
|
||||||
|
#define JS_E_INVALID_CHAR 0x800a03f6
|
||||||
|
|
||||||
static const WCHAR testW[] = {'t','e','s','t',0};
|
static const WCHAR testW[] = {'t','e','s','t',0};
|
||||||
static const CHAR testA[] = "test";
|
static const CHAR testA[] = "test";
|
||||||
static const WCHAR test_valW[] = {'t','e','s','t','V','a','l',0};
|
static const WCHAR test_valW[] = {'t','e','s','t','V','a','l',0};
|
||||||
|
@ -107,6 +111,7 @@ static const char *test_name = "(null)";
|
||||||
static IDispatch *script_disp;
|
static IDispatch *script_disp;
|
||||||
static int invoke_version;
|
static int invoke_version;
|
||||||
static IActiveScriptError *script_error;
|
static IActiveScriptError *script_error;
|
||||||
|
static const CLSID *engine_clsid = &CLSID_JScript;
|
||||||
|
|
||||||
/* Returns true if the user interface is in English. Note that this does not
|
/* Returns true if the user interface is in English. Note that this does not
|
||||||
* presume of the formatting of dates, numbers, etc.
|
* presume of the formatting of dates, numbers, etc.
|
||||||
|
@ -1016,7 +1021,7 @@ static IActiveScript *create_script(void)
|
||||||
VARIANT v;
|
VARIANT v;
|
||||||
HRESULT hres;
|
HRESULT hres;
|
||||||
|
|
||||||
hres = CoCreateInstance(&CLSID_JScript, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
|
hres = CoCreateInstance(engine_clsid, 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);
|
||||||
|
|
||||||
|
@ -1440,7 +1445,7 @@ static void test_isvisible(BOOL global_members)
|
||||||
IUnknown_Release(parser);
|
IUnknown_Release(parser);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void run_tests(void)
|
static BOOL run_tests(void)
|
||||||
{
|
{
|
||||||
HRESULT hres;
|
HRESULT hres;
|
||||||
|
|
||||||
|
@ -1450,7 +1455,7 @@ static void run_tests(void)
|
||||||
script = create_script();
|
script = create_script();
|
||||||
if(!script) {
|
if(!script) {
|
||||||
win_skip("Could not create script\n");
|
win_skip("Could not create script\n");
|
||||||
return;
|
return FALSE;
|
||||||
}
|
}
|
||||||
IActiveScript_Release(script);
|
IActiveScript_Release(script);
|
||||||
}
|
}
|
||||||
|
@ -1648,6 +1653,73 @@ static void run_tests(void)
|
||||||
"Microsoft JScript runtime error",
|
"Microsoft JScript runtime error",
|
||||||
"Object expected",
|
"Object expected",
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void run_encoded_tests(void)
|
||||||
|
{
|
||||||
|
BSTR src;
|
||||||
|
HRESULT hres;
|
||||||
|
|
||||||
|
engine_clsid = &CLSID_JScriptEncode;
|
||||||
|
|
||||||
|
SET_EXPECT(global_success_d);
|
||||||
|
SET_EXPECT(global_success_i);
|
||||||
|
/* |reportSuccess(); | */
|
||||||
|
parse_script_a("#@~^EAAAAA==.\x7fwGMYUEm1+kd`*iAQYAAA==^#~@");
|
||||||
|
CHECK_CALLED(global_success_d);
|
||||||
|
CHECK_CALLED(global_success_i);
|
||||||
|
|
||||||
|
SET_EXPECT(global_success_d);
|
||||||
|
SET_EXPECT(global_success_i);
|
||||||
|
parse_script_a("reportSuccess();");
|
||||||
|
CHECK_CALLED(global_success_d);
|
||||||
|
CHECK_CALLED(global_success_i);
|
||||||
|
|
||||||
|
SET_EXPECT(global_success_d);
|
||||||
|
SET_EXPECT(global_success_i);
|
||||||
|
/* |Success | */
|
||||||
|
parse_script_a("report#@~^BwAAAA==j!m^\x7f/k2QIAAA==^#~@();");
|
||||||
|
CHECK_CALLED(global_success_d);
|
||||||
|
CHECK_CALLED(global_success_i);
|
||||||
|
|
||||||
|
SET_EXPECT(global_success_d);
|
||||||
|
SET_EXPECT(global_success_i);
|
||||||
|
/* |\r\n\treportSuccess();\r\n | */
|
||||||
|
parse_script_a("#@~^GQAAAA==@#@&d.\x7fwKDYUE1^+k/c#p@#@&OAYAAA==^#~@");
|
||||||
|
CHECK_CALLED(global_success_d);
|
||||||
|
CHECK_CALLED(global_success_i);
|
||||||
|
|
||||||
|
/* v */
|
||||||
|
src = a2bstr("#@~^EAA*AA==.\x7fwGMYUEm1+kd`*iAQYAAA==^#~@");
|
||||||
|
hres = parse_script(SCRIPTITEM_GLOBALMEMBERS, src);
|
||||||
|
SysFreeString(src);
|
||||||
|
ok(hres == JS_E_INVALID_CHAR, "parse_script failed %08x\n", hres);
|
||||||
|
|
||||||
|
/* vv */
|
||||||
|
src = a2bstr("#@~^EAAAAAAA==.\x7fwGMYUEm1+kd`*iAQYAAA==^#~@");
|
||||||
|
hres = parse_script(SCRIPTITEM_GLOBALMEMBERS, src);
|
||||||
|
SysFreeString(src);
|
||||||
|
ok(hres == JS_E_INVALID_CHAR, "parse_script failed %08x\n", hres);
|
||||||
|
|
||||||
|
/* v */
|
||||||
|
src = a2bstr("#@~^EAAAAA^=.\x7fwGMYUEm1+kd`*iAQYAAA==^#~@");
|
||||||
|
hres = parse_script(SCRIPTITEM_GLOBALMEMBERS, src);
|
||||||
|
SysFreeString(src);
|
||||||
|
ok(hres == JS_E_INVALID_CHAR, "parse_script failed %08x\n", hres);
|
||||||
|
|
||||||
|
/* v */
|
||||||
|
src = a2bstr("#@~^EAAAAA==.\x7fwGMYUEm1ekd`*iAQYAAA==^#~@");
|
||||||
|
hres = parse_script(SCRIPTITEM_GLOBALMEMBERS, src);
|
||||||
|
SysFreeString(src);
|
||||||
|
ok(hres == JS_E_INVALID_CHAR, "parse_script failed %08x\n", hres);
|
||||||
|
|
||||||
|
/* vv */
|
||||||
|
src = a2bstr("#@~^EAAAAA==.\x7fwGMYUEm1+kd`*iAQYAAA==^~#@");
|
||||||
|
hres = parse_script(SCRIPTITEM_GLOBALMEMBERS, src);
|
||||||
|
SysFreeString(src);
|
||||||
|
ok(hres == JS_E_INVALID_CHAR, "parse_script failed %08x\n", hres);
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL check_jscript(void)
|
static BOOL check_jscript(void)
|
||||||
|
@ -1690,7 +1762,10 @@ START_TEST(run)
|
||||||
|
|
||||||
trace("invoke version 2\n");
|
trace("invoke version 2\n");
|
||||||
invoke_version = 2;
|
invoke_version = 2;
|
||||||
run_tests();
|
if(run_tests()) {
|
||||||
|
trace("JSctipt.Encode tests...\n");
|
||||||
|
run_encoded_tests();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CoUninitialize();
|
CoUninitialize();
|
||||||
|
|
Loading…
Reference in New Issue