Jacek Caban : jscript: Added decoding tests.

Alexandre Julliard julliard at winehq.org
Mon Mar 26 12:29:30 CDT 2012


Module: wine
Branch: master
Commit: c18b84cf4e9ee3127d354de06650b4bb04be54d9
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=c18b84cf4e9ee3127d354de06650b4bb04be54d9

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Mar 26 11:43:23 2012 +0200

jscript: Added decoding tests.

---

 dlls/jscript/tests/run.c |   83 +++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 79 insertions(+), 4 deletions(-)

diff --git a/dlls/jscript/tests/run.c b/dlls/jscript/tests/run.c
index 64a8c7e..dbf83e6 100644
--- a/dlls/jscript/tests/run.c
+++ b/dlls/jscript/tests/run.c
@@ -29,6 +29,8 @@
 
 static const CLSID CLSID_JScript =
     {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) \
     static BOOL expect_ ## func = FALSE, called_ ## func = FALSE
@@ -97,6 +99,8 @@ DEFINE_EXPECT(DeleteMemberByDispID);
 #define DISPID_TESTOBJ_PROP         0x2000
 #define DISPID_TESTOBJ_ONLYDISPID   0x2001
 
+#define JS_E_INVALID_CHAR 0x800a03f6
+
 static const WCHAR testW[] = {'t','e','s','t',0};
 static const CHAR testA[] = "test";
 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 int invoke_version;
 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
  * presume of the formatting of dates, numbers, etc.
@@ -1016,7 +1021,7 @@ static IActiveScript *create_script(void)
     VARIANT v;
     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);
     ok(hres == S_OK, "CoCreateInstance failed: %08x\n", hres);
 
@@ -1440,7 +1445,7 @@ static void test_isvisible(BOOL global_members)
     IUnknown_Release(parser);
 }
 
-static void run_tests(void)
+static BOOL run_tests(void)
 {
     HRESULT hres;
 
@@ -1450,7 +1455,7 @@ static void run_tests(void)
         script = create_script();
         if(!script) {
             win_skip("Could not create script\n");
-            return;
+            return FALSE;
         }
         IActiveScript_Release(script);
     }
@@ -1648,6 +1653,73 @@ static void run_tests(void)
         "Microsoft JScript runtime error",
         "Object expected",
         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)
@@ -1690,7 +1762,10 @@ START_TEST(run)
 
         trace("invoke version 2\n");
         invoke_version = 2;
-        run_tests();
+        if(run_tests()) {
+            trace("JSctipt.Encode tests...\n");
+            run_encoded_tests();
+        }
     }
 
     CoUninitialize();




More information about the wine-cvs mailing list