Jacek Caban : jscript/tests: Add more script enter notification tests.

Alexandre Julliard julliard at winehq.org
Fri Jan 24 16:14:13 CST 2020


Module: wine
Branch: master
Commit: 9a9a1821a34d10bb3e96ce1e42a8d046133f0958
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=9a9a1821a34d10bb3e96ce1e42a8d046133f0958

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Jan 24 19:54:57 2020 +0100

jscript/tests: Add more script enter notification tests.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/jscript/tests/caller.c | 26 +++++++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)

diff --git a/dlls/jscript/tests/caller.c b/dlls/jscript/tests/caller.c
index ce74594df4..9fb59844c4 100644
--- a/dlls/jscript/tests/caller.c
+++ b/dlls/jscript/tests/caller.c
@@ -71,7 +71,12 @@ static const CLSID CLSID_JScript =
         expect_ ## func = called_ ## func = FALSE; \
     }while(0)
 
+#define CLEAR_CALLED(func) \
+    expect_ ## func = called_ ## func = FALSE
+
 DEFINE_EXPECT(testArgConv);
+DEFINE_EXPECT(OnEnterScript);
+DEFINE_EXPECT(OnLeaveScript);
 
 static IVariantChangeType *script_change_type;
 static IDispatch *stored_obj;
@@ -92,9 +97,19 @@ static void _call_change_type(unsigned line, IVariantChangeType *change_type, VA
     HRESULT hres;
 
     VariantInit(dst);
+    if(V_VT(src) == VT_DISPATCH && vt != VT_BOOL) {
+        SET_EXPECT(OnEnterScript);
+        SET_EXPECT(OnLeaveScript);
+    }
     hres = IVariantChangeType_ChangeType(change_type, dst, src, 0, vt);
     ok_(__FILE__,line)(hres == S_OK, "ChangeType(%d) failed: %08x\n", vt, hres);
     ok_(__FILE__,line)(V_VT(dst) == vt, "V_VT(dst) = %d\n", V_VT(dst));
+    if(V_VT(src) == VT_DISPATCH && vt != VT_BOOL) {
+        todo_wine
+        CHECK_CALLED(OnEnterScript);
+        todo_wine
+        CHECK_CALLED(OnLeaveScript);
+    }
 }
 
 #define change_type_fail(a,b,c,d) _change_type_fail(__LINE__,a,b,c,d)
@@ -341,7 +356,9 @@ static HRESULT WINAPI Test_InvokeEx(IDispatchEx *iface, DISPID id, LCID lcid, WO
         ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs);
         ok(V_VT(pdp->rgvarg) == VT_DISPATCH, "V_VT(rgvarg) = %d\n", V_VT(pdp->rgvarg));
 
+        CHECK_CALLED(OnEnterScript);
         test_caller(pspCaller, V_DISPATCH(pdp->rgvarg));
+        SET_EXPECT(OnLeaveScript);
 
         stored_obj = V_DISPATCH(pdp->rgvarg);
         IDispatch_AddRef(stored_obj);
@@ -440,11 +457,13 @@ static HRESULT WINAPI ActiveScriptSite_OnScriptError(IActiveScriptSite *iface, I
 
 static HRESULT WINAPI ActiveScriptSite_OnEnterScript(IActiveScriptSite *iface)
 {
+    CHECK_EXPECT(OnEnterScript);
     return E_NOTIMPL;
 }
 
 static HRESULT WINAPI ActiveScriptSite_OnLeaveScript(IActiveScriptSite *iface)
 {
+    CHECK_EXPECT(OnLeaveScript);
     return E_NOTIMPL;
 }
 
@@ -515,6 +534,7 @@ static void run_scripts(void)
     hres = IActiveScriptParse_QueryInterface(parser, &IID_IVariantChangeType, (void**)&script_change_type);
     ok(hres == S_OK, "Could not get IVariantChangeType iface: %08x\n", hres);
 
+    SET_EXPECT(OnEnterScript); /* checked in callback */
     SET_EXPECT(testArgConv);
     parse_script(parser,
                  L"var obj = {"
@@ -523,6 +543,7 @@ static void run_scripts(void)
                  L"};"
                  L"testArgConv(obj);");
     CHECK_CALLED(testArgConv);
+    CHECK_CALLED(OnLeaveScript); /* set in callback */
 
     test_change_types(script_change_type, stored_obj);
     IDispatch_Release(stored_obj);
@@ -541,9 +562,12 @@ static BOOL check_jscript(void)
     if(!parser)
         return FALSE;
 
+    SET_EXPECT(OnEnterScript);
+    SET_EXPECT(OnLeaveScript);
     hres = IActiveScriptParse_ParseScriptText(parser, L"if(!('localeCompare' in String.prototype)) throw 1;",
                                               NULL, NULL, NULL, 0, 0, 0, NULL, NULL);
-
+    CLEAR_CALLED(OnEnterScript);
+    CLEAR_CALLED(OnLeaveScript);
     if(hres == S_OK)
         hres = IActiveScriptParse_QueryInterface(parser, &IID_IActiveScriptProperty, (void**)&script_prop);
     IActiveScriptParse_Release(parser);




More information about the wine-cvs mailing list