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