Jacek Caban : jscript: Added script site tests.

Alexandre Julliard julliard at winehq.org
Wed Sep 3 07:43:25 CDT 2008


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Sep  1 01:19:25 2008 +0200

jscript: Added script site tests.

---

 dlls/jscript/tests/jscript.c |  164 +++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 163 insertions(+), 1 deletions(-)

diff --git a/dlls/jscript/tests/jscript.c b/dlls/jscript/tests/jscript.c
index f7dd162..b0c61be 100644
--- a/dlls/jscript/tests/jscript.c
+++ b/dlls/jscript/tests/jscript.c
@@ -17,6 +17,7 @@
  */
 
 #define COBJMACROS
+#define CONST_VTABLE
 
 #include <initguid.h>
 #include <ole2.h>
@@ -30,6 +31,146 @@ DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
 static const CLSID CLSID_JScript =
     {0xf414c260,0x6ac0,0x11cf,{0xb6,0xd1,0x00,0xaa,0x00,0xbb,0xbb,0x58}};
 
+#define DEFINE_EXPECT(func) \
+    static BOOL expect_ ## func = FALSE, called_ ## func = FALSE
+
+#define SET_EXPECT(func) \
+    expect_ ## func = TRUE
+
+#define SET_CALLED(func) \
+    called_ ## func = TRUE
+
+#define CHECK_EXPECT2(func) \
+    do { \
+        ok(expect_ ##func, "unexpected call " #func "\n"); \
+        called_ ## func = TRUE; \
+    }while(0)
+
+#define CHECK_EXPECT(func) \
+    do { \
+        CHECK_EXPECT2(func); \
+        expect_ ## func = FALSE; \
+    }while(0)
+
+#define CHECK_CALLED(func) \
+    do { \
+        ok(called_ ## func, "expected " #func "\n"); \
+        expect_ ## func = called_ ## func = FALSE; \
+    }while(0)
+
+DEFINE_EXPECT(GetLCID);
+DEFINE_EXPECT(OnStateChange_STARTED);
+DEFINE_EXPECT(OnStateChange_CLOSED);
+DEFINE_EXPECT(OnStateChange_INITIALIZED);
+DEFINE_EXPECT(OnEnterScript);
+DEFINE_EXPECT(OnLeaveScript);
+
+static HRESULT WINAPI ActiveScriptSite_QueryInterface(IActiveScriptSite *iface, REFIID riid, void **ppv)
+{
+    *ppv = NULL;
+
+    if(IsEqualGUID(&IID_IUnknown, riid))
+        *ppv = iface;
+    else if(IsEqualGUID(&IID_IActiveScriptSite, riid))
+        *ppv = iface;
+    else
+        return E_NOINTERFACE;
+
+    IUnknown_AddRef((IUnknown*)*ppv);
+    return S_OK;
+}
+
+static ULONG WINAPI ActiveScriptSite_AddRef(IActiveScriptSite *iface)
+{
+    return 2;
+}
+
+static ULONG WINAPI ActiveScriptSite_Release(IActiveScriptSite *iface)
+{
+    return 1;
+}
+
+static HRESULT WINAPI ActiveScriptSite_GetLCID(IActiveScriptSite *iface, LCID *plcid)
+{
+    CHECK_EXPECT(GetLCID);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ActiveScriptSite_GetItemInfo(IActiveScriptSite *iface, LPCOLESTR pstrName,
+        DWORD dwReturnMask, IUnknown **ppiunkItem, ITypeInfo **ppti)
+{
+    ok(0, "unexpected call\n");
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ActiveScriptSite_GetDocVersionString(IActiveScriptSite *iface, BSTR *pbstrVersion)
+{
+    ok(0, "unexpected call\n");
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ActiveScriptSite_OnScriptTerminate(IActiveScriptSite *iface,
+        const VARIANT *pvarResult, const EXCEPINFO *pexcepinfo)
+{
+    ok(0, "unexpected call\n");
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ActiveScriptSite_OnStateChange(IActiveScriptSite *iface, SCRIPTSTATE ssScriptState)
+{
+    switch(ssScriptState) {
+    case SCRIPTSTATE_STARTED:
+        CHECK_EXPECT(OnStateChange_STARTED);
+        return S_OK;
+    case SCRIPTSTATE_CLOSED:
+        CHECK_EXPECT(OnStateChange_CLOSED);
+        return S_OK;
+    case SCRIPTSTATE_INITIALIZED:
+        CHECK_EXPECT(OnStateChange_INITIALIZED);
+        return S_OK;
+    default:
+        ok(0, "unexpected call %d\n", ssScriptState);
+    }
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ActiveScriptSite_OnScriptError(IActiveScriptSite *iface, IActiveScriptError *pscripterror)
+{
+    ok(0, "unexpected call\n");
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ActiveScriptSite_OnEnterScript(IActiveScriptSite *iface)
+{
+    CHECK_EXPECT(OnEnterScript);
+    return S_OK;
+}
+
+static HRESULT WINAPI ActiveScriptSite_OnLeaveScript(IActiveScriptSite *iface)
+{
+    CHECK_EXPECT(OnLeaveScript);
+    return S_OK;
+}
+
+#undef ACTSCPSITE_THIS
+
+static const IActiveScriptSiteVtbl ActiveScriptSiteVtbl = {
+    ActiveScriptSite_QueryInterface,
+    ActiveScriptSite_AddRef,
+    ActiveScriptSite_Release,
+    ActiveScriptSite_GetLCID,
+    ActiveScriptSite_GetItemInfo,
+    ActiveScriptSite_GetDocVersionString,
+    ActiveScriptSite_OnScriptTerminate,
+    ActiveScriptSite_OnStateChange,
+    ActiveScriptSite_OnScriptError,
+    ActiveScriptSite_OnEnterScript,
+    ActiveScriptSite_OnLeaveScript
+};
+
+static IActiveScriptSite ActiveScriptSite = { &ActiveScriptSiteVtbl };
+
 static void test_safety(IUnknown *unk)
 {
     IObjectSafety *safety;
@@ -94,6 +235,7 @@ static void test_jscript(void)
     IActiveScriptParse *parse;
     IActiveScript *script;
     IUnknown *unk;
+    ULONG ref;
     HRESULT hres;
 
     hres = CoCreateInstance(&CLSID_JScript, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
@@ -116,9 +258,29 @@ static void test_jscript(void)
     hres = IActiveScriptParse_InitNew(parse);
     ok(hres == E_UNEXPECTED, "InitNew failed: %08x, expected E_UNEXPECTED\n", hres);
 
+    hres = IActiveScript_SetScriptSite(script, NULL);
+    ok(hres == E_POINTER, "SetScriptSite failed: %08x, expected E_POINTER\n", hres);
+
+    SET_EXPECT(GetLCID);
+    SET_EXPECT(OnStateChange_INITIALIZED);
+    hres = IActiveScript_SetScriptSite(script, &ActiveScriptSite);
+    ok(hres == S_OK, "SetScriptSite failed: %08x\n", hres);
+    CHECK_CALLED(GetLCID);
+    CHECK_CALLED(OnStateChange_INITIALIZED);
+
+    hres = IActiveScript_SetScriptSite(script, &ActiveScriptSite);
+    ok(hres == E_UNEXPECTED, "SetScriptSite failed: %08x, expected E_UNEXPECTED\n", hres);
+
+    SET_EXPECT(OnStateChange_CLOSED);
+    hres = IActiveScript_Close(script);
+    ok(hres == S_OK, "Close failed: %08x\n", hres);
+    CHECK_CALLED(OnStateChange_CLOSED);
+
     IActiveScriptParse_Release(parse);
     IActiveScript_Release(script);
-    IUnknown_Release(unk);
+
+    ref = IUnknown_Release(unk);
+    ok(!ref, "ref = %d\n", ref);
 }
 
 START_TEST(jscript)




More information about the wine-cvs mailing list