Jacek Caban : jscript: Added a test using script dispatch after closing engine.

Alexandre Julliard julliard at winehq.org
Thu Dec 31 07:42:44 CST 2009


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Dec 30 19:49:45 2009 +0100

jscript: Added a test using script dispatch after closing engine.

---

 dlls/jscript/tests/jscript.c |   83 ++++++++++++++++++++++++++++++------------
 1 files changed, 60 insertions(+), 23 deletions(-)

diff --git a/dlls/jscript/tests/jscript.c b/dlls/jscript/tests/jscript.c
index ed94a89..006e055 100644
--- a/dlls/jscript/tests/jscript.c
+++ b/dlls/jscript/tests/jscript.c
@@ -203,37 +203,70 @@ static const IActiveScriptSiteVtbl ActiveScriptSiteVtbl = {
 
 static IActiveScriptSite ActiveScriptSite = { &ActiveScriptSiteVtbl };
 
-static void test_script_dispatch(IActiveScript *script, BOOL initialized)
+static void test_script_dispatch(IDispatchEx *dispex)
 {
-    IDispatchEx *dispex;
-    IDispatch *disp;
+    DISPPARAMS dp = {NULL,NULL,0,0};
+    EXCEPINFO ei;
     BSTR str;
     DISPID id;
+    VARIANT v;
     HRESULT hres;
 
-    disp = (void*)0xdeadbeef;
-    hres = IActiveScript_GetScriptDispatch(script, NULL, &disp);
-    if(!initialized) {
-        ok(hres == E_UNEXPECTED, "hres = %08x, expected E_UNEXPECTED\n", hres);
-        ok(!disp, "disp != NULL\n");
-        return;
-    }
+    str = a2bstr("ActiveXObject");
+    hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseSensitive, &id);
+    SysFreeString(str);
+    ok(hres == S_OK, "GetDispID failed: %08x\n", hres);
 
-    ok(hres == S_OK, "GetScriptDispatch failed: %08x\n", hres);
-    if(FAILED(hres))
-        return;
+    str = a2bstr("Math");
+    hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseSensitive, &id);
+    SysFreeString(str);
+    ok(hres == S_OK, "GetDispID failed: %08x\n", hres);
 
-    ok(disp != NULL, "disp == NULL\n");
-    hres = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (void**)&dispex);
-    IDispatch_Release(disp);
-    ok(hres == S_OK, "Could not get IDispatchEx interface: %08x\n", hres);
+    memset(&ei, 0, sizeof(ei));
+    hres = IDispatchEx_InvokeEx(dispex, id, 0, DISPATCH_PROPERTYGET, &dp, &v, &ei, NULL);
+    ok(hres == S_OK, "InvokeEx failed: %08x\n", hres);
+    ok(V_VT(&v) == VT_DISPATCH, "V_VT(v) = %d\n", V_VT(&v));
+    ok(V_DISPATCH(&v) != NULL, "V_DISPATCH(v) = NULL\n");
+    VariantClear(&v);
 
-    str = a2bstr("ActiveXObject");
+    str = a2bstr("String");
     hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseSensitive, &id);
     SysFreeString(str);
     ok(hres == S_OK, "GetDispID failed: %08x\n", hres);
 
-    IDispatchEx_Release(dispex);
+    memset(&ei, 0, sizeof(ei));
+    hres = IDispatchEx_InvokeEx(dispex, id, 0, DISPATCH_PROPERTYGET, &dp, &v, &ei, NULL);
+    ok(hres == S_OK, "InvokeEx failed: %08x\n", hres);
+    ok(V_VT(&v) == VT_DISPATCH, "V_VT(v) = %d\n", V_VT(&v));
+    ok(V_DISPATCH(&v) != NULL, "V_DISPATCH(v) = NULL\n");
+    VariantClear(&v);
+}
+
+static IDispatchEx *get_script_dispatch(IActiveScript *script)
+{
+    IDispatchEx *dispex;
+    IDispatch *disp;
+    HRESULT hres;
+
+    disp = (void*)0xdeadbeef;
+    hres = IActiveScript_GetScriptDispatch(script, NULL, &disp);
+    ok(hres == S_OK, "GetScriptDispatch failed: %08x\n", hres);
+
+    IDispatch_QueryInterface(disp, &IID_IDispatchEx, (void**)&dispex);
+    IDispatch_Release(disp);
+    ok(hres == S_OK, "Could not get IDispatch iface: %08x\n", hres);
+    return dispex;
+}
+
+static void test_no_script_dispatch(IActiveScript *script)
+{
+    IDispatch *disp;
+    HRESULT hres;
+
+    disp = (void*)0xdeadbeef;
+    hres = IActiveScript_GetScriptDispatch(script, NULL, &disp);
+    ok(hres == E_UNEXPECTED, "hres = %08x, expected E_UNEXPECTED\n", hres);
+    ok(!disp, "disp != NULL\n");
 }
 
 static void test_safety(IUnknown *unk)
@@ -342,6 +375,7 @@ static void test_jscript(void)
 {
     IActiveScriptParse *parse;
     IActiveScript *script;
+    IDispatchEx *dispex;
     IUnknown *unk;
     ULONG ref;
     HRESULT hres;
@@ -377,7 +411,7 @@ static void test_jscript(void)
     ok(hres == E_POINTER, "SetScriptSite failed: %08x, expected E_POINTER\n", hres);
 
     test_state(script, SCRIPTSTATE_UNINITIALIZED);
-    test_script_dispatch(script, FALSE);
+    test_no_script_dispatch(script);
 
     SET_EXPECT(GetLCID);
     SET_EXPECT(OnStateChange_INITIALIZED);
@@ -391,7 +425,8 @@ static void test_jscript(void)
     hres = IActiveScript_SetScriptSite(script, &ActiveScriptSite);
     ok(hres == E_UNEXPECTED, "SetScriptSite failed: %08x, expected E_UNEXPECTED\n", hres);
 
-    test_script_dispatch(script, TRUE);
+    dispex = get_script_dispatch(script);
+    test_script_dispatch(dispex);
 
     SET_EXPECT(OnStateChange_STARTED);
     hres = IActiveScript_SetScriptState(script, SCRIPTSTATE_STARTED);
@@ -406,7 +441,9 @@ static void test_jscript(void)
     CHECK_CALLED(OnStateChange_CLOSED);
 
     test_state(script, SCRIPTSTATE_CLOSED);
-    test_script_dispatch(script, FALSE);
+    test_no_script_dispatch(script);
+    test_script_dispatch(dispex);
+    IDispatchEx_Release(dispex);
 
     IUnknown_Release(parse);
     IActiveScript_Release(script);
@@ -474,7 +511,7 @@ static void test_jscript2(void)
     CHECK_CALLED(OnStateChange_CLOSED);
 
     test_state(script, SCRIPTSTATE_CLOSED);
-    test_script_dispatch(script, FALSE);
+    test_no_script_dispatch(script);
 
     IUnknown_Release(parse);
     IActiveScript_Release(script);




More information about the wine-cvs mailing list