ReactOS 0.4.17-dev-357-ga8f14ff
run.c File Reference
#include <stdio.h>
#include <ole2.h>
#include <dispex.h>
#include <activscp.h>
#include "vbsregexp55.h"
#include "wine/test.h"
Include dependency graph for run.c:

Go to the source code of this file.

Classes

struct  dispid_t
 

Macros

#define COBJMACROS
 
#define CONST_VTABLE
 
#define IActiveScriptParse_QueryInterface   IActiveScriptParse32_QueryInterface
 
#define IActiveScriptParse_Release   IActiveScriptParse32_Release
 
#define IActiveScriptParse_InitNew   IActiveScriptParse32_InitNew
 
#define IActiveScriptParse_ParseScriptText   IActiveScriptParse32_ParseScriptText
 
#define IActiveScriptParseProcedure2_Release   IActiveScriptParseProcedure2_32_Release
 
#define IActiveScriptParseProcedure2_ParseProcedureText   IActiveScriptParseProcedure2_32_ParseProcedureText
 
#define DEFINE_EXPECT(func)    static BOOL expect_ ## func = FALSE, called_ ## func = FALSE
 
#define SET_EXPECT(func)    expect_ ## func = TRUE
 
#define REF_EXPECT(func)    (&expect_ ## func), (&called_ ## func)
 
#define CHECK_EXPECT2(func)
 
#define CHECK_EXPECT(func)
 
#define CHECK_CALLED(func)
 
#define CHECK_NOT_CALLED(func)
 
#define CLEAR_CALLED(func)    expect_ ## func = called_ ## func = FALSE
 
#define DISPID_GLOBAL_REPORTSUCCESS   1000
 
#define DISPID_GLOBAL_TRACE   1001
 
#define DISPID_GLOBAL_OK   1002
 
#define DISPID_GLOBAL_GETVT   1003
 
#define DISPID_GLOBAL_ISENGLANG   1004
 
#define DISPID_GLOBAL_VBVAR   1005
 
#define DISPID_GLOBAL_TESTOBJ   1006
 
#define DISPID_GLOBAL_ISNULLDISP   1007
 
#define DISPID_GLOBAL_TESTDISP   1008
 
#define DISPID_GLOBAL_REFOBJ   1009
 
#define DISPID_GLOBAL_COUNTER   1010
 
#define DISPID_GLOBAL_PROPARGPUT   1011
 
#define DISPID_GLOBAL_PROPARGPUT1   1012
 
#define DISPID_GLOBAL_COLLOBJ   1013
 
#define DISPID_GLOBAL_DOUBLEASSTRING   1014
 
#define DISPID_GLOBAL_TESTARRAY   1015
 
#define DISPID_GLOBAL_THROWINT   1016
 
#define DISPID_GLOBAL_TESTOPTIONALARG   1017
 
#define DISPID_GLOBAL_LETOBJ   1018
 
#define DISPID_GLOBAL_SETOBJ   1019
 
#define DISPID_GLOBAL_TODO_WINE_OK   1020
 
#define DISPID_GLOBAL_WEEKSTARTDAY   1021
 
#define DISPID_GLOBAL_GLOBALCALLBACK   1022
 
#define DISPID_GLOBAL_TESTERROROBJECT   1023
 
#define DISPID_GLOBAL_THROWWITHDESC   1024
 
#define DISPID_GLOBAL_PROPARGSET   1025
 
#define DISPID_GLOBAL_UNKOBJ   1026
 
#define DISPID_GLOBAL_THROWEXCEPTION   1027
 
#define DISPID_GLOBAL_ISARRAYFIXED   1028
 
#define DISPID_GLOBAL_MAXCHARSIZE   1029
 
#define DISPID_TESTOBJ_PROPGET   2000
 
#define DISPID_TESTOBJ_PROPPUT   2001
 
#define DISPID_TESTOBJ_KEYWORD   2002
 
#define DISPID_COLLOBJ_RESET   3000
 
#define FACILITY_VBS   0xa
 
#define MAKE_VBSERROR(code)   MAKE_HRESULT(SEVERITY_ERROR, FACILITY_VBS, code)
 
#define test_grfdex(a, b)   _test_grfdex(__LINE__,a,b)
 
#define parse_htmlscript(a)   _parse_htmlscript(__LINE__,a)
 

Functions

 DEFINE_EXPECT (global_success_d)
 
 DEFINE_EXPECT (global_success_i)
 
 DEFINE_EXPECT (global_vbvar_d)
 
 DEFINE_EXPECT (global_vbvar_i)
 
 DEFINE_EXPECT (global_letobj_i)
 
 DEFINE_EXPECT (global_setobj_i)
 
 DEFINE_EXPECT (global_globalcallback_i)
 
 DEFINE_EXPECT (testobj_propget_d)
 
 DEFINE_EXPECT (testobj_propget_i)
 
 DEFINE_EXPECT (testobj_propput_d)
 
 DEFINE_EXPECT (testobj_propput_i)
 
 DEFINE_EXPECT (testobj_value_i)
 
 DEFINE_EXPECT (testobj_valueput_i)
 
 DEFINE_EXPECT (global_propargput_d)
 
 DEFINE_EXPECT (global_propargput_i)
 
 DEFINE_EXPECT (global_propargput1_d)
 
 DEFINE_EXPECT (global_propargput1_i)
 
 DEFINE_EXPECT (global_propargset_d)
 
 DEFINE_EXPECT (global_propargset_i)
 
 DEFINE_EXPECT (global_testoptionalarg_i)
 
 DEFINE_EXPECT (global_testerrorobject_i)
 
 DEFINE_EXPECT (collectionobj_newenum_i)
 
 DEFINE_EXPECT (Next)
 
 DEFINE_EXPECT (GetWindow)
 
 DEFINE_EXPECT (GetUIBehavior)
 
 DEFINE_EXPECT (EnableModeless)
 
 DEFINE_EXPECT (OnScriptError)
 
 DEFINE_EXPECT (OnEnterScript)
 
 DEFINE_EXPECT (OnLeaveScript)
 
static BSTR a2bstr (const char *str)
 
static const charvt2a (VARIANT *v)
 
static void detect_locale (void)
 
static HRESULT WINAPI ServiceProvider_QueryInterface (IServiceProvider *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI ServiceProvider_AddRef (IServiceProvider *iface)
 
static ULONG WINAPI ServiceProvider_Release (IServiceProvider *iface)
 
static HRESULT WINAPI ServiceProvider_QueryService (IServiceProvider *iface, REFGUID guidService, REFIID riid, void **ppv)
 
static void test_disp (IDispatch *disp)
 
static void test_safearray (SAFEARRAY *safearray, unsigned indims)
 
static void _test_grfdex (unsigned line, DWORD grfdex, DWORD expect)
 
static HRESULT WINAPI unkObj_QueryInterface (IUnknown *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI unkObj_AddRef (IUnknown *iface)
 
static ULONG WINAPI unkObj_Release (IUnknown *iface)
 
static HRESULT WINAPI EnumVARIANT_QueryInterface (IEnumVARIANT *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI EnumVARIANT_AddRef (IEnumVARIANT *iface)
 
static ULONG WINAPI EnumVARIANT_Release (IEnumVARIANT *iface)
 
static HRESULT WINAPI EnumVARIANT_Next (IEnumVARIANT *iface, ULONG celt, VARIANT *rgVar, ULONG *pCeltFetched)
 
static HRESULT WINAPI EnumVARIANT_Skip (IEnumVARIANT *iface, ULONG celt)
 
static HRESULT WINAPI EnumVARIANT_Reset (IEnumVARIANT *iface)
 
static HRESULT WINAPI EnumVARIANT_Clone (IEnumVARIANT *iface, IEnumVARIANT **ppEnum)
 
static BOOL get_dispid (BSTR name, const dispid_t *dispids, SIZE_T dispids_cnt, DISPID *id)
 
static HRESULT WINAPI DispatchEx_QueryInterface (IDispatchEx *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI DispatchEx_AddRef (IDispatchEx *iface)
 
static ULONG WINAPI DispatchEx_Release (IDispatchEx *iface)
 
static HRESULT WINAPI DispatchEx_GetTypeInfoCount (IDispatchEx *iface, UINT *pctinfo)
 
static HRESULT WINAPI DispatchEx_GetTypeInfo (IDispatchEx *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
 
static HRESULT WINAPI DispatchEx_GetIDsOfNames (IDispatchEx *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
 
static HRESULT WINAPI DispatchEx_Invoke (IDispatchEx *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
 
static HRESULT WINAPI DispatchEx_DeleteMemberByName (IDispatchEx *iface, BSTR bstrName, DWORD grfdex)
 
static HRESULT WINAPI DispatchEx_DeleteMemberByDispID (IDispatchEx *iface, DISPID id)
 
static HRESULT WINAPI DispatchEx_GetMemberProperties (IDispatchEx *iface, DISPID id, DWORD grfdexFetch, DWORD *pgrfdex)
 
static HRESULT WINAPI DispatchEx_GetMemberName (IDispatchEx *iface, DISPID id, BSTR *pbstrName)
 
static HRESULT WINAPI DispatchEx_GetNextDispID (IDispatchEx *iface, DWORD grfdex, DISPID id, DISPID *pid)
 
static HRESULT WINAPI DispatchEx_GetNameSpaceParent (IDispatchEx *iface, IUnknown **ppunk)
 
static HRESULT WINAPI DispatchEx_GetDispID (IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid)
 
static HRESULT WINAPI DispatchEx_InvokeEx (IDispatchEx *iface, DISPID id, LCID lcid, WORD wFlags, DISPPARAMS *pdp, VARIANT *pvarRes, EXCEPINFO *pei, IServiceProvider *pspCaller)
 
static HRESULT WINAPI testObj_GetDispID (IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid)
 
static HRESULT WINAPI testObj_InvokeEx (IDispatchEx *iface, DISPID id, LCID lcid, WORD wFlags, DISPPARAMS *pdp, VARIANT *pvarRes, EXCEPINFO *pei, IServiceProvider *pspCaller)
 
static HRESULT WINAPI enumDisp_QueryInterface (IDispatchEx *iface, REFIID riid, void **ppv)
 
static HRESULT WINAPI collectionObj_GetDispID (IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid)
 
static HRESULT WINAPI collectionObj_InvokeEx (IDispatchEx *iface, DISPID id, LCID lcid, WORD wFlags, DISPPARAMS *pdp, VARIANT *pvarRes, EXCEPINFO *pei, IServiceProvider *pspCaller)
 
static ULONG WINAPI RefObj_AddRef (IDispatchEx *iface)
 
static ULONG WINAPI RefObj_Release (IDispatchEx *iface)
 
static ULONG WINAPI Global_AddRef (IDispatchEx *iface)
 
static ULONG WINAPI Global_Release (IDispatchEx *iface)
 
static HRESULT WINAPI Global_GetDispID (IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid)
 
static HRESULT WINAPI Global_InvokeEx (IDispatchEx *iface, DISPID id, LCID lcid, WORD wFlags, DISPPARAMS *pdp, VARIANT *pvarRes, EXCEPINFO *pei, IServiceProvider *pspCaller)
 
static HRESULT WINAPI ActiveScriptSiteWindow_QueryInterface (IActiveScriptSiteWindow *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI ActiveScriptSiteWindow_AddRef (IActiveScriptSiteWindow *iface)
 
static ULONG WINAPI ActiveScriptSiteWindow_Release (IActiveScriptSiteWindow *iface)
 
static HRESULT WINAPI ActiveScriptSiteWindow_GetWindow (IActiveScriptSiteWindow *iface, HWND *phwnd)
 
static HRESULT WINAPI ActiveScriptSiteWindow_EnableModeless (IActiveScriptSiteWindow *iface, BOOL fEnable)
 
static HRESULT WINAPI ActiveScriptSiteUIControl_QueryInterface (IActiveScriptSiteUIControl *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI ActiveScriptSiteUIControl_AddRef (IActiveScriptSiteUIControl *iface)
 
static ULONG WINAPI ActiveScriptSiteUIControl_Release (IActiveScriptSiteUIControl *iface)
 
static HRESULT WINAPI ActiveScriptSiteUIControl_GetUIBehavior (IActiveScriptSiteUIControl *iface, SCRIPTUICITEM UicItem, SCRIPTUICHANDLING *pUicHandling)
 
static HRESULT WINAPI ActiveScriptSite_QueryInterface (IActiveScriptSite *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI ActiveScriptSite_AddRef (IActiveScriptSite *iface)
 
static ULONG WINAPI ActiveScriptSite_Release (IActiveScriptSite *iface)
 
static HRESULT WINAPI ActiveScriptSite_GetLCID (IActiveScriptSite *iface, LCID *plcid)
 
static HRESULT WINAPI ActiveScriptSite_GetItemInfo (IActiveScriptSite *iface, LPCOLESTR pstrName, DWORD dwReturnMask, IUnknown **ppiunkItem, ITypeInfo **ppti)
 
static HRESULT WINAPI ActiveScriptSite_GetDocVersionString (IActiveScriptSite *iface, BSTR *pbstrVersion)
 
static HRESULT WINAPI ActiveScriptSite_OnScriptTerminate (IActiveScriptSite *iface, const VARIANT *pvarResult, const EXCEPINFO *pexcepinfo)
 
static HRESULT WINAPI ActiveScriptSite_OnStateChange (IActiveScriptSite *iface, SCRIPTSTATE ssScriptState)
 
static HRESULT WINAPI ActiveScriptSite_OnScriptError (IActiveScriptSite *iface, IActiveScriptError *pscripterror)
 
static HRESULT WINAPI ActiveScriptSite_OnEnterScript (IActiveScriptSite *iface)
 
static HRESULT WINAPI ActiveScriptSite_OnLeaveScript (IActiveScriptSite *iface)
 
static IActiveScriptcreate_script (void)
 
static IActiveScriptcreate_and_init_script (DWORD flags, BOOL start)
 
static void close_script (IActiveScript *script)
 
static HRESULT parse_script (DWORD flags, BSTR script_str, const WCHAR *delim)
 
static void parse_script_wf (DWORD flags, const WCHAR *src)
 
static HRESULT parse_script_wr (const WCHAR *src)
 
static void test_parse_context (void)
 
static void parse_script_w (const WCHAR *src)
 
static void _parse_htmlscript (unsigned line, const WCHAR *src)
 
static IDispatchExparse_procedure (IActiveScriptParseProcedure2 *parse_proc, const WCHAR *src, DWORD flags)
 
static void test_procedures (void)
 
static void free_ei (EXCEPINFO *ei)
 
static void test_callbacks (void)
 
static void test_gc (void)
 
static void test_parse_errors (void)
 
static void test_msgbox (void)
 
static HRESULT test_global_vars_ref (BOOL use_close)
 
static void test_isexpression (void)
 
static void test_multiple_parse (void)
 
static BSTR get_script_from_file (const char *filename)
 
static void run_from_file (const char *filename)
 
static void run_from_res (const char *name)
 
static void run_tests (void)
 
static BOOL check_vbscript (void)
 
 START_TEST (run)
 

Variables

const CLSID CLSID_VBScript
 
const CLSID CLSID_VBScriptRegExp
 
static BOOL strict_dispid_check
 
static BOOL is_english
 
static BOOL allow_ui
 
static UINT MaxCharSize
 
static int first_day_of_week
 
static const chartest_name = "(null)"
 
static int test_counter
 
static SCRIPTUICHANDLING uic_handling = SCRIPTUICHANDLING_NOUIERROR
 
static IDispatchEx testObj = { &testObjVtbl }
 
static HRESULT onerror_hres = E_NOTIMPL
 
static BOOL strict_enter_script
 
static const IServiceProviderVtbl ServiceProviderVtbl
 
static IServiceProvider caller_sp = { &ServiceProviderVtbl }
 
static IDispatchEx enumDisp = { &enumDispVtbl }
 
static const IUnknownVtbl unkObjVtbl
 
static IUnknown unkObj = { &unkObjVtbl }
 
static unsigned next_cnt
 
static const IEnumVARIANTVtbl EnumVARIANTVtbl
 
static IEnumVARIANT enumObj = { &EnumVARIANTVtbl }
 
static IDispatchExVtbl testObjVtbl
 
static IDispatchExVtbl enumDispVtbl
 
static IDispatchExVtbl collectionObjVtbl
 
static IDispatchEx collectionObj = { &collectionObjVtbl }
 
static ULONG refobj_ref
 
static IDispatchExVtbl RefObjVtbl
 
static IDispatchEx RefObj = { &RefObjVtbl }
 
static ULONG global_ref
 
static IDispatchExVtbl GlobalVtbl
 
static IDispatchEx Global = { &GlobalVtbl }
 
static const IActiveScriptSiteWindowVtbl ActiveScriptSiteWindowVtbl
 
static IActiveScriptSiteWindow ActiveScriptSiteWindow = { &ActiveScriptSiteWindowVtbl }
 
static const IActiveScriptSiteUIControlVtbl ActiveScriptSiteUIControlVtbl
 
static IActiveScriptSiteUIControl ActiveScriptSiteUIControl = { &ActiveScriptSiteUIControlVtbl }
 
static IActiveScriptError ** store_script_error
 
static ULONG error_line
 
static LONG error_char
 
static const IActiveScriptSiteVtbl ActiveScriptSiteVtbl
 
static IActiveScriptSite ActiveScriptSite = { &ActiveScriptSiteVtbl }
 

Macro Definition Documentation

◆ CHECK_CALLED

#define CHECK_CALLED (   func)
Value:
do { \
ok(called_ ## func, "expected " #func "\n"); \
expect_ ## func = called_ ## func = FALSE; \
}while(0)
#define FALSE
Definition: types.h:117
GLenum func
Definition: glext.h:6028
#define expect_(expected, got, precision)
Definition: font.c:34

Definition at line 76 of file run.c.

◆ CHECK_EXPECT

#define CHECK_EXPECT (   func)
Value:
do { \
CHECK_EXPECT2(func); \
expect_ ## func = FALSE; \
}while(0)

Definition at line 70 of file run.c.

◆ CHECK_EXPECT2

#define CHECK_EXPECT2 (   func)
Value:
do { \
ok(expect_ ##func, "unexpected call " #func "\n"); \
called_ ## func = TRUE; \
}while(0)
#define TRUE
Definition: types.h:120

Definition at line 64 of file run.c.

◆ CHECK_NOT_CALLED

#define CHECK_NOT_CALLED (   func)
Value:
do { \
ok(!called_ ## func, "unexpected " #func "\n"); \
expect_ ## func = called_ ## func = FALSE; \
}while(0)

Definition at line 82 of file run.c.

◆ CLEAR_CALLED

#define CLEAR_CALLED (   func)     expect_ ## func = called_ ## func = FALSE

Definition at line 88 of file run.c.

◆ COBJMACROS

#define COBJMACROS

Definition at line 21 of file run.c.

◆ CONST_VTABLE

#define CONST_VTABLE

Definition at line 22 of file run.c.

◆ DEFINE_EXPECT

#define DEFINE_EXPECT (   func)     static BOOL expect_ ## func = FALSE, called_ ## func = FALSE

Definition at line 55 of file run.c.

◆ DISPID_COLLOBJ_RESET

#define DISPID_COLLOBJ_RESET   3000

Definition at line 156 of file run.c.

◆ DISPID_GLOBAL_COLLOBJ

#define DISPID_GLOBAL_COLLOBJ   1013

Definition at line 134 of file run.c.

◆ DISPID_GLOBAL_COUNTER

#define DISPID_GLOBAL_COUNTER   1010

Definition at line 131 of file run.c.

◆ DISPID_GLOBAL_DOUBLEASSTRING

#define DISPID_GLOBAL_DOUBLEASSTRING   1014

Definition at line 135 of file run.c.

◆ DISPID_GLOBAL_GETVT

#define DISPID_GLOBAL_GETVT   1003

Definition at line 124 of file run.c.

◆ DISPID_GLOBAL_GLOBALCALLBACK

#define DISPID_GLOBAL_GLOBALCALLBACK   1022

Definition at line 143 of file run.c.

◆ DISPID_GLOBAL_ISARRAYFIXED

#define DISPID_GLOBAL_ISARRAYFIXED   1028

Definition at line 149 of file run.c.

◆ DISPID_GLOBAL_ISENGLANG

#define DISPID_GLOBAL_ISENGLANG   1004

Definition at line 125 of file run.c.

◆ DISPID_GLOBAL_ISNULLDISP

#define DISPID_GLOBAL_ISNULLDISP   1007

Definition at line 128 of file run.c.

◆ DISPID_GLOBAL_LETOBJ

#define DISPID_GLOBAL_LETOBJ   1018

Definition at line 139 of file run.c.

◆ DISPID_GLOBAL_MAXCHARSIZE

#define DISPID_GLOBAL_MAXCHARSIZE   1029

Definition at line 150 of file run.c.

◆ DISPID_GLOBAL_OK

#define DISPID_GLOBAL_OK   1002

Definition at line 123 of file run.c.

◆ DISPID_GLOBAL_PROPARGPUT

#define DISPID_GLOBAL_PROPARGPUT   1011

Definition at line 132 of file run.c.

◆ DISPID_GLOBAL_PROPARGPUT1

#define DISPID_GLOBAL_PROPARGPUT1   1012

Definition at line 133 of file run.c.

◆ DISPID_GLOBAL_PROPARGSET

#define DISPID_GLOBAL_PROPARGSET   1025

Definition at line 146 of file run.c.

◆ DISPID_GLOBAL_REFOBJ

#define DISPID_GLOBAL_REFOBJ   1009

Definition at line 130 of file run.c.

◆ DISPID_GLOBAL_REPORTSUCCESS

#define DISPID_GLOBAL_REPORTSUCCESS   1000

Definition at line 121 of file run.c.

◆ DISPID_GLOBAL_SETOBJ

#define DISPID_GLOBAL_SETOBJ   1019

Definition at line 140 of file run.c.

◆ DISPID_GLOBAL_TESTARRAY

#define DISPID_GLOBAL_TESTARRAY   1015

Definition at line 136 of file run.c.

◆ DISPID_GLOBAL_TESTDISP

#define DISPID_GLOBAL_TESTDISP   1008

Definition at line 129 of file run.c.

◆ DISPID_GLOBAL_TESTERROROBJECT

#define DISPID_GLOBAL_TESTERROROBJECT   1023

Definition at line 144 of file run.c.

◆ DISPID_GLOBAL_TESTOBJ

#define DISPID_GLOBAL_TESTOBJ   1006

Definition at line 127 of file run.c.

◆ DISPID_GLOBAL_TESTOPTIONALARG

#define DISPID_GLOBAL_TESTOPTIONALARG   1017

Definition at line 138 of file run.c.

◆ DISPID_GLOBAL_THROWEXCEPTION

#define DISPID_GLOBAL_THROWEXCEPTION   1027

Definition at line 148 of file run.c.

◆ DISPID_GLOBAL_THROWINT

#define DISPID_GLOBAL_THROWINT   1016

Definition at line 137 of file run.c.

◆ DISPID_GLOBAL_THROWWITHDESC

#define DISPID_GLOBAL_THROWWITHDESC   1024

Definition at line 145 of file run.c.

◆ DISPID_GLOBAL_TODO_WINE_OK

#define DISPID_GLOBAL_TODO_WINE_OK   1020

Definition at line 141 of file run.c.

◆ DISPID_GLOBAL_TRACE

#define DISPID_GLOBAL_TRACE   1001

Definition at line 122 of file run.c.

◆ DISPID_GLOBAL_UNKOBJ

#define DISPID_GLOBAL_UNKOBJ   1026

Definition at line 147 of file run.c.

◆ DISPID_GLOBAL_VBVAR

#define DISPID_GLOBAL_VBVAR   1005

Definition at line 126 of file run.c.

◆ DISPID_GLOBAL_WEEKSTARTDAY

#define DISPID_GLOBAL_WEEKSTARTDAY   1021

Definition at line 142 of file run.c.

◆ DISPID_TESTOBJ_KEYWORD

#define DISPID_TESTOBJ_KEYWORD   2002

Definition at line 154 of file run.c.

◆ DISPID_TESTOBJ_PROPGET

#define DISPID_TESTOBJ_PROPGET   2000

Definition at line 152 of file run.c.

◆ DISPID_TESTOBJ_PROPPUT

#define DISPID_TESTOBJ_PROPPUT   2001

Definition at line 153 of file run.c.

◆ FACILITY_VBS

#define FACILITY_VBS   0xa

Definition at line 158 of file run.c.

◆ IActiveScriptParse_InitNew

#define IActiveScriptParse_InitNew   IActiveScriptParse32_InitNew

Definition at line 45 of file run.c.

◆ IActiveScriptParse_ParseScriptText

#define IActiveScriptParse_ParseScriptText   IActiveScriptParse32_ParseScriptText

Definition at line 46 of file run.c.

◆ IActiveScriptParse_QueryInterface

#define IActiveScriptParse_QueryInterface   IActiveScriptParse32_QueryInterface

Definition at line 43 of file run.c.

◆ IActiveScriptParse_Release

#define IActiveScriptParse_Release   IActiveScriptParse32_Release

Definition at line 44 of file run.c.

◆ IActiveScriptParseProcedure2_ParseProcedureText

#define IActiveScriptParseProcedure2_ParseProcedureText   IActiveScriptParseProcedure2_32_ParseProcedureText

Definition at line 48 of file run.c.

◆ IActiveScriptParseProcedure2_Release

#define IActiveScriptParseProcedure2_Release   IActiveScriptParseProcedure2_32_Release

Definition at line 47 of file run.c.

◆ MAKE_VBSERROR

#define MAKE_VBSERROR (   code)    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_VBS, code)

Definition at line 159 of file run.c.

◆ parse_htmlscript

#define parse_htmlscript (   a)    _parse_htmlscript(__LINE__,a)

Definition at line 2208 of file run.c.

◆ REF_EXPECT

#define REF_EXPECT (   func)     (&expect_ ## func), (&called_ ## func)

Definition at line 61 of file run.c.

◆ SET_EXPECT

#define SET_EXPECT (   func)     expect_ ## func = TRUE

Definition at line 58 of file run.c.

◆ test_grfdex

#define test_grfdex (   a,
  b 
)    _test_grfdex(__LINE__,a,b)

Definition at line 600 of file run.c.

Function Documentation

◆ _parse_htmlscript()

static void _parse_htmlscript ( unsigned  line,
const WCHAR src 
)
static

Definition at line 2209 of file run.c.

2210{
2211 BSTR tmp;
2212 HRESULT hres;
2213
2214 tmp = SysAllocString(src);
2215 hres = parse_script(SCRIPTITEM_GLOBALMEMBERS, tmp, L"</SCRIPT>");
2216 SysFreeString(tmp);
2217 ok_(__FILE__,line)(hres == S_OK, "parse_script failed: %08lx\n", hres);
2218}
#define ok_(x1, x2)
Definition: atltest.h:61
OLECHAR * BSTR
Definition: compat.h:2293
#define L(x)
Definition: resources.c:13
GLenum src
Definition: glext.h:6340
#define S_OK
Definition: intsafe.h:52
HRESULT hres
Definition: protocol.c:465
#define parse_script(p, s)
Definition: activex.c:681
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:238
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:271
Definition: parser.c:49

◆ _test_grfdex()

static void _test_grfdex ( unsigned  line,
DWORD  grfdex,
DWORD  expect 
)
static

Definition at line 601 of file run.c.

602{
603 ok_(__FILE__,line)(grfdex == expect, "grfdex = %lx, expected %lx\n", grfdex, expect);
604}
#define expect(EXPECTED, GOT)
Definition: SystemMenu.c:483

◆ a2bstr()

static BSTR a2bstr ( const char str)
static

Definition at line 171 of file run.c.

172{
173 BSTR ret;
174 int len;
175
176 len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
179
180 return ret;
181}
#define NULL
Definition: types.h:112
#define CP_ACP
Definition: compat.h:109
#define MultiByteToWideChar
Definition: compat.h:110
return ret
Definition: mutex.c:146
GLenum GLsizei len
Definition: glext.h:6722
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
Definition: oleaut.c:339
const WCHAR * str

Referenced by Dispatch_Invoke(), and Global_InvokeEx().

◆ ActiveScriptSite_AddRef()

static ULONG WINAPI ActiveScriptSite_AddRef ( IActiveScriptSite iface)
static

Definition at line 1920 of file run.c.

1921{
1922 return 2;
1923}

◆ ActiveScriptSite_GetDocVersionString()

static HRESULT WINAPI ActiveScriptSite_GetDocVersionString ( IActiveScriptSite iface,
BSTR pbstrVersion 
)
static

Definition at line 1950 of file run.c.

1951{
1952 return E_NOTIMPL;
1953}
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ ActiveScriptSite_GetItemInfo()

static HRESULT WINAPI ActiveScriptSite_GetItemInfo ( IActiveScriptSite iface,
LPCOLESTR  pstrName,
DWORD  dwReturnMask,
IUnknown **  ppiunkItem,
ITypeInfo **  ppti 
)
static

Definition at line 1936 of file run.c.

1938{
1939 ok(dwReturnMask == SCRIPTINFO_IUNKNOWN, "unexpected dwReturnMask %lx\n", dwReturnMask);
1940 ok(!ppti, "ppti != NULL\n");
1941
1942 if(lstrcmpW(pstrName, L"test"))
1943 ok(0, "unexpected pstrName %s\n", wine_dbgstr_w(pstrName));
1944
1945 *ppiunkItem = (IUnknown*)&Global;
1946 IUnknown_AddRef(*ppiunkItem);
1947 return S_OK;
1948}
#define ok(value,...)
Definition: atltest.h:57
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
Definition: locale.c:4152
#define wine_dbgstr_w
Definition: kernel32.h:34
static IDispatchEx Global
Definition: run.c:2017

◆ ActiveScriptSite_GetLCID()

static HRESULT WINAPI ActiveScriptSite_GetLCID ( IActiveScriptSite iface,
LCID plcid 
)
static

Definition at line 1930 of file run.c.

1931{
1932 *plcid = GetUserDefaultLCID();
1933 return S_OK;
1934}
LCID WINAPI GetUserDefaultLCID(void)
Definition: locale.c:1216

◆ ActiveScriptSite_OnEnterScript()

static HRESULT WINAPI ActiveScriptSite_OnEnterScript ( IActiveScriptSite iface)
static

Definition at line 2002 of file run.c.

2003{
2005 CHECK_EXPECT(OnEnterScript);
2006 return E_NOTIMPL;
2007}
#define CHECK_EXPECT(func)
Definition: run.c:67
static BOOL strict_enter_script
Definition: run.c:169

◆ ActiveScriptSite_OnLeaveScript()

static HRESULT WINAPI ActiveScriptSite_OnLeaveScript ( IActiveScriptSite iface)
static

Definition at line 2009 of file run.c.

2010{
2012 CHECK_EXPECT(OnLeaveScript);
2013 return E_NOTIMPL;
2014}

◆ ActiveScriptSite_OnScriptError()

static HRESULT WINAPI ActiveScriptSite_OnScriptError ( IActiveScriptSite iface,
IActiveScriptError pscripterror 
)
static

Definition at line 1970 of file run.c.

1971{
1973
1974 hres = IActiveScriptError_GetSourcePosition(pscripterror, NULL, &error_line, &error_char);
1975 ok(hres == S_OK, "GetSourcePosition failed: %08lx\n", hres);
1976
1977 if(!expect_OnScriptError) {
1979
1980 hres = IActiveScriptError_GetExceptionInfo(pscripterror, &info);
1981 if(SUCCEEDED(hres))
1982 trace("Error in line %lu: %x %s\n", error_line + 1, info.wCode, wine_dbgstr_w(info.bstrDescription));
1983 }else {
1984 IDispatchEx *dispex;
1985
1986 hres = IActiveScriptError_QueryInterface(pscripterror, &IID_IDispatchEx, (void**)&dispex);
1987 ok(hres == E_NOINTERFACE, "QI(IDispatchEx) returned: %08lx\n", hres);
1988 }
1989
1990 if(store_script_error) {
1991 IActiveScriptError_AddRef(pscripterror);
1992 *store_script_error = pscripterror;
1994 }
1995
1996 CHECK_EXPECT(OnScriptError);
1998
1999 return hr;
2000}
#define trace
Definition: atltest.h:70
HRESULT hr
Definition: delayimp.cpp:582
#define SUCCEEDED(hr)
Definition: intsafe.h:50
static IActiveScriptError ** store_script_error
Definition: run.c:1966
static HRESULT onerror_hres
Definition: run.c:168
static LONG error_char
Definition: run.c:1968
static ULONG error_line
Definition: run.c:1967
struct stdole::EXCEPINFO EXCEPINFO
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ ActiveScriptSite_OnScriptTerminate()

static HRESULT WINAPI ActiveScriptSite_OnScriptTerminate ( IActiveScriptSite iface,
const VARIANT pvarResult,
const EXCEPINFO *  pexcepinfo 
)
static

Definition at line 1955 of file run.c.

1957{
1958 return E_NOTIMPL;
1959}

◆ ActiveScriptSite_OnStateChange()

static HRESULT WINAPI ActiveScriptSite_OnStateChange ( IActiveScriptSite iface,
SCRIPTSTATE  ssScriptState 
)
static

Definition at line 1961 of file run.c.

1962{
1963 return E_NOTIMPL;
1964}

◆ ActiveScriptSite_QueryInterface()

static HRESULT WINAPI ActiveScriptSite_QueryInterface ( IActiveScriptSite iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 1901 of file run.c.

1902{
1903 *ppv = NULL;
1904
1906 *ppv = iface;
1907 else if(IsEqualGUID(&IID_IActiveScriptSite, riid))
1908 *ppv = iface;
1909 else if(IsEqualGUID(&IID_IActiveScriptSiteWindow, riid))
1911 else if(IsEqualGUID(&IID_IActiveScriptSiteUIControl, riid))
1913 else
1914 return E_NOINTERFACE;
1915
1916 IUnknown_AddRef((IUnknown*)*ppv);
1917 return S_OK;
1918}
const GUID IID_IUnknown
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
static IActiveScriptSiteWindow ActiveScriptSiteWindow
Definition: run.c:1863
static IActiveScriptSiteUIControl ActiveScriptSiteUIControl
Definition: run.c:1899
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147

◆ ActiveScriptSite_Release()

static ULONG WINAPI ActiveScriptSite_Release ( IActiveScriptSite iface)
static

Definition at line 1925 of file run.c.

1926{
1927 return 1;
1928}

◆ ActiveScriptSiteUIControl_AddRef()

static ULONG WINAPI ActiveScriptSiteUIControl_AddRef ( IActiveScriptSiteUIControl iface)
static

Definition at line 1871 of file run.c.

1872{
1873 return 2;
1874}

◆ ActiveScriptSiteUIControl_GetUIBehavior()

static HRESULT WINAPI ActiveScriptSiteUIControl_GetUIBehavior ( IActiveScriptSiteUIControl iface,
SCRIPTUICITEM  UicItem,
SCRIPTUICHANDLING pUicHandling 
)
static

Definition at line 1881 of file run.c.

1883{
1884 if(!allow_ui) {
1885 CHECK_EXPECT(GetUIBehavior);
1886 ok(UicItem == SCRIPTUICITEM_MSGBOX, "UidItem = %d\n", UicItem);
1887 }
1888 *pUicHandling = uic_handling;
1889 return S_OK;
1890}
@ SCRIPTUICITEM_MSGBOX
Definition: activscp.idl:72
static BOOL allow_ui
Definition: run.c:161
static SCRIPTUICHANDLING uic_handling
Definition: run.c:166

◆ ActiveScriptSiteUIControl_QueryInterface()

static HRESULT WINAPI ActiveScriptSiteUIControl_QueryInterface ( IActiveScriptSiteUIControl iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 1865 of file run.c.

1866{
1867 ok(0, "unexpected call\n");
1868 return E_NOINTERFACE;
1869}

◆ ActiveScriptSiteUIControl_Release()

static ULONG WINAPI ActiveScriptSiteUIControl_Release ( IActiveScriptSiteUIControl iface)
static

Definition at line 1876 of file run.c.

1877{
1878 return 1;
1879}

◆ ActiveScriptSiteWindow_AddRef()

static ULONG WINAPI ActiveScriptSiteWindow_AddRef ( IActiveScriptSiteWindow iface)
static

Definition at line 1827 of file run.c.

1828{
1829 return 2;
1830}

◆ ActiveScriptSiteWindow_EnableModeless()

static HRESULT WINAPI ActiveScriptSiteWindow_EnableModeless ( IActiveScriptSiteWindow iface,
BOOL  fEnable 
)
static

Definition at line 1845 of file run.c.

1846{
1847 if(allow_ui)
1848 return S_OK;
1849
1851 ok(!fEnable, "fEnable = %x\n", fEnable);
1852 return E_FAIL;
1853}
#define E_FAIL
Definition: ddrawi.h:102
#define EnableModeless(type)
Definition: ordinal.c:3084

◆ ActiveScriptSiteWindow_GetWindow()

static HRESULT WINAPI ActiveScriptSiteWindow_GetWindow ( IActiveScriptSiteWindow iface,
HWND phwnd 
)
static

Definition at line 1837 of file run.c.

1838{
1839 if(!allow_ui)
1841 *phwnd = NULL;
1842 return S_OK;
1843}
HWND WINAPI GetWindow(_In_ HWND, _In_ UINT)

◆ ActiveScriptSiteWindow_QueryInterface()

static HRESULT WINAPI ActiveScriptSiteWindow_QueryInterface ( IActiveScriptSiteWindow iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 1821 of file run.c.

1822{
1823 ok(0, "unexpected call\n");
1824 return E_NOINTERFACE;
1825}

◆ ActiveScriptSiteWindow_Release()

static ULONG WINAPI ActiveScriptSiteWindow_Release ( IActiveScriptSiteWindow iface)
static

Definition at line 1832 of file run.c.

1833{
1834 return 1;
1835}

◆ check_vbscript()

static BOOL check_vbscript ( void  )
static

Definition at line 3447 of file run.c.

3448{
3449 IRegExp2 *regexp;
3450 IUnknown *unk;
3451 HRESULT hres;
3452
3454 CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
3455 &IID_IUnknown, (void**)&unk);
3457 return FALSE;
3458 ok(hres == S_OK, "CoCreateInstance(CLSID_VBScriptRegExp) failed: %lx\n", hres);
3459
3460 hres = IUnknown_QueryInterface(unk, &IID_IRegExp2, (void**)&regexp);
3461 if(SUCCEEDED(hres))
3462 IRegExp2_Release(regexp);
3463 IUnknown_Release(unk);
3464
3465 return hres == S_OK;
3466}
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
Definition: combase.c:1685
const CLSID CLSID_VBScriptRegExp
#define REGDB_E_CLASSNOTREG
Definition: winerror.h:3801

Referenced by START_TEST().

◆ close_script()

static void close_script ( IActiveScript script)
static

Definition at line 2078 of file run.c.

2079{
2080 ULONG ref;
2081 HRESULT hres;
2082
2083 hres = IActiveScript_Close(script);
2084 ok(hres == S_OK, "Close failed: %08lx\n", hres);
2085
2086 ref = IActiveScript_Release(script);
2087 ok(!ref, "ref=%lu\n", ref);
2088}
script
Definition: msipriv.h:383
Definition: send.c:48
uint32_t ULONG
Definition: typedefs.h:59

◆ collectionObj_GetDispID()

static HRESULT WINAPI collectionObj_GetDispID ( IDispatchEx iface,
BSTR  bstrName,
DWORD  grfdex,
DISPID pid 
)
static

Definition at line 1052 of file run.c.

1053{
1054 if(!lstrcmpW(bstrName, L"reset")) {
1056 return S_OK;
1057 }
1058
1059 ok(0, "unexpected call %s\n", wine_dbgstr_w(bstrName));
1060 return DISP_E_UNKNOWNNAME;
1061}
#define DISPID_COLLOBJ_RESET
Definition: run.c:156
_In_ ULONG_PTR _In_ ULONG _Out_ ULONG_PTR * pid
Definition: winddi.h:3837
#define DISP_E_UNKNOWNNAME
Definition: winerror.h:3618

◆ collectionObj_InvokeEx()

static HRESULT WINAPI collectionObj_InvokeEx ( IDispatchEx iface,
DISPID  id,
LCID  lcid,
WORD  wFlags,
DISPPARAMS *  pdp,
VARIANT pvarRes,
EXCEPINFO *  pei,
IServiceProvider pspCaller 
)
static

Definition at line 1063 of file run.c.

1065{
1066 switch(id) {
1067 case DISPID_NEWENUM:
1069 CHECK_EXPECT(collectionobj_newenum_i);
1070
1071 ok(wFlags == (DISPATCH_PROPERTYGET|DISPATCH_METHOD), "wFlags = %x\n", wFlags);
1072 ok(pdp != NULL, "pdp == NULL\n");
1073 ok(!pdp->rgvarg, "rgvarg == NULL\n");
1074 ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
1075 ok(!pdp->cArgs, "cArgs = %d\n", pdp->cArgs);
1076 ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs);
1077 ok(pvarRes != NULL, "pvarRes == NULL\n");
1078 ok(pei != NULL, "pei == NULL\n");
1079
1080 V_VT(pvarRes) = VT_UNKNOWN;
1081 V_UNKNOWN(pvarRes) = (IUnknown*)&enumObj;
1082 return S_OK;
1084 next_cnt = 0;
1085 return S_OK;
1086 }
1087
1088 ok(0, "unexpected call %ld\n", id);
1089 return E_NOTIMPL;
1090}
@ VT_UNKNOWN
Definition: compat.h:2308
static BOOL strict_dispid_check
Definition: run.c:193
static IEnumVARIANT enumObj
Definition: run.c:711
static unsigned next_cnt
Definition: run.c:663
#define V_UNKNOWN(A)
Definition: oleauto.h:281
#define DISPATCH_METHOD
Definition: oleauto.h:1006
#define V_VT(A)
Definition: oleauto.h:211
#define DISPATCH_PROPERTYGET
Definition: oleauto.h:1007
WINBASEAPI _In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon_undoc.h:337

◆ create_and_init_script()

static IActiveScript * create_and_init_script ( DWORD  flags,
BOOL  start 
)
static

Definition at line 2044 of file run.c.

2045{
2046 IActiveScriptParse *parser;
2047 IActiveScript *engine;
2048 HRESULT hres;
2049
2050 engine = create_script();
2051 if(!engine)
2052 return NULL;
2053
2054 hres = IActiveScript_QueryInterface(engine, &IID_IActiveScriptParse, (void**)&parser);
2055 ok(hres == S_OK, "Could not get IActiveScriptParse: %08lx\n", hres);
2056
2058 ok(hres == S_OK, "InitNew failed: %08lx\n", hres);
2059
2061
2062 hres = IActiveScript_SetScriptSite(engine, &ActiveScriptSite);
2063 ok(hres == S_OK, "SetScriptSite failed: %08lx\n", hres);
2064
2065 hres = IActiveScript_AddNamedItem(engine, L"test",
2066 SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE|flags);
2067 ok(hres == S_OK, "AddNamedItem failed: %08lx\n", hres);
2068
2069 if (start)
2070 {
2071 hres = IActiveScript_SetScriptState(engine, SCRIPTSTATE_STARTED);
2072 ok(hres == S_OK, "SetScriptState(SCRIPTSTATE_STARTED) failed: %08lx\n", hres);
2073 }
2074
2075 return engine;
2076}
@ SCRIPTSTATE_STARTED
Definition: activscp.idl:58
GLuint start
Definition: gl.h:1545
GLbitfield flags
Definition: glext.h:7161
#define IActiveScriptParse_InitNew
Definition: run.c:43
#define IActiveScriptParse_Release
Definition: run.c:42
static IActiveScript * create_script(void)
Definition: run.c:2155
static IActiveScriptSite ActiveScriptSite
Definition: run.c:2110
Definition: import.c:81

Referenced by parse_script(), test_callbacks(), test_isexpression(), test_multiple_parse(), test_parse_context(), and test_procedures().

◆ create_script()

static IActiveScript * create_script ( void  )
static

Definition at line 2032 of file run.c.

2033{
2035 HRESULT hres;
2036
2037 hres = CoCreateInstance(&CLSID_VBScript, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
2038 &IID_IActiveScript, (void**)&script);
2039 ok(hres == S_OK, "CoCreateInstance failed: %08lx\n", hres);
2040
2041 return script;
2042}
const CLSID CLSID_VBScript

◆ DEFINE_EXPECT() [1/29]

DEFINE_EXPECT ( collectionobj_newenum_i  )

◆ DEFINE_EXPECT() [2/29]

DEFINE_EXPECT ( EnableModeless  )

◆ DEFINE_EXPECT() [3/29]

DEFINE_EXPECT ( GetUIBehavior  )

◆ DEFINE_EXPECT() [4/29]

DEFINE_EXPECT ( GetWindow  )

◆ DEFINE_EXPECT() [5/29]

DEFINE_EXPECT ( global_globalcallback_i  )

◆ DEFINE_EXPECT() [6/29]

DEFINE_EXPECT ( global_letobj_i  )

◆ DEFINE_EXPECT() [7/29]

DEFINE_EXPECT ( global_propargput1_d  )

◆ DEFINE_EXPECT() [8/29]

DEFINE_EXPECT ( global_propargput1_i  )

◆ DEFINE_EXPECT() [9/29]

DEFINE_EXPECT ( global_propargput_d  )

◆ DEFINE_EXPECT() [10/29]

DEFINE_EXPECT ( global_propargput_i  )

◆ DEFINE_EXPECT() [11/29]

DEFINE_EXPECT ( global_propargset_d  )

◆ DEFINE_EXPECT() [12/29]

DEFINE_EXPECT ( global_propargset_i  )

◆ DEFINE_EXPECT() [13/29]

DEFINE_EXPECT ( global_setobj_i  )

◆ DEFINE_EXPECT() [14/29]

DEFINE_EXPECT ( global_success_d  )

◆ DEFINE_EXPECT() [15/29]

DEFINE_EXPECT ( global_success_i  )

◆ DEFINE_EXPECT() [16/29]

DEFINE_EXPECT ( global_testerrorobject_i  )

◆ DEFINE_EXPECT() [17/29]

DEFINE_EXPECT ( global_testoptionalarg_i  )

◆ DEFINE_EXPECT() [18/29]

DEFINE_EXPECT ( global_vbvar_d  )

◆ DEFINE_EXPECT() [19/29]

DEFINE_EXPECT ( global_vbvar_i  )

◆ DEFINE_EXPECT() [20/29]

DEFINE_EXPECT ( Next  )

◆ DEFINE_EXPECT() [21/29]

DEFINE_EXPECT ( OnEnterScript  )

◆ DEFINE_EXPECT() [22/29]

DEFINE_EXPECT ( OnLeaveScript  )

◆ DEFINE_EXPECT() [23/29]

DEFINE_EXPECT ( OnScriptError  )

◆ DEFINE_EXPECT() [24/29]

DEFINE_EXPECT ( testobj_propget_d  )

◆ DEFINE_EXPECT() [25/29]

DEFINE_EXPECT ( testobj_propget_i  )

◆ DEFINE_EXPECT() [26/29]

DEFINE_EXPECT ( testobj_propput_d  )

◆ DEFINE_EXPECT() [27/29]

DEFINE_EXPECT ( testobj_propput_i  )

◆ DEFINE_EXPECT() [28/29]

DEFINE_EXPECT ( testobj_value_i  )

◆ DEFINE_EXPECT() [29/29]

DEFINE_EXPECT ( testobj_valueput_i  )

◆ detect_locale()

static void detect_locale ( void  )
static

Definition at line 232 of file run.c.

233{
234 UINT cp;
235 CPINFOEXA cpinfo;
236 HMODULE kernel32 = GetModuleHandleA("kernel32.dll");
237 LANGID (WINAPI *pGetThreadUILanguage)(void) = (void*)GetProcAddress(kernel32, "GetThreadUILanguage");
238
239 is_english = ((!pGetThreadUILanguage || PRIMARYLANGID(pGetThreadUILanguage()) == LANG_ENGLISH) &&
242
243 GetLocaleInfoW(LOCALE_USER_DEFAULT, LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER, (WCHAR*)&cp, sizeof(cp));
244 if (cp)
245 {
246 GetCPInfoExA( cp, 0, &cpinfo );
247 MaxCharSize = cpinfo.MaxCharSize;
248 }
249 else
250 {
251 /* No ANSI code page for that locale -> the fallback is UTF-8 */
252 MaxCharSize = 4;
253 }
254
256 (void*)&first_day_of_week, sizeof(first_day_of_week));
257 first_day_of_week = 1 + (first_day_of_week + 1) % 7;
258}
#define GetProcAddress(x, y)
Definition: compat.h:753
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
Definition: loader.c:812
LANGID WINAPI GetUserDefaultUILanguage(void)
Definition: locale.c:1380
INT WINAPI GetLocaleInfoA(LCID lcid, LCTYPE lctype, LPSTR buffer, INT len)
Definition: locale.c:1609
LANGID WINAPI GetUserDefaultLangID(void)
Definition: locale.c:1182
BOOL WINAPI GetCPInfoExA(UINT codepage, DWORD dwFlags, LPCPINFOEXA cpinfo)
Definition: locale.c:2204
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
Definition: locale.c:1675
USHORT LANGID
Definition: mui.h:9
POINT cp
Definition: magnifier.c:59
static BOOL is_english
Definition: run.c:161
static int first_day_of_week
Definition: run.c:163
static UINT MaxCharSize
Definition: run.c:162
unsigned int UINT
Definition: ndis.h:50
#define LOCALE_USER_DEFAULT
short WCHAR
Definition: pedump.c:58
#define LANG_ENGLISH
Definition: nls.h:52
#define PRIMARYLANGID(l)
Definition: nls.h:16
UINT MaxCharSize
Definition: winnls.h:667
#define WINAPI
Definition: msvc.h:6
#define LOCALE_IDEFAULTANSICODEPAGE
Definition: winnls.h:48
#define LOCALE_IFIRSTDAYOFWEEK
Definition: winnls.h:85

Referenced by START_TEST().

◆ DispatchEx_AddRef()

static ULONG WINAPI DispatchEx_AddRef ( IDispatchEx iface)
static

Definition at line 761 of file run.c.

762{
763 return 2;
764}

◆ DispatchEx_DeleteMemberByDispID()

static HRESULT WINAPI DispatchEx_DeleteMemberByDispID ( IDispatchEx iface,
DISPID  id 
)
static

Definition at line 805 of file run.c.

806{
807 ok(0, "unexpected call\n");
808 return E_NOTIMPL;
809}

◆ DispatchEx_DeleteMemberByName()

static HRESULT WINAPI DispatchEx_DeleteMemberByName ( IDispatchEx iface,
BSTR  bstrName,
DWORD  grfdex 
)
static

Definition at line 799 of file run.c.

800{
801 ok(0, "unexpected call %s %lx\n", wine_dbgstr_w(bstrName), grfdex);
802 return E_NOTIMPL;
803}

◆ DispatchEx_GetDispID()

static HRESULT WINAPI DispatchEx_GetDispID ( IDispatchEx iface,
BSTR  bstrName,
DWORD  grfdex,
DISPID pid 
)
static

Definition at line 835 of file run.c.

836{
837 ok(0, "unexpected call\n");
838 return E_NOTIMPL;
839}

◆ DispatchEx_GetIDsOfNames()

static HRESULT WINAPI DispatchEx_GetIDsOfNames ( IDispatchEx iface,
REFIID  riid,
LPOLESTR *  rgszNames,
UINT  cNames,
LCID  lcid,
DISPID rgDispId 
)
static

Definition at line 783 of file run.c.

786{
787 ok(0, "unexpected call\n");
788 return E_NOTIMPL;
789}

◆ DispatchEx_GetMemberName()

static HRESULT WINAPI DispatchEx_GetMemberName ( IDispatchEx iface,
DISPID  id,
BSTR pbstrName 
)
static

Definition at line 817 of file run.c.

818{
819 ok(0, "unexpected call\n");
820 return E_NOTIMPL;
821}

◆ DispatchEx_GetMemberProperties()

static HRESULT WINAPI DispatchEx_GetMemberProperties ( IDispatchEx iface,
DISPID  id,
DWORD  grfdexFetch,
DWORD pgrfdex 
)
static

Definition at line 811 of file run.c.

812{
813 ok(0, "unexpected call\n");
814 return E_NOTIMPL;
815}

◆ DispatchEx_GetNameSpaceParent()

static HRESULT WINAPI DispatchEx_GetNameSpaceParent ( IDispatchEx iface,
IUnknown **  ppunk 
)
static

Definition at line 829 of file run.c.

830{
831 ok(0, "unexpected call\n");
832 return E_NOTIMPL;
833}

◆ DispatchEx_GetNextDispID()

static HRESULT WINAPI DispatchEx_GetNextDispID ( IDispatchEx iface,
DWORD  grfdex,
DISPID  id,
DISPID pid 
)
static

Definition at line 823 of file run.c.

824{
825 ok(0, "unexpected call\n");
826 return E_NOTIMPL;
827}

◆ DispatchEx_GetTypeInfo()

static HRESULT WINAPI DispatchEx_GetTypeInfo ( IDispatchEx iface,
UINT  iTInfo,
LCID  lcid,
ITypeInfo **  ppTInfo 
)
static

Definition at line 777 of file run.c.

779{
780 return E_NOTIMPL;
781}

◆ DispatchEx_GetTypeInfoCount()

static HRESULT WINAPI DispatchEx_GetTypeInfoCount ( IDispatchEx iface,
UINT pctinfo 
)
static

Definition at line 771 of file run.c.

772{
773 ok(0, "unexpected call\n");
774 return E_NOTIMPL;
775}

◆ DispatchEx_Invoke()

static HRESULT WINAPI DispatchEx_Invoke ( IDispatchEx iface,
DISPID  dispIdMember,
REFIID  riid,
LCID  lcid,
WORD  wFlags,
DISPPARAMS *  pDispParams,
VARIANT pVarResult,
EXCEPINFO *  pExcepInfo,
UINT puArgErr 
)
static

Definition at line 791 of file run.c.

794{
795 ok(0, "unexpected call\n");
796 return E_NOTIMPL;
797}

◆ DispatchEx_InvokeEx()

static HRESULT WINAPI DispatchEx_InvokeEx ( IDispatchEx iface,
DISPID  id,
LCID  lcid,
WORD  wFlags,
DISPPARAMS *  pdp,
VARIANT pvarRes,
EXCEPINFO *  pei,
IServiceProvider pspCaller 
)
static

Definition at line 841 of file run.c.

843{
844 ok(0, "unexpected call %ld\n", id);
845 return E_NOTIMPL;
846}

◆ DispatchEx_QueryInterface()

static HRESULT WINAPI DispatchEx_QueryInterface ( IDispatchEx iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 744 of file run.c.

745{
746 *ppv = NULL;
747
750 || IsEqualGUID(riid, &IID_IDispatchEx))
751 *ppv = iface;
752 else {
753 trace("QI %s\n", wine_dbgstr_guid(riid));
754 return E_NOINTERFACE;
755 }
756
757 IUnknown_AddRef((IUnknown*)*ppv);
758 return S_OK;
759}
const GUID IID_IDispatch
static __inline const char * wine_dbgstr_guid(const GUID *id)
Definition: debug.h:171

◆ DispatchEx_Release()

static ULONG WINAPI DispatchEx_Release ( IDispatchEx iface)
static

Definition at line 766 of file run.c.

767{
768 return 1;
769}

◆ enumDisp_QueryInterface()

static HRESULT WINAPI enumDisp_QueryInterface ( IDispatchEx iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 1027 of file run.c.

1028{
1029 return IEnumVARIANT_QueryInterface(&enumObj, riid, ppv);
1030}

◆ EnumVARIANT_AddRef()

static ULONG WINAPI EnumVARIANT_AddRef ( IEnumVARIANT iface)
static

Definition at line 653 of file run.c.

654{
655 return 2;
656}

◆ EnumVARIANT_Clone()

static HRESULT WINAPI EnumVARIANT_Clone ( IEnumVARIANT iface,
IEnumVARIANT **  ppEnum 
)
static

Definition at line 695 of file run.c.

696{
697 ok(0, "unexpected call\n");
698 return E_NOTIMPL;
699}

◆ EnumVARIANT_Next()

static HRESULT WINAPI EnumVARIANT_Next ( IEnumVARIANT iface,
ULONG  celt,
VARIANT rgVar,
ULONG pCeltFetched 
)
static

Definition at line 665 of file run.c.

666{
669
670 ok(celt == 1, "celt = %ld\n", celt);
671 ok(V_VT(rgVar) == VT_EMPTY, "V_VT(rgVar) = %d\n", V_VT(rgVar));
672 ok(!pCeltFetched, "pCeltFetched = %p\n", pCeltFetched);
673
674 if(next_cnt++ < 3) {
675 V_VT(rgVar) = VT_I2;
676 V_I2(rgVar) = next_cnt;
677 return S_OK;
678 }
679
680 return S_FALSE;
681}
@ VT_I2
Definition: compat.h:2297
@ VT_EMPTY
Definition: compat.h:2295
#define CHECK_EXPECT2(func)
Definition: run.c:64
#define V_I2(A)
Definition: oleauto.h:245
STDMETHOD() Next(THIS_ ULONG celt, IAssociationElement *pElement, ULONG *pceltFetched) PURE
#define S_FALSE
Definition: winerror.h:3451

◆ EnumVARIANT_QueryInterface()

static HRESULT WINAPI EnumVARIANT_QueryInterface ( IEnumVARIANT iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 637 of file run.c.

638{
639 if(IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IEnumVARIANT)) {
640 *ppv = iface;
641 return S_OK;
642 }
643
645 *ppv = &enumDisp;
646 return S_OK;
647 }
648
649 ok(0, "unexpected call %s\n", wine_dbgstr_guid(riid));
650 return E_NOINTERFACE;
651}
static IDispatchEx enumDisp
Definition: run.c:606

◆ EnumVARIANT_Release()

static ULONG WINAPI EnumVARIANT_Release ( IEnumVARIANT iface)
static

Definition at line 658 of file run.c.

659{
660 return 1;
661}

◆ EnumVARIANT_Reset()

static HRESULT WINAPI EnumVARIANT_Reset ( IEnumVARIANT iface)
static

Definition at line 689 of file run.c.

690{
691 ok(0, "unexpected call\n");
692 return E_NOTIMPL;
693}

◆ EnumVARIANT_Skip()

static HRESULT WINAPI EnumVARIANT_Skip ( IEnumVARIANT iface,
ULONG  celt 
)
static

Definition at line 683 of file run.c.

684{
685 ok(0, "unexpected call\n");
686 return E_NOTIMPL;
687}

◆ free_ei()

static void free_ei ( EXCEPINFO *  ei)
static

Definition at line 2294 of file run.c.

2295{
2296 SysFreeString(ei->bstrSource);
2297 SysFreeString(ei->bstrDescription);
2298 SysFreeString(ei->bstrHelpFile);
2299}

Referenced by test_callbacks().

◆ get_dispid()

static BOOL get_dispid ( BSTR  name,
const dispid_t dispids,
SIZE_T  dispids_cnt,
DISPID id 
)
static

Definition at line 720 of file run.c.

721{
722 int i;
723
724 for(i = 0; i < dispids_cnt; i++) {
725#ifdef __REACTOS__
726 if(!_wcsicmp(name, dispids[i].name)) {
727#else
728 if(!wcsicmp(name, dispids[i].name)) {
729#endif
730 const dispid_t *d = &dispids[i];
731 if(d->expect) {
732 ok(*d->expect, "unexpected call %s\n", wine_dbgstr_w(d->name));
733 *d->called = TRUE;
734 *d->expect = FALSE;
735 }
736 *id = d->pid;
737 return TRUE;
738 }
739 }
740
741 return FALSE;
742}
#define wcsicmp
Definition: compat.h:15
_ACRTIMP int __cdecl _wcsicmp(const wchar_t *, const wchar_t *)
Definition: wcs.c:164
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define d
Definition: ke_i.h:81
char * name
Definition: compiler.c:66
Definition: run.c:713
Definition: name.c:39

Referenced by Global_GetDispID(), and testObj_GetDispID().

◆ get_script_from_file()

static BSTR get_script_from_file ( const char filename)
static

Definition at line 3091 of file run.c.

3092{
3093 DWORD size, len;
3094 HANDLE file, map;
3095 const char *file_map;
3096 BSTR ret;
3097
3099 if(file == INVALID_HANDLE_VALUE) {
3100 trace("Could not open file: %lu\n", GetLastError());
3101 return NULL;
3102 }
3103
3105
3108 if(map == INVALID_HANDLE_VALUE) {
3109 trace("Could not create file mapping: %lu\n", GetLastError());
3110 return NULL;
3111 }
3112
3113 file_map = MapViewOfFile(map, FILE_MAP_READ, 0, 0, 0);
3115 if(!file_map) {
3116 trace("MapViewOfFile failed: %lu\n", GetLastError());
3117 return NULL;
3118 }
3119
3120 len = MultiByteToWideChar(CP_ACP, 0, file_map, size, NULL, 0);
3122 MultiByteToWideChar(CP_ACP, 0, file_map, size, ret, len);
3123
3124 UnmapViewOfFile(file_map);
3125
3126 return ret;
3127}
Definition: _map.h:48
#define CloseHandle
Definition: compat.h:739
#define PAGE_READONLY
Definition: compat.h:138
#define UnmapViewOfFile
Definition: compat.h:746
#define OPEN_EXISTING
Definition: compat.h:775
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define CreateFileMappingW(a, b, c, d, e, f)
Definition: compat.h:744
#define CreateFileA(a, b, c, d, e, f, g)
Definition: compat.h:740
#define GENERIC_READ
Definition: compat.h:135
#define FILE_MAP_READ
Definition: compat.h:776
#define MapViewOfFile
Definition: compat.h:745
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
Definition: fileinfo.c:331
unsigned long DWORD
Definition: ntddk_ex.h:95
GLsizeiptr size
Definition: glext.h:5919
const char * filename
Definition: ioapi.h:137
#define FILE_ATTRIBUTE_READONLY
Definition: nt_native.h:702
Definition: fci.c:127
DWORD WINAPI GetLastError(void)
Definition: except.c:1042

◆ Global_AddRef()

static ULONG WINAPI Global_AddRef ( IDispatchEx iface)
static

Definition at line 1146 of file run.c.

1147{
1148 return ++global_ref;
1149}
static ULONG global_ref
Definition: run.c:1144

◆ Global_GetDispID()

static HRESULT WINAPI Global_GetDispID ( IDispatchEx iface,
BSTR  bstrName,
DWORD  grfdex,
DISPID pid 
)
static

Definition at line 1156 of file run.c.

1157{
1158 static const dispid_t dispids[] = {
1159 { L"ok", DISPID_GLOBAL_OK },
1160 { L"todo_wine_ok", DISPID_GLOBAL_TODO_WINE_OK },
1161 { L"trace", DISPID_GLOBAL_TRACE },
1162 { L"reportSuccess", DISPID_GLOBAL_REPORTSUCCESS, REF_EXPECT(global_success_d) },
1163 { L"getVT", DISPID_GLOBAL_GETVT },
1164 { L"isEnglishLang", DISPID_GLOBAL_ISENGLANG },
1165 { L"MaxCharSize", DISPID_GLOBAL_MAXCHARSIZE },
1166 { L"firstDayOfWeek", DISPID_GLOBAL_WEEKSTARTDAY },
1167 { L"globalCallback", DISPID_GLOBAL_GLOBALCALLBACK },
1168 { L"testObj", DISPID_GLOBAL_TESTOBJ },
1169 { L"collectionObj" , DISPID_GLOBAL_COLLOBJ },
1170 { L"vbvar", DISPID_GLOBAL_VBVAR, REF_EXPECT(global_vbvar_d) },
1171 { L"letobj", DISPID_GLOBAL_LETOBJ },
1172 { L"setobj", DISPID_GLOBAL_SETOBJ },
1173 { L"isNullDisp", DISPID_GLOBAL_ISNULLDISP },
1174 { L"testDisp", DISPID_GLOBAL_TESTDISP },
1175 { L"RefObj", DISPID_GLOBAL_REFOBJ },
1176 { L"propargput", DISPID_GLOBAL_PROPARGPUT, REF_EXPECT(global_propargput_d) },
1177 { L"propargput1", DISPID_GLOBAL_PROPARGPUT1, REF_EXPECT(global_propargput1_d) },
1178 { L"propargset", DISPID_GLOBAL_PROPARGSET, REF_EXPECT(global_propargset_d) },
1179 { L"counter", DISPID_GLOBAL_COUNTER },
1180 { L"doubleAsString", DISPID_GLOBAL_DOUBLEASSTRING },
1181 { L"testArray", DISPID_GLOBAL_TESTARRAY },
1182 { L"throwException", DISPID_GLOBAL_THROWEXCEPTION },
1183 { L"throwInt", DISPID_GLOBAL_THROWINT },
1184 { L"testOptionalArg", DISPID_GLOBAL_TESTOPTIONALARG },
1185 { L"testErrorObject", DISPID_GLOBAL_TESTERROROBJECT },
1186 { L"throwWithDesc", DISPID_GLOBAL_THROWWITHDESC },
1187 { L"unkObj", DISPID_GLOBAL_UNKOBJ },
1188 { L"isArrayFixed", DISPID_GLOBAL_ISARRAYFIXED },
1189 };
1190
1191 test_grfdex(grfdex, fdexNameCaseInsensitive);
1192 if(get_dispid(bstrName, dispids, ARRAY_SIZE(dispids), pid))
1193 return S_OK;
1194 if(strict_dispid_check && wcscmp(bstrName, L"x"))
1195 ok(0, "unexpected call %s %lx\n", wine_dbgstr_w(bstrName), grfdex);
1196 return DISP_E_UNKNOWNNAME;
1197}
#define ARRAY_SIZE(A)
Definition: main.h:20
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
Definition: wcs.c:1977
#define test_grfdex(a, b)
Definition: run.c:225
#define DISPID_GLOBAL_REPORTSUCCESS
Definition: run.c:143
#define DISPID_GLOBAL_THROWINT
Definition: run.c:174
#define DISPID_GLOBAL_TESTOBJ
Definition: run.c:147
#define DISPID_GLOBAL_TRACE
Definition: run.c:144
#define DISPID_GLOBAL_OK
Definition: run.c:145
#define DISPID_GLOBAL_GETVT
Definition: run.c:146
#define DISPID_GLOBAL_PROPARGPUT
Definition: run.c:159
#define DISPID_GLOBAL_ISNULLDISP
Definition: run.c:128
#define DISPID_GLOBAL_ISENGLANG
Definition: run.c:125
#define DISPID_GLOBAL_THROWEXCEPTION
Definition: run.c:148
#define DISPID_GLOBAL_LETOBJ
Definition: run.c:139
#define DISPID_GLOBAL_DOUBLEASSTRING
Definition: run.c:135
#define DISPID_GLOBAL_WEEKSTARTDAY
Definition: run.c:142
#define DISPID_GLOBAL_GLOBALCALLBACK
Definition: run.c:143
#define DISPID_GLOBAL_TESTOPTIONALARG
Definition: run.c:138
#define DISPID_GLOBAL_TODO_WINE_OK
Definition: run.c:141
#define DISPID_GLOBAL_VBVAR
Definition: run.c:126
#define DISPID_GLOBAL_PROPARGSET
Definition: run.c:146
#define DISPID_GLOBAL_THROWWITHDESC
Definition: run.c:145
#define DISPID_GLOBAL_ISARRAYFIXED
Definition: run.c:149
#define DISPID_GLOBAL_COLLOBJ
Definition: run.c:134
#define DISPID_GLOBAL_TESTERROROBJECT
Definition: run.c:144
#define DISPID_GLOBAL_TESTDISP
Definition: run.c:129
#define DISPID_GLOBAL_MAXCHARSIZE
Definition: run.c:150
#define DISPID_GLOBAL_COUNTER
Definition: run.c:131
#define REF_EXPECT(func)
Definition: run.c:61
#define DISPID_GLOBAL_TESTARRAY
Definition: run.c:136
#define DISPID_GLOBAL_SETOBJ
Definition: run.c:140
#define DISPID_GLOBAL_UNKOBJ
Definition: run.c:147
#define DISPID_GLOBAL_PROPARGPUT1
Definition: run.c:133
static BOOL get_dispid(BSTR name, const dispid_t *dispids, SIZE_T dispids_cnt, DISPID *id)
Definition: run.c:720
#define DISPID_GLOBAL_REFOBJ
Definition: run.c:130

◆ Global_InvokeEx()

static HRESULT WINAPI Global_InvokeEx ( IDispatchEx iface,
DISPID  id,
LCID  lcid,
WORD  wFlags,
DISPPARAMS *  pdp,
VARIANT pvarRes,
EXCEPINFO *  pei,
IServiceProvider pspCaller 
)
static

Definition at line 1199 of file run.c.

1201{
1202 switch(id) {
1204 case DISPID_GLOBAL_OK: {
1205 VARIANT *b;
1206
1207 ok(wFlags == INVOKE_FUNC || wFlags == (INVOKE_FUNC|INVOKE_PROPERTYGET), "wFlags = %x\n", wFlags);
1208 ok(pdp != NULL, "pdp == NULL\n");
1209 ok(pdp->rgvarg != NULL, "rgvarg == NULL\n");
1210 ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
1211 ok(pdp->cArgs == 2, "cArgs = %d\n", pdp->cArgs);
1212 ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs);
1213 if(wFlags & INVOKE_PROPERTYGET)
1214 ok(pvarRes != NULL, "pvarRes == NULL\n");
1215 else
1216 ok(!pvarRes, "pvarRes != NULL\n");
1217 ok(pei != NULL, "pei == NULL\n");
1218
1219 ok(V_VT(pdp->rgvarg) == VT_BSTR, "V_VT(psp->rgvargs) = %d\n", V_VT(pdp->rgvarg));
1220
1221 b = pdp->rgvarg+1;
1222 if(V_VT(b) == (VT_BYREF|VT_VARIANT))
1223 b = V_BYREF(b);
1224
1225 ok(V_VT(b) == VT_BOOL, "V_VT(b) = %d\n", V_VT(b));
1226
1228 ok(V_BOOL(b), "%s: %s\n", test_name, wine_dbgstr_w(V_BSTR(pdp->rgvarg)));
1229 return S_OK;
1230 }
1231
1233 ok(wFlags == INVOKE_FUNC, "wFlags = %x\n", wFlags);
1234 ok(pdp != NULL, "pdp == NULL\n");
1235 ok(pdp->rgvarg != NULL, "rgvarg == NULL\n");
1236 ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
1237 ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs);
1238 ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs);
1239 ok(!pvarRes, "pvarRes != NULL\n");
1240 ok(pei != NULL, "pei == NULL\n");
1241
1242 ok(V_VT(pdp->rgvarg) == VT_BSTR, "V_VT(psp->rgvargs) = %d\n", V_VT(pdp->rgvarg));
1243 if(V_VT(pdp->rgvarg) == VT_BSTR)
1244 trace("%s: %s\n", test_name, wine_dbgstr_w(V_BSTR(pdp->rgvarg)));
1245
1246 return S_OK;
1247
1249 CHECK_EXPECT(global_success_i);
1250
1251 ok(wFlags == INVOKE_FUNC, "wFlags = %x\n", wFlags);
1252 ok(pdp != NULL, "pdp == NULL\n");
1253 ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
1254 ok(pdp->cArgs == 0, "cArgs = %d\n", pdp->cArgs);
1255 ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs);
1256 ok(!pvarRes, "pvarRes != NULL\n");
1257 ok(pei != NULL, "pei == NULL\n");
1258
1259 return S_OK;
1260
1262 ok(pdp != NULL, "pdp == NULL\n");
1263 ok(pdp->rgvarg != NULL, "rgvarg == NULL\n");
1264 ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
1265 ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs);
1266 ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs);
1267 ok(pvarRes != NULL, "pvarRes == NULL\n");
1268 ok(V_VT(pvarRes) == VT_EMPTY, "V_VT(pvarRes) = %d\n", V_VT(pvarRes));
1269 ok(pei != NULL, "pei == NULL\n");
1270
1271 V_VT(pvarRes) = VT_BSTR;
1272 V_BSTR(pvarRes) = a2bstr(vt2a(pdp->rgvarg));
1273 return S_OK;
1274
1276 ok(wFlags == (INVOKE_FUNC|INVOKE_PROPERTYGET), "wFlags = %x\n", wFlags);
1277 ok(pdp != NULL, "pdp == NULL\n");
1278 ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
1279 ok(pdp->cArgs == 0, "cArgs = %d\n", pdp->cArgs);
1280 ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs);
1281 ok(pvarRes != NULL, "pvarRes == NULL\n");
1282 ok(pei != NULL, "pei == NULL\n");
1283
1284 V_VT(pvarRes) = VT_BOOL;
1285 V_BOOL(pvarRes) = is_english ? VARIANT_TRUE : VARIANT_FALSE;
1286 return S_OK;
1287
1289 V_VT(pvarRes) = VT_I4;
1290 V_I4(pvarRes) = MaxCharSize;
1291 return S_OK;
1292
1294 V_VT(pvarRes) = VT_I4;
1295 V_I4(pvarRes) = first_day_of_week;
1296 return S_OK;
1297
1299 CHECK_EXPECT(global_vbvar_i);
1300
1301 ok(wFlags == DISPATCH_PROPERTYPUT, "wFlags = %x\n", wFlags);
1302 ok(pdp != NULL, "pdp == NULL\n");
1303 ok(pdp->rgvarg != NULL, "rgvarg == NULL\n");
1304 ok(pdp->rgdispidNamedArgs != NULL, "rgdispidNamedArgs == NULL\n");
1305 ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs);
1306 ok(pdp->cNamedArgs == 1, "cNamedArgs = %d\n", pdp->cNamedArgs);
1307 ok(pdp->rgdispidNamedArgs[0] == DISPID_PROPERTYPUT, "pdp->rgdispidNamedArgs[0] = %ld\n", pdp->rgdispidNamedArgs[0]);
1308 ok(!pvarRes, "pvarRes != NULL\n");
1309 ok(pei != NULL, "pei == NULL\n");
1310
1311 ok(V_VT(pdp->rgvarg) == VT_I2, "V_VT(psp->rgvargs) = %d\n", V_VT(pdp->rgvarg));
1312 ok(V_I2(pdp->rgvarg) == 3, "V_I2(psp->rgvargs) = %d\n", V_I2(pdp->rgvarg));
1313 return S_OK;
1314
1316 CHECK_EXPECT(global_letobj_i);
1317
1318 ok(wFlags == DISPATCH_PROPERTYPUT, "wFlags = %x\n", wFlags);
1319 ok(pdp != NULL, "pdp == NULL\n");
1320 ok(pdp->rgvarg != NULL, "rgvarg == NULL\n");
1321 ok(pdp->rgdispidNamedArgs != NULL, "rgdispidNamedArgs == NULL\n");
1322 ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs);
1323 ok(pdp->cNamedArgs == 1, "cNamedArgs = %d\n", pdp->cNamedArgs);
1324 ok(pdp->rgdispidNamedArgs[0] == DISPID_PROPERTYPUT, "pdp->rgdispidNamedArgs[0] = %ld\n", pdp->rgdispidNamedArgs[0]);
1325 ok(!pvarRes, "pvarRes != NULL\n");
1326 ok(pei != NULL, "pei == NULL\n");
1327
1328 ok(V_VT(pdp->rgvarg) == VT_DISPATCH, "V_VT(psp->rgvargs) = %d\n", V_VT(pdp->rgvarg));
1329 ok(V_DISPATCH(pdp->rgvarg) == (IDispatch*)&testObj, "V_DISPATCH(psp->rgvargs) != testObj\n");
1330 return S_OK;
1331
1333 CHECK_EXPECT(global_setobj_i);
1334
1335 ok(wFlags == DISPATCH_PROPERTYPUTREF, "wFlags = %x\n", wFlags);
1336 ok(pdp != NULL, "pdp == NULL\n");
1337 ok(pdp->rgvarg != NULL, "rgvarg == NULL\n");
1338 ok(pdp->rgdispidNamedArgs != NULL, "rgdispidNamedArgs == NULL\n");
1339 ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs);
1340 ok(pdp->cNamedArgs == 1, "cNamedArgs = %d\n", pdp->cNamedArgs);
1341 ok(pdp->rgdispidNamedArgs[0] == DISPID_PROPERTYPUT, "pdp->rgdispidNamedArgs[0] = %ld\n", pdp->rgdispidNamedArgs[0]);
1342 ok(!pvarRes, "pvarRes != NULL\n");
1343 ok(pei != NULL, "pei == NULL\n");
1344
1345 ok(V_VT(pdp->rgvarg) == VT_DISPATCH, "V_VT(psp->rgvargs) = %d\n", V_VT(pdp->rgvarg));
1346 ok(V_DISPATCH(pdp->rgvarg) == (IDispatch*)&testObj, "V_DISPATCH(psp->rgvargs) != testObj\n");
1347 return S_OK;
1348
1350 ok(wFlags == (DISPATCH_PROPERTYGET|DISPATCH_METHOD), "wFlags = %x\n", wFlags);
1351
1352 ok(pdp != NULL, "pdp == NULL\n");
1353 ok(!pdp->rgvarg, "rgvarg != NULL\n");
1354 ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
1355 ok(!pdp->cArgs, "cArgs = %d\n", pdp->cArgs);
1356 ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs);
1357 ok(pvarRes != NULL, "pvarRes == NULL\n");
1358 ok(pei != NULL, "pei == NULL\n");
1359
1360 V_VT(pvarRes) = VT_DISPATCH;
1361 V_DISPATCH(pvarRes) = (IDispatch*)&testObj;
1362 return S_OK;
1363
1365 ok(wFlags == (DISPATCH_PROPERTYGET|DISPATCH_METHOD), "wFlags = %x\n", wFlags);
1366
1367 ok(pdp != NULL, "pdp == NULL\n");
1368 ok(!pdp->rgvarg, "rgvarg != NULL\n");
1369 ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
1370 ok(!pdp->cArgs, "cArgs = %d\n", pdp->cArgs);
1371 ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs);
1372 ok(pvarRes != NULL, "pvarRes == NULL\n");
1373 ok(pei != NULL, "pei == NULL\n");
1374
1375 V_VT(pvarRes) = VT_DISPATCH;
1376 V_DISPATCH(pvarRes) = (IDispatch*)&collectionObj;
1377 return S_OK;
1378
1380 ok(wFlags == (DISPATCH_PROPERTYGET|DISPATCH_METHOD), "wFlags = %x\n", wFlags);
1381
1382 ok(pdp != NULL, "pdp == NULL\n");
1383 ok(!pdp->rgvarg, "rgvarg == NULL\n");
1384 ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
1385 ok(!pdp->cArgs, "cArgs = %d\n", pdp->cArgs);
1386 ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs);
1387 ok(pvarRes != NULL, "pvarRes == NULL\n");
1388 ok(pei != NULL, "pei == NULL\n");
1389
1390 IDispatchEx_AddRef(&RefObj);
1391 V_VT(pvarRes) = VT_DISPATCH;
1392 V_DISPATCH(pvarRes) = (IDispatch*)&RefObj;
1393 return S_OK;
1394
1396 VARIANT *v;
1397
1398 ok(wFlags == (INVOKE_FUNC|INVOKE_PROPERTYGET), "wFlags = %x\n", wFlags);
1399 ok(pdp != NULL, "pdp == NULL\n");
1400 ok(pdp->rgvarg != NULL, "rgvarg == NULL\n");
1401 ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
1402 ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs);
1403 ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs);
1404 ok(pvarRes != NULL, "pvarRes == NULL\n");
1405 ok(pei != NULL, "pei == NULL\n");
1406
1407 v = pdp->rgvarg;
1408 if(V_VT(v) == (VT_VARIANT|VT_BYREF))
1409 v = V_VARIANTREF(v);
1410
1411 ok(V_VT(v) == VT_DISPATCH, "V_VT(psp->rgvargs) = %d\n", V_VT(pdp->rgvarg));
1412 V_VT(pvarRes) = VT_BOOL;
1413 V_BOOL(pvarRes) = V_DISPATCH(v) ? VARIANT_FALSE : VARIANT_TRUE;
1414 return S_OK;
1415 }
1416
1418 ok(wFlags == INVOKE_FUNC, "wFlags = %x\n", wFlags);
1419 ok(pdp != NULL, "pdp == NULL\n");
1420 ok(pdp->rgvarg != NULL, "rgvarg == NULL\n");
1421 ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
1422 ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs);
1423 ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs);
1424 ok(!pvarRes, "pvarRes != NULL\n");
1425 ok(pei != NULL, "pei == NULL\n");
1426
1427 ok(V_VT(pdp->rgvarg) == VT_DISPATCH, "V_VT(psp->rgvargs) = %d\n", V_VT(pdp->rgvarg));
1428 test_disp(V_DISPATCH(pdp->rgvarg));
1429 return S_OK;
1430
1432 CHECK_EXPECT(global_propargput_i);
1433
1434 ok(wFlags == DISPATCH_PROPERTYPUT, "wFlags = %x\n", wFlags);
1435 ok(pdp != NULL, "pdp == NULL\n");
1436 ok(pdp->rgvarg != NULL, "rgvarg == NULL\n");
1437 ok(pdp->rgdispidNamedArgs != NULL, "rgdispidNamedArgs == NULL\n");
1438 ok(pdp->cArgs == 3, "cArgs = %d\n", pdp->cArgs);
1439 ok(pdp->cNamedArgs == 1, "cNamedArgs = %d\n", pdp->cNamedArgs);
1440 ok(pdp->rgdispidNamedArgs[0] == DISPID_PROPERTYPUT, "pdp->rgdispidNamedArgs[0] = %ld\n", pdp->rgdispidNamedArgs[0]);
1441 ok(!pvarRes, "pvarRes != NULL\n");
1442 ok(pei != NULL, "pei == NULL\n");
1443
1444 ok(V_VT(pdp->rgvarg) == VT_I2, "V_VT(psp->rgvargs) = %d\n", V_VT(pdp->rgvarg));
1445 ok(V_I2(pdp->rgvarg) == 0, "V_I2(psp->rgvargs) = %d\n", V_I2(pdp->rgvarg));
1446
1447 ok(V_VT(pdp->rgvarg+1) == VT_I2, "V_VT(psp->rgvargs+1) = %d\n", V_VT(pdp->rgvarg+1));
1448 ok(V_I2(pdp->rgvarg+1) == 2, "V_I2(psp->rgvargs+1) = %d\n", V_I2(pdp->rgvarg+1));
1449
1450 ok(V_VT(pdp->rgvarg+2) == VT_I2, "V_VT(psp->rgvargs+2) = %d\n", V_VT(pdp->rgvarg+2));
1451 ok(V_I2(pdp->rgvarg+2) == 1, "V_I2(psp->rgvargs+2) = %d\n", V_I2(pdp->rgvarg+2));
1452 return S_OK;
1453
1455 CHECK_EXPECT(global_propargput1_i);
1456
1457 ok(wFlags == DISPATCH_PROPERTYPUT, "wFlags = %x\n", wFlags);
1458 ok(pdp != NULL, "pdp == NULL\n");
1459 ok(pdp->rgvarg != NULL, "rgvarg == NULL\n");
1460 ok(pdp->rgdispidNamedArgs != NULL, "rgdispidNamedArgs == NULL\n");
1461 ok(pdp->cArgs == 2, "cArgs = %d\n", pdp->cArgs);
1462 ok(pdp->cNamedArgs == 1, "cNamedArgs = %d\n", pdp->cNamedArgs);
1463 ok(pdp->rgdispidNamedArgs[0] == DISPID_PROPERTYPUT, "pdp->rgdispidNamedArgs[0] = %ld\n", pdp->rgdispidNamedArgs[0]);
1464 ok(!pvarRes, "pvarRes != NULL\n");
1465 ok(pei != NULL, "pei == NULL\n");
1466
1467 ok(V_VT(pdp->rgvarg) == VT_I2, "V_VT(psp->rgvargs) = %d\n", V_VT(pdp->rgvarg));
1468 ok(V_I2(pdp->rgvarg) == 0, "V_I2(psp->rgvargs) = %d\n", V_I2(pdp->rgvarg));
1469
1470 ok(V_VT(pdp->rgvarg+1) == VT_I2, "V_VT(psp->rgvargs+1) = %d\n", V_VT(pdp->rgvarg+1));
1471 ok(V_I2(pdp->rgvarg+1) == 1, "V_I2(psp->rgvargs+1) = %d\n", V_I2(pdp->rgvarg+1));
1472
1473 return S_OK;
1474
1476 CHECK_EXPECT(global_propargset_i);
1477
1478 ok(wFlags == DISPATCH_PROPERTYPUTREF, "wFlags = %x\n", wFlags);
1479 ok(pdp != NULL, "pdp == NULL\n");
1480 ok(pdp->rgvarg != NULL, "rgvarg == NULL\n");
1481 ok(pdp->rgdispidNamedArgs != NULL, "rgdispidNamedArgs == NULL\n");
1482 ok(pdp->cArgs == 2, "cArgs = %d\n", pdp->cArgs);
1483 ok(pdp->cNamedArgs == 1, "cNamedArgs = %d\n", pdp->cNamedArgs);
1484 ok(pdp->rgdispidNamedArgs[0] == DISPID_PROPERTYPUT, "pdp->rgdispidNamedArgs[0] = %ld\n", pdp->rgdispidNamedArgs[0]);
1485 ok(!pvarRes, "pvarRes != NULL\n");
1486 ok(pei != NULL, "pei == NULL\n");
1487
1488 ok(V_VT(pdp->rgvarg) == VT_DISPATCH, "V_VT(psp->rgvargs) = %d\n", V_VT(pdp->rgvarg));
1489 ok(V_DISPATCH(pdp->rgvarg) == (IDispatch*)&testObj, "V_DISPATCH(psp->rgvargs) = %p\n", V_DISPATCH(pdp->rgvarg));
1490
1491 ok(V_VT(pdp->rgvarg+1) == VT_I2, "V_VT(psp->rgvargs+1) = %d\n", V_VT(pdp->rgvarg+1));
1492 ok(V_I2(pdp->rgvarg+1) == 0, "V_I2(psp->rgvargs+1) = %d\n", V_I2(pdp->rgvarg+1));
1493
1494 return S_OK;
1495
1497 ok(pdp != NULL, "pdp == NULL\n");
1498 ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
1499 ok(!pdp->cArgs, "cArgs = %d\n", pdp->cArgs);
1500 ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs);
1501 ok(pvarRes != NULL, "pvarRes == NULL\n");
1502 ok(V_VT(pvarRes) == VT_EMPTY, "V_VT(pvarRes) = %d\n", V_VT(pvarRes));
1503 ok(pei != NULL, "pei == NULL\n");
1504
1505 V_VT(pvarRes) = VT_I2;
1506 V_I2(pvarRes) = test_counter++;
1507 return S_OK;
1508
1510 ok(wFlags == (INVOKE_FUNC|INVOKE_PROPERTYGET), "wFlags = %x\n", wFlags);
1511 ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs);
1512 ok(V_VT(pdp->rgvarg) == VT_R8, "V_VT(pdp->rgvarg) = %d\n", V_VT(pdp->rgvarg));
1513 ok(pvarRes != NULL, "pvarRes == NULL\n");
1514
1515 V_VT(pvarRes) = VT_BSTR;
1516 return VarBstrFromR8(V_R8(pdp->rgvarg), 0, 0, &V_BSTR(pvarRes));
1517
1519 ok(wFlags == INVOKE_FUNC, "wFlags = %x\n", wFlags);
1520 ok(pdp != NULL, "pdp == NULL\n");
1521 ok(pdp->rgvarg != NULL, "rgvarg == NULL\n");
1522 ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
1523 ok(pdp->cArgs == 2, "cArgs = %d\n", pdp->cArgs);
1524 ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs);
1525 ok(!pvarRes, "pvarRes != NULL\n");
1526 ok(pei != NULL, "pei == NULL\n");
1527
1528 ok(V_VT(pdp->rgvarg+1) == VT_I2, "V_VT(psp->rgvargs+1) = %d\n", V_VT(pdp->rgvarg+1));
1529 ok(V_VT(pdp->rgvarg) == (VT_BYREF|VT_VARIANT), "V_VT(psp->rgvargs) = %d\n", V_VT(pdp->rgvarg));
1530 ok(V_VT(V_VARIANTREF(pdp->rgvarg)) == (VT_ARRAY|VT_BYREF|VT_VARIANT),
1531 "V_VT(V_VARIANTREF(psp->rgvargs)) = %d\n", V_VT(V_VARIANTREF(pdp->rgvarg)));
1532 if(V_I2(pdp->rgvarg+1) == -1)
1533 ok(!*V_ARRAYREF(V_VARIANTREF(pdp->rgvarg)), "*V_ARRAYREF(V_VARIANTREF(pdp->rgvarg)) != NULL\n");
1534 else
1535 test_safearray(*V_ARRAYREF(V_VARIANTREF(pdp->rgvarg)), V_I2(pdp->rgvarg+1));
1536 return S_OK;
1537
1539 VARIANT *v = pdp->rgvarg;
1540 HRESULT hres;
1541
1542 ok((wFlags & ~INVOKE_PROPERTYGET) == INVOKE_FUNC, "wFlags = %x\n", wFlags);
1543 ok(pdp != NULL, "pdp == NULL\n");
1544 ok(pdp->rgvarg != NULL, "rgvarg == NULL\n");
1545 ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
1546 ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs);
1547 ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs);
1548 ok(pei != NULL, "pei == NULL\n");
1549 if(pvarRes) {
1550 ok(V_VT(pvarRes) == VT_EMPTY, "V_VT(pvarRes) = %d\n", V_VT(pvarRes));
1551 V_VT(pvarRes) = VT_BOOL;
1552 V_BOOL(pvarRes) = VARIANT_FALSE;
1553 }
1554
1555 if(V_VT(v) == (VT_VARIANT|VT_BYREF))
1556 v = V_VARIANTREF(v);
1557
1558 switch(V_VT(v)) {
1559 case VT_I2:
1560 hres = V_I2(v);
1561 break;
1562 case VT_I4:
1563 hres = V_I4(v);
1564 break;
1565 default:
1566 ok(0, "unexpected vt %d\n", V_VT(v));
1567 return E_INVALIDARG;
1568 }
1569
1570 return hres;
1571
1573 VARIANT *v = pdp->rgvarg + pdp->cArgs - 1;
1574
1575 ok((wFlags & ~INVOKE_PROPERTYGET) == INVOKE_FUNC, "wFlags = %x\n", wFlags);
1576 ok(pdp != NULL, "pdp == NULL\n");
1577 ok(pdp->rgvarg != NULL, "rgvarg == NULL\n");
1578 ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
1579 ok(pdp->cArgs >= 1, "cArgs = %d\n", pdp->cArgs);
1580 ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs);
1581 ok(pei != NULL, "pei == NULL\n");
1582
1583 if(pvarRes) {
1584 ok(V_VT(pvarRes) == VT_EMPTY, "V_VT(pvarRes) = %d\n", V_VT(pvarRes));
1585 V_VT(pvarRes) = VT_BOOL;
1586 V_BOOL(pvarRes) = VARIANT_FALSE;
1587 }
1588
1589 if(V_VT(v) == (VT_VARIANT|VT_BYREF))
1590 v = V_VARIANTREF(v);
1591
1592 memset(pei, 0, sizeof(*pei));
1593 switch(V_VT(v)) {
1594 case VT_I2:
1595 pei->scode = V_I2(v);
1596 break;
1597 case VT_I4:
1598 pei->scode = V_I4(v);
1599 break;
1600 default:
1601 ok(0, "unexpected vt %d\n", V_VT(v));
1602 return E_INVALIDARG;
1603 }
1604
1605 if(pdp->cArgs >= 2) {
1606 v = pdp->rgvarg + pdp->cArgs - 2;
1607 if(!(V_VT(v) == VT_ERROR && V_ERROR(v) == DISP_E_PARAMNOTFOUND)) /* != vtMissing */
1608 {
1609 ok(V_VT(v) == VT_BSTR, "v = %s\n", debugstr_variant(v));
1610 pei->bstrSource = SysAllocString(V_BSTR(v));
1611 }
1612 }
1613
1614 if(pdp->cArgs >= 3) {
1615 v = pdp->rgvarg + pdp->cArgs - 3;
1616 ok(V_VT(v) == VT_BSTR, "v = %s\n", debugstr_variant(v));
1617 pei->bstrDescription = SysAllocString(V_BSTR(v));
1618 }
1619
1620 return DISP_E_EXCEPTION;
1621 }
1622
1624 pei->scode = 0xdeadbeef;
1625 pei->bstrDescription = SysAllocString(L"test");
1626 pei->bstrHelpFile = SysAllocString(L"test.chm");
1627 pei->dwHelpContext = 10;
1628 return DISP_E_EXCEPTION;
1629 }
1630
1632 VARIANT *v;
1633 int opt;
1634
1635 CHECK_EXPECT(global_testoptionalarg_i);
1636
1637 ok(wFlags == INVOKE_FUNC, "wFlags = %x\n", wFlags);
1638 ok(pdp != NULL, "pdp == NULL\n");
1639 ok(pdp->rgvarg != NULL, "rgvarg == NULL\n");
1640 ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
1641 ok(pdp->cArgs == 3, "cArgs = %d\n", pdp->cArgs);
1642 ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs);
1643 ok(!pvarRes, "pvarRes != NULL\n");
1644 ok(pei != NULL, "pei == NULL\n");
1645
1646 ok(V_VT(pdp->rgvarg) == VT_I2, "V_VT(pdp->rgvarg) = %d\n", V_VT(pdp->rgvarg));
1647 opt = V_I2(pdp->rgvarg);
1648 ok(opt == 1 || opt == 2, "opt = %d\n", opt);
1649 v = pdp->rgvarg+pdp->cArgs-opt;
1650 ok(V_VT(v) == VT_ERROR, "V_VT(v) = %d\n", V_VT(v));
1651 ok(V_ERROR(v) == DISP_E_PARAMNOTFOUND, "V_ERROR(v) = %08lx\n", V_ERROR(v));
1652 return S_OK;
1653 }
1655 DISPPARAMS dp = {0};
1656 IDispatchEx *dispex;
1657 EXCEPINFO ei;
1658 VARIANT v;
1659 DISPID id;
1660 BSTR str;
1661 HRESULT hres;
1662
1663 CHECK_EXPECT(global_globalcallback_i);
1664 CHECK_CALLED(OnEnterScript);
1665
1666 ok(wFlags == INVOKE_FUNC, "wFlags = %x\n", wFlags);
1667 ok(pdp != NULL, "pdp == NULL\n");
1668 ok(pdp->rgvarg != NULL, "rgvarg == NULL\n");
1669 ok(V_VT(pdp->rgvarg) == VT_DISPATCH, "V_VT(pdp->rgvarg) = %d\n", V_VT(pdp->rgvarg));
1670 ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
1671 ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs);
1672 ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs);
1673 ok(!pvarRes, "pvarRes != NULL\n");
1674 ok(pei != NULL, "pei == NULL\n");
1675
1676 hres = IDispatch_QueryInterface(V_DISPATCH(pdp->rgvarg), &IID_IDispatchEx, (void**)&dispex);
1677 ok(hres == S_OK, "Could not get IDispatchEx iface: %08lx\n", hres);
1678
1679 str = SysAllocString(L"callback");
1680 hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseInsensitive, &id);
1681 ok(hres == S_OK, "GetDispID failed: %08lx\n", hres);
1683
1684 SET_EXPECT(OnEnterScript);
1685 SET_EXPECT(OnLeaveScript);
1686 memset(&ei, 0, sizeof(ei));
1687 hres = IDispatchEx_InvokeEx(dispex, id, 0, DISPATCH_METHOD, &dp, &v, &ei, pspCaller);
1688 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
1689 CHECK_CALLED(OnEnterScript);
1690 CHECK_CALLED(OnLeaveScript);
1691 ok(V_VT(&v) == VT_BOOL, "V_VT(v) = %d\n", V_VT(&v));
1692 ok(V_BOOL(&v) == VARIANT_TRUE, "V_BOOL(v) = %x\n", V_BOOL(&v));
1693
1694 IDispatchEx_Release(dispex);
1695
1696 SET_EXPECT(OnLeaveScript);
1697 return S_OK;
1698 }
1701 IDispatchEx *dispex;
1702 DISPPARAMS dp;
1703 VARIANT v, r;
1704 EXCEPINFO ei;
1705 IDispatch *disp;
1706 WCHAR *names[1];
1707 UINT count, i;
1708 DISPID id;
1709 HRESULT hres;
1710
1711 static WCHAR props[][32] = { L"clear", L"description", L"helpcontext", L"helpFILE", L"number", L"raise", L"source" };
1712
1713 CHECK_EXPECT(global_testerrorobject_i);
1714
1715 ok(wFlags == INVOKE_FUNC, "wFlags = %x\n", wFlags);
1716 ok(pdp != NULL, "pdp == NULL\n");
1717 ok(pdp->rgvarg != NULL, "rgvarg == NULL\n");
1718 ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
1719 ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs);
1720 ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs);
1721 ok(!pvarRes, "pvarRes != NULL\n");
1722 ok(pei != NULL, "pei == NULL\n");
1723
1724 ok(V_VT(pdp->rgvarg) == VT_DISPATCH, "V_VT(pdp->rgvarg) = %d\n", V_VT(pdp->rgvarg));
1725 disp = V_DISPATCH(pdp->rgvarg);
1726 hres = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (void**)&dispex);
1727 ok(hres == E_NOINTERFACE, "Could not get IDispatchEx iface: %08lx\n", hres);
1728
1729 hres = IDispatch_GetTypeInfoCount(disp, &count);
1730 ok(hres == S_OK, "GetTypeInfoCount returned: %08lx\n", hres);
1731 ok(count == 0, "count = %u\n", count);
1732
1733 hres = IDispatch_GetTypeInfo(disp, 0, 0, &typeinfo);
1734 ok(hres == DISP_E_BADINDEX, "GetTypeInfo returned: %08lx\n", hres);
1735
1736 for(i = 0; i < ARRAY_SIZE(props); i++) {
1737 names[0] = props[i];
1738 hres = IDispatch_GetIDsOfNames(disp, &IID_NULL, names, 1, 0, &id);
1739 ok(hres == S_OK, "GetIDsOfNames failed: %08lx\n", hres);
1740 ok(id == i + 1, "%s id = %lu\n", wine_dbgstr_w(props[i]), id);
1741 }
1742
1743 memset(&dp, 0, sizeof(dp));
1744 memset(&ei, 0, sizeof(ei));
1745 V_VT(&v) = VT_ERROR;
1746 hres = IDispatch_Invoke(disp, 5, &IID_NULL, 0, DISPATCH_PROPERTYGET, &dp, &v, &ei, NULL);
1747 ok(hres == S_OK, "Invoke failed: %08lx\n", hres);
1748 ok(V_VT(&v) == VT_I4, "V_VT(v) = %d\n", V_VT(&v));
1749 ok(V_I4(&v) == 1, "V_I4(v) = %ld\n", V_I4(&v));
1750 hres = IDispatch_Invoke(disp, DISPID_VALUE, &IID_NULL, 0, DISPATCH_PROPERTYGET, &dp, &v, &ei, NULL);
1751 ok(hres == S_OK, "Invoke failed: %08lx\n", hres);
1752 ok(V_VT(&v) == VT_I4, "V_VT(v) = %d\n", V_VT(&v));
1753 ok(V_I4(&v) == 1, "V_I4(v) = %ld\n", V_I4(&v));
1754
1755 dp.rgvarg = &v;
1756 V_VT(&v) = VT_I4;
1757 V_I4(&v) = 6;
1758 V_VT(&r) = VT_EMPTY;
1759 hres = IDispatch_Invoke(disp, DISPID_VALUE, &IID_NULL, 6, DISPATCH_METHOD|DISPATCH_PROPERTYGET, &dp, &r, &ei, NULL);
1760 ok(hres == S_OK, "Invoke failed: %08lx\n", hres);
1761 return S_OK;
1762 }
1764 V_VT(pvarRes) = VT_UNKNOWN;
1765 V_UNKNOWN(pvarRes) = &unkObj;
1766 return S_OK;
1767
1769 {
1771 VARIANT *v;
1772
1773 ok(pdp != NULL, "pdp == NULL\n");
1774 ok(pdp->rgvarg != NULL, "rgvarg == NULL\n");
1775 ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
1776 ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs);
1777 ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs);
1778 ok(pvarRes != NULL, "pvarRes == NULL\n");
1779 ok(V_VT(pvarRes) == VT_EMPTY, "V_VT(pvarRes) = %d\n", V_VT(pvarRes));
1780 ok(pei != NULL, "pei == NULL\n");
1781
1782 ok(V_VT(pdp->rgvarg) == (VT_VARIANT|VT_BYREF), "Unexpected argument type %d.\n", V_VT(pdp->rgvarg));
1783 v = V_VARIANTREF(pdp->rgvarg);
1784 ok(V_VT(v) == (VT_VARIANT|VT_ARRAY|VT_BYREF), "Unexpected argument type %d.\n", V_VT(v));
1785 if (V_ISARRAY(v))
1786 {
1788 is_fixed = (sa->fFeatures & (FADF_FIXEDSIZE | FADF_STATIC)) == (FADF_FIXEDSIZE | FADF_STATIC);
1789 }
1790
1791 V_VT(pvarRes) = VT_BOOL;
1792 V_BOOL(pvarRes) = is_fixed ? VARIANT_TRUE : VARIANT_FALSE;
1793 return S_OK;
1794 }
1795 }
1796
1797 ok(0, "unexpected call %ld\n", id);
1798 return DISP_E_MEMBERNOTFOUND;
1799}
static struct sockaddr_in sa
Definition: adnsresfilter.c:69
#define E_INVALIDARG
Definition: ddrawi.h:101
@ VT_BSTR
Definition: compat.h:2303
@ VT_BYREF
Definition: compat.h:2342
@ VT_ERROR
Definition: compat.h:2305
@ VT_ARRAY
Definition: compat.h:2341
@ VT_R8
Definition: compat.h:2300
@ VT_VARIANT
Definition: compat.h:2307
@ VT_I4
Definition: compat.h:2298
@ VT_BOOL
Definition: compat.h:2306
@ VT_DISPATCH
Definition: compat.h:2304
HRESULT WINAPI VarBstrFromR8(double dblIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
Definition: vartype.c:6587
#define test_disp(u, id, v)
Definition: dom.c:662
static const char * debugstr_variant(const VARIANT *var)
Definition: dom.c:505
unsigned int BOOL
Definition: ntddk_ex.h:94
const GLdouble * v
Definition: gl.h:2040
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
GLuint GLuint * names
Definition: glext.h:11545
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
GLuint id
Definition: glext.h:5910
#define b
Definition: ke_i.h:79
#define todo_wine_if(is_todo)
Definition: minitest.h:81
#define SET_EXPECT(func)
Definition: run.c:58
#define CHECK_CALLED(func)
Definition: run.c:73
static const char * test_name
Definition: run.c:194
static IDispatchEx testObj
Definition: run.c:672
static void test_safearray(void)
Definition: safearray.c:378
static VARIANTARG static DISPID
Definition: ordinal.c:49
static BOOL is_fixed(HANDLE handle)
Definition: clipboard.c:1443
static int test_counter
Definition: run.c:165
static BSTR a2bstr(const char *str)
Definition: run.c:171
static IUnknown unkObj
Definition: run.c:635
static IDispatchEx RefObj
Definition: run.c:1142
static const char * vt2a(VARIANT *v)
Definition: run.c:183
static IDispatchEx collectionObj
Definition: run.c:1110
struct stdole::DISPPARAMS DISPPARAMS
#define V_ERROR(A)
Definition: oleauto.h:241
#define V_BOOL(A)
Definition: oleauto.h:224
#define V_ARRAY(A)
Definition: oleauto.h:222
#define V_ARRAYREF(A)
Definition: oleauto.h:223
#define V_ISBYREF(A)
Definition: oleauto.h:217
#define DISPATCH_PROPERTYPUT
Definition: oleauto.h:1008
#define V_VARIANTREF(A)
Definition: oleauto.h:283
#define V_BSTR(A)
Definition: oleauto.h:226
#define V_BYREF(A)
Definition: oleauto.h:228
#define V_I4(A)
Definition: oleauto.h:247
#define V_ISARRAY(A)
Definition: oleauto.h:218
#define V_DISPATCH(A)
Definition: oleauto.h:239
#define V_R8(A)
Definition: oleauto.h:262
#define DISPATCH_PROPERTYPUTREF
Definition: oleauto.h:1009
#define IID_NULL
Definition: guiddef.h:98
#define memset(x, y, z)
Definition: compat.h:39
static const WCHAR props[]
Definition: wbemdisp.c:288
#define DISP_E_PARAMNOTFOUND
Definition: winerror.h:3616
#define DISP_E_MEMBERNOTFOUND
Definition: winerror.h:3615
#define DISP_E_EXCEPTION
Definition: winerror.h:3621
#define DISP_E_BADINDEX
Definition: winerror.h:3623

◆ Global_Release()

static ULONG WINAPI Global_Release ( IDispatchEx iface)
static

Definition at line 1151 of file run.c.

1152{
1153 return --global_ref;
1154}

◆ parse_procedure()

static IDispatchEx * parse_procedure ( IActiveScriptParseProcedure2 *  parse_proc,
const WCHAR src,
DWORD  flags 
)
static

Definition at line 2220 of file run.c.

2221{
2222 IDispatchEx *dispex;
2223 IDispatch *disp;
2224 BSTR str;
2225 HRESULT hres;
2226
2229 SCRIPTPROC_HOSTMANAGESSOURCE|SCRIPTPROC_IMPLICIT_THIS|SCRIPTPROC_IMPLICIT_PARENTS|flags, &disp);
2231 ok(hres == S_OK, "ParseProcedureText failed: %08lx\n", hres);
2232 ok(disp != NULL, "disp = NULL\n");
2233
2234 hres = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (void**)&dispex);
2235 IDispatch_Release(disp);
2236 ok(hres == S_OK, "Could not get IDispatchEx iface: %08lx\n", hres);
2237
2238 return dispex;
2239}
#define IActiveScriptParseProcedure2_ParseProcedureText
Definition: run.c:46

Referenced by test_procedures().

◆ parse_script()

static HRESULT parse_script ( DWORD  flags,
BSTR  script_str,
const WCHAR delim 
)
static

Definition at line 2090 of file run.c.

2091{
2092 IActiveScriptParse *parser;
2093 IActiveScript *engine;
2095 HRESULT hres;
2096
2098 if(!engine)
2099 return S_OK;
2100
2101 hres = IActiveScript_QueryInterface(engine, &IID_IActiveScriptParse, (void**)&parser);
2102 ok(hres == S_OK, "Could not get IActiveScriptParse: %08lx\n", hres);
2103 if (FAILED(hres))
2104 {
2105 IActiveScript_Release(engine);
2106 return hres;
2107 }
2108
2109 hres = IActiveScript_GetScriptDispatch(engine, NULL, &script_disp);
2110 ok(hres == S_OK, "GetScriptDispatch failed: %08lx\n", hres);
2111 ok(script_disp != NULL, "script_disp == NULL\n");
2112 ok(script_disp != (IDispatch*)&Global, "script_disp == Global\n");
2113
2114 test_counter = 0;
2115
2116 hres = IActiveScriptParse_ParseScriptText(parser, script_str, NULL, NULL, delim, 0, 0, 0, NULL, NULL);
2117
2118 IDispatch_Release(script_disp);
2120 close_script(engine);
2121
2122 return hres;
2123}
#define FAILED(hr)
Definition: intsafe.h:51
#define IActiveScriptParse_ParseScriptText
Definition: run.c:44
static IDispatch * script_disp
Definition: run.c:195
static void close_script(IActiveScript *script)
Definition: run.c:232
static IActiveScript * create_and_init_script(DWORD flags, BOOL start)
Definition: run.c:2044

◆ parse_script_w()

static void parse_script_w ( const WCHAR src)
static

Definition at line 2203 of file run.c.

2204{
2205 parse_script_wf(SCRIPTITEM_GLOBALMEMBERS, src);
2206}
static void parse_script_wf(DWORD flags, const WCHAR *src)
Definition: run.c:2125

Referenced by run_tests(), and test_msgbox().

◆ parse_script_wf()

static void parse_script_wf ( DWORD  flags,
const WCHAR src 
)
static

Definition at line 2125 of file run.c.

2126{
2127 BSTR tmp;
2128 HRESULT hres;
2129
2130 tmp = SysAllocString(src);
2131 hres = parse_script(flags, tmp, NULL);
2132 SysFreeString(tmp);
2133 ok(hres == S_OK, "parse_script failed: %08lx\n", hres);
2134}

Referenced by parse_script_w(), and run_tests().

◆ parse_script_wr()

static HRESULT parse_script_wr ( const WCHAR src)
static

Definition at line 2136 of file run.c.

2137{
2138 BSTR tmp;
2139 HRESULT hres;
2140
2141 tmp = SysAllocString(src);
2142 hres = parse_script(SCRIPTITEM_GLOBALMEMBERS, tmp, NULL);
2143 SysFreeString(tmp);
2144 return hres;
2145}

Referenced by run_tests(), test_callbacks(), test_msgbox(), and test_parse_errors().

◆ RefObj_AddRef()

static ULONG WINAPI RefObj_AddRef ( IDispatchEx iface)
static

Definition at line 1114 of file run.c.

1115{
1116 return ++refobj_ref;
1117}
static ULONG refobj_ref
Definition: run.c:1112

◆ RefObj_Release()

static ULONG WINAPI RefObj_Release ( IDispatchEx iface)
static

Definition at line 1119 of file run.c.

1120{
1121 return --refobj_ref;
1122}

◆ run_from_file()

static void run_from_file ( const char filename)
static

Definition at line 3129 of file run.c.

3130{
3131 BSTR script_str;
3132 HRESULT hres;
3133
3134 script_str = get_script_from_file(filename);
3135 if(!script_str)
3136 return;
3137
3139 hres = parse_script(SCRIPTITEM_GLOBALMEMBERS, script_str, NULL);
3140 SysFreeString(script_str);
3141 ok(hres == S_OK, "parse_script failed: %08lx\n", hres);
3142}
static BSTR get_script_from_file(const char *filename)
Definition: run.c:2708

◆ run_from_res()

static void run_from_res ( const char name)
static

Definition at line 3144 of file run.c.

3145{
3146 const char *data;
3147 DWORD size, len;
3148 BSTR str;
3149 HRSRC src;
3150 HRESULT hres;
3151
3153 test_name = name;
3154
3155 src = FindResourceA(NULL, name, (LPCSTR)40);
3156 ok(src != NULL, "Could not find resource %s\n", name);
3157
3160
3164
3165 SET_EXPECT(global_success_d);
3166 SET_EXPECT(global_success_i);
3167 hres = parse_script(SCRIPTITEM_GLOBALMEMBERS, str, NULL);
3168 CHECK_CALLED(global_success_d);
3169 CHECK_CALLED(global_success_i);
3170
3171 ok(hres == S_OK, "parse_script failed: %08lx\n", hres);
3173 test_name = "";
3174}
HRSRC WINAPI FindResourceA(HMODULE hModule, LPCSTR name, LPCSTR type)
Definition: res.c:155
DWORD WINAPI SizeofResource(HINSTANCE hModule, HRSRC hRsrc)
Definition: res.c:568
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
Definition: res.c:532
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
const char * LPCSTR
Definition: typedefs.h:52

◆ run_tests()

static void run_tests ( void  )
static

Definition at line 3176 of file run.c.

3177{
3178 HRESULT hres;
3179
3181
3182 parse_script_w(L"");
3183 parse_script_w(L"' empty ;");
3184
3185 SET_EXPECT(global_success_d);
3186 SET_EXPECT(global_success_i);
3187 parse_script_w(L"reportSuccess");
3188 CHECK_CALLED(global_success_d);
3189 CHECK_CALLED(global_success_i);
3190
3191 SET_EXPECT(global_success_d);
3192 SET_EXPECT(global_success_i);
3193 parse_script_w(L"reportSuccess()");
3194 CHECK_CALLED(global_success_d);
3195 CHECK_CALLED(global_success_i);
3196
3197 SET_EXPECT(global_success_d);
3198 SET_EXPECT(global_success_i);
3199 parse_script_w(L"Call reportSuccess");
3200 CHECK_CALLED(global_success_d);
3201 CHECK_CALLED(global_success_i);
3202
3203 SET_EXPECT(global_success_d);
3204 SET_EXPECT(global_success_i);
3205 parse_script_w(L"test.reportSuccess()");
3206 CHECK_CALLED(global_success_d);
3207 CHECK_CALLED(global_success_i);
3208
3209 SET_EXPECT(global_success_d);
3210 SET_EXPECT(global_success_i);
3211 parse_script_wf(0, L"TEST.reportSuccess()");
3212 CHECK_CALLED(global_success_d);
3213 CHECK_CALLED(global_success_i);
3214
3215 SET_EXPECT(global_vbvar_d);
3216 SET_EXPECT(global_vbvar_i);
3217 parse_script_w(L"Option Explicit\nvbvar = 3");
3218 CHECK_CALLED(global_vbvar_d);
3219 CHECK_CALLED(global_vbvar_i);
3220
3221 SET_EXPECT(global_vbvar_d);
3222 SET_EXPECT(global_vbvar_i);
3223 parse_script_w(L"Option Explicit\nvbvar() = 3");
3224 CHECK_CALLED(global_vbvar_d);
3225 CHECK_CALLED(global_vbvar_i);
3226
3227 SET_EXPECT(global_letobj_i);
3228 parse_script_w(L"Option Explicit\nletobj = testObj");
3229 CHECK_CALLED(global_letobj_i);
3230
3231 SET_EXPECT(global_letobj_i);
3232 parse_script_w(L"Option Explicit\ntest.letobj = testObj");
3233 CHECK_CALLED(global_letobj_i);
3234
3235 SET_EXPECT(global_setobj_i);
3236 parse_script_w(L"Option Explicit\nset setobj = testObj");
3237 CHECK_CALLED(global_setobj_i);
3238
3239 SET_EXPECT(global_setobj_i);
3240 parse_script_w(L"Option Explicit\nset test.setobj = testObj");
3241 CHECK_CALLED(global_setobj_i);
3242
3243 hres = parse_script_wr(L"dim x\nx = testObj.rem");
3244 ok(hres == S_OK, "use of 'rem' as dot identifier failed: %lx08\n", hres);
3245
3246 SET_EXPECT(testobj_propget_d);
3247 SET_EXPECT(testobj_propget_i);
3248 parse_script_w(L"dim x\nx = testObj.propget");
3249 CHECK_CALLED(testobj_propget_d);
3250 CHECK_CALLED(testobj_propget_i);
3251
3252 SET_EXPECT(testobj_propput_d);
3253 SET_EXPECT(testobj_propput_i);
3254 parse_script_w(L"testObj.propput = 1");
3255 CHECK_CALLED(testobj_propput_d);
3256 CHECK_CALLED(testobj_propput_i);
3257
3258 SET_EXPECT(global_propargput_d);
3259 SET_EXPECT(global_propargput_i);
3260 parse_script_w(L"propargput(counter(), counter()) = counter()");
3261 CHECK_CALLED(global_propargput_d);
3262 CHECK_CALLED(global_propargput_i);
3263
3264 SET_EXPECT(global_propargput_d);
3265 SET_EXPECT(global_propargput_i);
3266 parse_script_w(L"test.propargput(counter(), counter()) = counter()");
3267 CHECK_CALLED(global_propargput_d);
3268 CHECK_CALLED(global_propargput_i);
3269
3270 SET_EXPECT(global_propargput1_d);
3271 SET_EXPECT(global_propargput1_i);
3272 parse_script_w(L"propargput1 (counter()) = counter()");
3273 CHECK_CALLED(global_propargput1_d);
3274 CHECK_CALLED(global_propargput1_i);
3275
3276 SET_EXPECT(global_propargput1_d);
3277 SET_EXPECT(global_propargput1_i);
3278 parse_script_w(L"test.propargput1(counter()) = counter()");
3279 CHECK_CALLED(global_propargput1_d);
3280 CHECK_CALLED(global_propargput1_i);
3281
3282 SET_EXPECT(global_propargset_d);
3283 SET_EXPECT(global_propargset_i);
3284 parse_script_w(L"set propargset (counter()) = testObj");
3285 CHECK_CALLED(global_propargset_d);
3286 CHECK_CALLED(global_propargset_i);
3287
3288 SET_EXPECT(testobj_propget_d);
3289 SET_EXPECT(testobj_propget_i);
3290 parse_script_w(L"dim x\nwith testObj\nx=1+.propget\nend with");
3291 CHECK_CALLED(testobj_propget_d);
3292 CHECK_CALLED(testobj_propget_i);
3293
3294 SET_EXPECT(testobj_propput_d);
3295 SET_EXPECT(testobj_propput_i);
3296 parse_script_w(L"with testObj\n.propput = 1\nend with");
3297 CHECK_CALLED(testobj_propput_d);
3298 CHECK_CALLED(testobj_propput_i);
3299
3300 SET_EXPECT(testobj_valueput_i);
3301 parse_script_w(L"dim x\n"
3302 "set x = testObj\n"
3303 "x(counter(), counter()) = counter\n");
3304 CHECK_CALLED(testobj_valueput_i);
3305
3306 parse_script_w(L"dim x\nx = testObj.property(1)");
3307
3308 parse_htmlscript(L"<!--");
3309 parse_htmlscript(L" -->");
3310 parse_htmlscript(L"<!--\ndim x\nx=1\n-->\n");
3311 parse_htmlscript(L"<!--\ndim x\n-->\n<!--\nx=1\n-->\n");
3312
3313 SET_EXPECT(OnScriptError);
3314 hres = parse_script_wr(L"<!--");
3315 ok(FAILED(hres), "script didn't fail\n");
3316 CHECK_CALLED(OnScriptError);
3317
3318 SET_EXPECT(global_success_d);
3319 SET_EXPECT(global_success_i);
3320 parse_htmlscript(L"<!--\n<!-- ignore this <> <>\n--> <>\nCall reportSuccess()\n-->\n");
3321 CHECK_CALLED(global_success_d);
3322 CHECK_CALLED(global_success_i);
3323
3324 next_cnt = 0;
3325 SET_EXPECT(collectionobj_newenum_i);
3327 parse_script_w(L"for each x in collectionObj\nnext");
3328 CHECK_CALLED(collectionobj_newenum_i);
3330 ok(next_cnt == 4, "next_cnt = %d\n", next_cnt);
3331
3332 parse_script_w(L"x = 1\n Call ok(x = 1, \"x = \" & x)");
3333
3334 parse_script_w(L"x = _ \n3");
3335
3338
3339 SET_EXPECT(OnScriptError);
3340 hres = parse_script_wr(L"throwInt(&h80080008&)");
3341 ok(hres == 0x80080008, "hres = %08lx\n", hres);
3342 CHECK_CALLED(OnScriptError);
3343
3344 /* DISP_E_BADINDEX */
3345 SET_EXPECT(OnScriptError);
3346 hres = parse_script_wr(L"throwInt(&h8002000b&)");
3347 ok(hres == MAKE_VBSERROR(9), "hres = %08lx\n", hres);
3348 CHECK_CALLED(OnScriptError);
3349
3350 SET_EXPECT(OnScriptError);
3351 hres = parse_script_wr(L"throwInt(&h800a0009&)");
3352 ok(hres == MAKE_VBSERROR(9), "hres = %08lx\n", hres);
3353 CHECK_CALLED(OnScriptError);
3354
3356 SET_EXPECT(OnScriptError);
3357 hres = parse_script_wr(L"throwInt(&h800a0009&)");
3358 ok(hres == SCRIPT_E_REPORTED, "hres = %08lx\n", hres);
3359 CHECK_CALLED(OnScriptError);
3360
3361 /* E_NOTIMPL */
3362 SET_EXPECT(OnScriptError);
3363 hres = parse_script_wr(L"throwInt(&h80004001&)");
3364 ok(hres == MAKE_VBSERROR(445), "hres = %08lx\n", hres);
3365 CHECK_CALLED(OnScriptError);
3366
3368 SET_EXPECT(OnScriptError);
3369 hres = parse_script_wr(L"throwInt(&h80004001&)");
3370 ok(hres == SCRIPT_E_REPORTED, "hres = %08lx\n", hres);
3371 CHECK_CALLED(OnScriptError);
3372
3373 SET_EXPECT(global_testoptionalarg_i);
3374 parse_script_w(L"call testOptionalArg(1,,2)");
3375 CHECK_CALLED(global_testoptionalarg_i);
3376
3377 SET_EXPECT(global_testoptionalarg_i);
3378 parse_script_w(L"call testOptionalArg(,1,1)");
3379 CHECK_CALLED(global_testoptionalarg_i);
3380
3381 SET_EXPECT(global_testoptionalarg_i);
3382 parse_script_w(L"testOptionalArg 1,,2");
3383 CHECK_CALLED(global_testoptionalarg_i);
3384
3385 parse_script_w(L"sub x()\n"
3386 " dim y\n"
3387 " y = cint(3)\n"
3388 "end sub\n"
3389 "x\n");
3390
3392
3393 SET_EXPECT(testobj_value_i);
3394 parse_script_w(L"dim n,o\n set o = testObj\n n = o(1,2)\n call ok(n=2, \"n = \" & n)\n");
3395 CHECK_CALLED(testobj_value_i);
3396
3397 SET_EXPECT(testobj_value_i);
3398 parse_script_w(L"dim n,o\n set o = testObj\n n = o\n call ok(n=0, \"n = \" & n)\n");
3399 CHECK_CALLED(testobj_value_i);
3400
3401 parse_script_w(L"Sub testsub\n"
3402 "x = 1\n"
3403 "Call ok(x = 1, \"x = \" & x)\n"
3404 "End Sub\n"
3405 "Call testsub()");
3406
3407 parse_script_w(L"Call ok(getVT(x) = \"VT_EMPTY*\", \"getVT(x) = \" & getVT(x))\n");
3408 parse_script_w(L"Call ok(x = \"\", \"x = \" & x)\n");
3409 parse_script_w(L"x = y\n"
3410 "Call ok(getVT(x) = \"VT_EMPTY*\", \"getVT(x) = \" & getVT(x))\n"
3411 "Call ok(getVT(y) = \"VT_EMPTY*\", \"getVT(y) = \" & getVT(y))");
3412 SET_EXPECT(OnScriptError);
3413 hres = parse_script_wr(L"x = y(\"a\")");
3414 ok(FAILED(hres), "script didn't fail\n");
3415 CHECK_CALLED(OnScriptError);
3416
3417 SET_EXPECT(global_success_d);
3418 SET_EXPECT(global_success_i);
3419 parse_script_w(L"' comment\r"
3420 "x = _\r3\r"
3421 "x = _\n3\r"
3422 "x = _\r\n3\r"
3423 "Sub testsub(arg)\r"
3424 "If arg = 1 Then\r\r"
3425 "Call reportSuccess()\n\n"
3426 "End If\r\n"
3427 "End Sub\n\r"
3428 "Call testsub(1)");
3429 CHECK_CALLED(global_success_d);
3430 CHECK_CALLED(global_success_i);
3431
3432 run_from_res("lang.vbs");
3433 run_from_res("api.vbs");
3434 run_from_res("regexp.vbs");
3435 run_from_res("error.vbs");
3436
3438 test_gc();
3439 test_msgbox();
3445}
static void run_from_res(const char *name)
Definition: run.c:2784
static void test_parse_errors(void)
Definition: run.c:2647
static HRESULT test_global_vars_ref(BOOL use_close)
Definition: run.c:2845
static void parse_script_w(const WCHAR *src)
Definition: run.c:2203
static HRESULT parse_script_wr(const WCHAR *src)
Definition: run.c:2136
static void test_multiple_parse(void)
Definition: run.c:3050
static void test_procedures(void)
Definition: run.c:2242
static void test_gc(void)
Definition: run.c:2591
static void test_isexpression(void)
Definition: run.c:2902
static void test_callbacks(void)
Definition: run.c:2301
#define MAKE_VBSERROR(code)
Definition: run.c:159
#define parse_htmlscript(a)
Definition: run.c:2208
static void test_parse_context(void)
Definition: run.c:2147
static void test_msgbox(void)
Definition: run.c:2796

◆ ServiceProvider_AddRef()

static ULONG WINAPI ServiceProvider_AddRef ( IServiceProvider iface)
static

Definition at line 266 of file run.c.

267{
268 return 2;
269}

◆ ServiceProvider_QueryInterface()

static HRESULT WINAPI ServiceProvider_QueryInterface ( IServiceProvider iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 260 of file run.c.

261{
262 ok(0, "unexpected call\n");
263 return E_NOINTERFACE;
264}

◆ ServiceProvider_QueryService()

static HRESULT WINAPI ServiceProvider_QueryService ( IServiceProvider iface,
REFGUID  guidService,
REFIID  riid,
void **  ppv 
)
static

Definition at line 276 of file run.c.

278{
279 ok(0, "unexpected service %s\n", wine_dbgstr_guid(guidService));
280 return E_NOINTERFACE;
281}

◆ ServiceProvider_Release()

static ULONG WINAPI ServiceProvider_Release ( IServiceProvider iface)
static

Definition at line 271 of file run.c.

272{
273 return 1;
274}

◆ START_TEST()

START_TEST ( run  )

Definition at line 3468 of file run.c.

3469{
3470 int argc;
3471 char **argv;
3472
3473 detect_locale();
3474 if(!is_english)
3475 skip("Skipping some tests in non-English locale\n");
3476
3478
3480
3481 if(!check_vbscript()) {
3482 win_skip("Broken engine, probably too old\n");
3483 }else if(argc > 2) {
3484 allow_ui = TRUE;
3486 run_from_file(argv[2]);
3487 }else {
3488 run_tests();
3489 }
3490
3492}
@ SCRIPTUICHANDLING_ALLOW
Definition: activscp.idl:76
#define skip(...)
Definition: atltest.h:64
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: combase.c:2842
MonoAssembly int argc
Definition: metahost.c:107
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
Definition: compobj.c:531
#define win_skip
Definition: minitest.h:67
static BOOL run_tests(void)
Definition: run.c:4005
static void run_from_file(const char *filename)
Definition: run.c:2746
static BOOL check_vbscript(void)
Definition: run.c:3447
static void detect_locale(void)
Definition: run.c:232
#define argv
Definition: mplay32.c:18
int winetest_get_mainargs(char ***pargv)

◆ test_callbacks()

static void test_callbacks ( void  )
static

Definition at line 2301 of file run.c.

2302{
2304 IActiveScriptParse *parser;
2305 DISPPARAMS dp = {NULL};
2307 IDispatchEx *dispex;
2308 IDispatch *disp;
2309 DISPID id;
2310 EXCEPINFO ei = {0};
2311 BSTR str;
2312 VARIANT v;
2313 HRESULT hres;
2314
2316 script = create_and_init_script(SCRIPTITEM_GLOBALMEMBERS, TRUE);
2317
2318 hres = IActiveScript_QueryInterface(script, &IID_IActiveScriptParse, (void**)&parser);
2319 ok(hres == S_OK, "Could not get IActiveScriptParseProcedure2 iface: %08lx\n", hres);
2320
2321 SET_EXPECT(OnEnterScript);
2322 SET_EXPECT(OnLeaveScript);
2324 L"class CallbackClass\n"
2325 L" public function callback()\n"
2326 L" call ok(err.number = 2, \"err.number = \" & err.number)\n"
2327 L" callback = true\n"
2328 L" end function\n"
2329 L"end class\n"
2330 L"function callGlobalCallback()\n"
2331 L" on error resume next\n"
2332 L" err.raise 2\n"
2333 L" call test.globalCallback(new CallbackClass)\n"
2334 L" call ok(err.number = 2, \"err.number = \" & err.number)\n"
2335 L"end function\n",
2336 NULL, NULL, NULL, 0, 0, 0, NULL, NULL);
2337 ok(hres == S_OK, "ParseScriptText failed: %08lx\n", hres);
2338 CHECK_CALLED(OnEnterScript);
2339 CHECK_CALLED(OnLeaveScript);
2340
2341 hres = IActiveScript_GetScriptDispatch(script, NULL, &disp);
2342 ok(hres == S_OK, "GetScriptDispatch failed: %08lx\n", hres);
2343
2344 hres = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (void**)&dispex);
2345 ok(hres == S_OK, "Could not get IDispatchEx iface: %08lx\n", hres);
2346 IDispatch_Release(disp);
2347
2348 str = SysAllocString(L"callGlobalCallback");
2349 hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseInsensitive, &id);
2350 ok(hres == S_OK, "GetDispID failed: %08lx\n", hres);
2352
2353 SET_EXPECT(OnEnterScript);
2354 /* OnLeaveScript will be set in global callback */
2355 SET_EXPECT(global_globalcallback_i);
2356 hres = IDispatchEx_InvokeEx(dispex, id, 0, DISPATCH_METHOD, &dp, &v, &ei, &caller_sp);
2357 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
2358 /* OnEnterScript was checked in global callback */
2359 CHECK_CALLED(OnLeaveScript);
2360 CHECK_CALLED(global_globalcallback_i);
2361
2363
2364 SET_EXPECT(OnEnterScript);
2365 SET_EXPECT(OnLeaveScript);
2366 SET_EXPECT(OnScriptError);
2368 NULL, NULL, NULL, 0, 0, 0, NULL, NULL);
2369 ok(hres == MAKE_VBSERROR(2), "ParseScriptText failed: %08lx\n", hres);
2370 CHECK_CALLED(OnEnterScript);
2371 CHECK_CALLED(OnLeaveScript);
2372 CHECK_CALLED(OnScriptError);
2373
2375
2376 SET_EXPECT(OnEnterScript);
2377 SET_EXPECT(OnLeaveScript);
2378 SET_EXPECT(OnScriptError);
2380 L"call ok(err.number = 0, \"err.number = \" & err.number)\n"
2381 L"err.raise &h86664004&, \"src\", \"desc\", \"help\", 1\n",
2382 NULL, NULL, NULL, 0, 0, 0, NULL, NULL);
2383 ok(hres == SCRIPT_E_RECORDED, "ParseScriptText failed: %08lx\n", hres);
2384 CHECK_CALLED(OnEnterScript);
2385 CHECK_CALLED(OnLeaveScript);
2386 CHECK_CALLED(OnScriptError);
2387
2388 memset(&ei, 0xcc, sizeof(ei));
2389 hres = IActiveScriptError_GetExceptionInfo(error1, &ei);
2390 ok(hres == S_OK, "GetExceptionInfo returned %08lx\n", hres);
2391 ok(!ei.wCode, "wCode = %x\n", ei.wCode);
2392 ok(!ei.wReserved, "wReserved = %x\n", ei.wReserved);
2393 if(is_english) {
2394 ok(!wcscmp(ei.bstrSource, L"Microsoft VBScript runtime error"),
2395 "bstrSource = %s\n", wine_dbgstr_w(ei.bstrSource));
2396 ok(!wcscmp(ei.bstrDescription, L"Unknown runtime error"),
2397 "bstrDescription = %s\n", wine_dbgstr_w(ei.bstrDescription));
2398 }
2399 ok(!ei.bstrHelpFile, "bstrHelpFile = %s\n", wine_dbgstr_w(ei.bstrHelpFile));
2400 ok(!ei.dwHelpContext, "dwHelpContext = %lx\n", ei.dwHelpContext);
2401 ok(!ei.pvReserved, "pvReserved = %p\n", ei.pvReserved);
2402 ok(!ei.pfnDeferredFillIn, "pfnDeferredFillIn = %p\n", ei.pfnDeferredFillIn);
2403 ok(ei.scode == MAKE_VBSERROR(2), "scode = %lx\n", ei.scode);
2404 free_ei(&ei);
2405
2406 IActiveScriptError_Release(error1);
2407
2408 memset(&ei, 0xcc, sizeof(ei));
2409 hres = IActiveScriptError_GetExceptionInfo(error2, &ei);
2410 ok(hres == S_OK, "GetExceptionInfo returned %08lx\n", hres);
2411 ok(!ei.wCode, "wCode = %x\n", ei.wCode);
2412 ok(!ei.wReserved, "wReserved = %x\n", ei.wReserved);
2413 ok(!wcscmp(ei.bstrSource, L"src"), "bstrSource = %s\n", wine_dbgstr_w(ei.bstrSource));
2414 ok(!wcscmp(ei.bstrDescription, L"desc"), "bstrDescription = %s\n", wine_dbgstr_w(ei.bstrDescription));
2415 ok(!wcscmp(ei.bstrHelpFile, L"help"), "bstrHelpFile = %s\n", wine_dbgstr_w(ei.bstrHelpFile));
2416 ok(ei.dwHelpContext == 1, "dwHelpContext = %lx\n", ei.dwHelpContext);
2417 ok(!ei.pvReserved, "pvReserved = %p\n", ei.pvReserved);
2418 ok(!ei.pfnDeferredFillIn, "pfnDeferredFillIn = %p\n", ei.pfnDeferredFillIn);
2419 ok(ei.scode == SCRIPT_E_RECORDED, "scode = %lx\n", ei.scode);
2420 free_ei(&ei);
2421
2422 IActiveScriptError_Release(error2);
2423
2424 SET_EXPECT(OnEnterScript);
2425 SET_EXPECT(OnLeaveScript);
2426 SET_EXPECT(OnScriptError);
2427 hres = IActiveScriptParse_ParseScriptText(parser, L"err.raise &hffff&\n",
2428 NULL, NULL, NULL, 0, 0, 0, NULL, NULL);
2429 ok(hres == MAKE_VBSERROR(0xffff), "ParseScriptText failed: %08lx\n", hres);
2430 CHECK_CALLED(OnEnterScript);
2431 CHECK_CALLED(OnLeaveScript);
2432 CHECK_CALLED(OnScriptError);
2433
2434 SET_EXPECT(OnEnterScript);
2435 SET_EXPECT(OnLeaveScript);
2436 SET_EXPECT(OnScriptError);
2437 hres = IActiveScriptParse_ParseScriptText(parser, L"err.raise &h80102030&\n",
2438 NULL, NULL, NULL, 0, 0, 0, NULL, NULL);
2439 ok(hres == 0x80102030, "ParseScriptText failed: %08lx\n", hres);
2440 CHECK_CALLED(OnEnterScript);
2441 CHECK_CALLED(OnLeaveScript);
2442 CHECK_CALLED(OnScriptError);
2443
2444 SET_EXPECT(OnEnterScript);
2445 SET_EXPECT(global_testerrorobject_i);
2446 SET_EXPECT(OnLeaveScript);
2448 L"on error resume next\n"
2449 L"err.raise 1\n"
2450 L"testErrorObject err\n",
2451 NULL, NULL, NULL, 0, 0, 0, NULL, NULL);
2452 ok(hres == S_OK, "ParseScriptText failed: %08lx\n", hres);
2453 CHECK_CALLED(OnEnterScript);
2454 CHECK_CALLED(global_testerrorobject_i);
2455 CHECK_CALLED(OnLeaveScript);
2456
2457 IDispatchEx_Release(dispex);
2458
2462
2464 SET_EXPECT(OnScriptError);
2465 hres = parse_script_wr(L"throwException &h80004002&");
2466 ok(hres == MAKE_VBSERROR(430), "got error: %08lx\n", hres);
2467 CHECK_CALLED(OnScriptError);
2468
2469 memset(&ei, 0xcc, sizeof(ei));
2470 hres = IActiveScriptError_GetExceptionInfo(error1, &ei);
2471 ok(hres == S_OK, "GetExceptionInfo returned %08lx\n", hres);
2472 ok(!ei.wCode, "wCode = %x\n", ei.wCode);
2473 ok(!ei.wReserved, "wReserved = %x\n", ei.wReserved);
2474 if(is_english) {
2475 ok(!wcscmp(ei.bstrSource, L"Microsoft VBScript runtime error"),
2476 "bstrSource = %s\n", wine_dbgstr_w(ei.bstrSource));
2477 ok(!wcscmp(ei.bstrDescription, L"Class doesn't support Automation"),
2478 "bstrDescription = %s\n", wine_dbgstr_w(ei.bstrDescription));
2479 }
2480 ok(!ei.bstrHelpFile, "bstrHelpFile = %s\n", wine_dbgstr_w(ei.bstrHelpFile));
2481 ok(!ei.dwHelpContext, "dwHelpContext = %lx\n", ei.dwHelpContext);
2482 ok(!ei.pvReserved, "pvReserved = %p\n", ei.pvReserved);
2483 ok(!ei.pfnDeferredFillIn, "pfnDeferredFillIn = %p\n", ei.pfnDeferredFillIn);
2484 ok(ei.scode == MAKE_VBSERROR(430), "scode = %lx\n", ei.scode);
2485 free_ei(&ei);
2486
2487 IActiveScriptError_Release(error1);
2488
2490 SET_EXPECT(OnScriptError);
2491 hres = parse_script_wr(L"throwException &h80004002&, \"test src\"");
2492 ok(hres == MAKE_VBSERROR(430), "got error: %08lx\n", hres);
2493 CHECK_CALLED(OnScriptError);
2494
2495 memset(&ei, 0xcc, sizeof(ei));
2496 hres = IActiveScriptError_GetExceptionInfo(error1, &ei);
2497 ok(hres == S_OK, "GetExceptionInfo returned %08lx\n", hres);
2498 ok(!ei.wCode, "wCode = %x\n", ei.wCode);
2499 ok(!ei.wReserved, "wReserved = %x\n", ei.wReserved);
2500 if(is_english) {
2501 ok(!wcscmp(ei.bstrSource, L"test src"), "bstrSource = %s\n", wine_dbgstr_w(ei.bstrSource));
2502 ok(!wcscmp(ei.bstrDescription, L"Class doesn't support Automation"),
2503 "bstrDescription = %s\n", wine_dbgstr_w(ei.bstrDescription));
2504 }
2505 ok(!ei.bstrHelpFile, "bstrHelpFile = %s\n", wine_dbgstr_w(ei.bstrHelpFile));
2506 ok(!ei.dwHelpContext, "dwHelpContext = %lx\n", ei.dwHelpContext);
2507 ok(!ei.pvReserved, "pvReserved = %p\n", ei.pvReserved);
2508 ok(!ei.pfnDeferredFillIn, "pfnDeferredFillIn = %p\n", ei.pfnDeferredFillIn);
2509 ok(ei.scode == MAKE_VBSERROR(430), "scode = %lx\n", ei.scode);
2510 free_ei(&ei);
2511
2512 IActiveScriptError_Release(error1);
2513
2515 SET_EXPECT(OnScriptError);
2516 hres = parse_script_wr(L"throwException &h80004002&, , \"test desc\"");
2517 ok(hres == E_NOINTERFACE, "got error: %08lx\n", hres);
2518 CHECK_CALLED(OnScriptError);
2519
2520 memset(&ei, 0xcc, sizeof(ei));
2521 hres = IActiveScriptError_GetExceptionInfo(error1, &ei);
2522 ok(hres == S_OK, "GetExceptionInfo returned %08lx\n", hres);
2523 ok(!ei.wCode, "wCode = %x\n", ei.wCode);
2524 ok(!ei.wReserved, "wReserved = %x\n", ei.wReserved);
2525 if(is_english) {
2526 ok(!ei.bstrSource, "bstrSource = %s\n", wine_dbgstr_w(ei.bstrSource));
2527 ok(!wcscmp(ei.bstrDescription, L"test desc"),
2528 "bstrDescription = %s\n", wine_dbgstr_w(ei.bstrDescription));
2529 }
2530 ok(!ei.bstrHelpFile, "bstrHelpFile = %s\n", wine_dbgstr_w(ei.bstrHelpFile));
2531 ok(!ei.dwHelpContext, "dwHelpContext = %lx\n", ei.dwHelpContext);
2532 ok(!ei.pvReserved, "pvReserved = %p\n", ei.pvReserved);
2533 ok(!ei.pfnDeferredFillIn, "pfnDeferredFillIn = %p\n", ei.pfnDeferredFillIn);
2534 ok(ei.scode == E_NOINTERFACE, "scode = %lx\n", ei.scode);
2535 free_ei(&ei);
2536
2537 IActiveScriptError_Release(error1);
2538
2540 SET_EXPECT(OnScriptError);
2541 hres = parse_script_wr(L"throwException &h80004002&, \"test src\", \"test desc\"");
2542 ok(hres == E_NOINTERFACE, "got error: %08lx\n", hres);
2543 CHECK_CALLED(OnScriptError);
2544
2545 memset(&ei, 0xcc, sizeof(ei));
2546 hres = IActiveScriptError_GetExceptionInfo(error1, &ei);
2547 ok(hres == S_OK, "GetExceptionInfo returned %08lx\n", hres);
2548 ok(!ei.wCode, "wCode = %x\n", ei.wCode);
2549 ok(!ei.wReserved, "wReserved = %x\n", ei.wReserved);
2550 if(is_english) {
2551 ok(!wcscmp(ei.bstrSource, L"test src"), "bstrSource = %s\n", wine_dbgstr_w(ei.bstrSource));
2552 ok(!wcscmp(ei.bstrDescription, L"test desc"),
2553 "bstrDescription = %s\n", wine_dbgstr_w(ei.bstrDescription));
2554 }
2555 ok(!ei.bstrHelpFile, "bstrHelpFile = %s\n", wine_dbgstr_w(ei.bstrHelpFile));
2556 ok(!ei.dwHelpContext, "dwHelpContext = %lx\n", ei.dwHelpContext);
2557 ok(!ei.pvReserved, "pvReserved = %p\n", ei.pvReserved);
2558 ok(!ei.pfnDeferredFillIn, "pfnDeferredFillIn = %p\n", ei.pfnDeferredFillIn);
2559 ok(ei.scode == E_NOINTERFACE, "scode = %lx\n", ei.scode);
2560 free_ei(&ei);
2561
2562 IActiveScriptError_Release(error1);
2563
2565 SET_EXPECT(OnScriptError);
2566 hres = parse_script_wr(L"throwException &h8000FFFF&");
2567 ok(hres == E_UNEXPECTED, "got error: %08lx\n", hres);
2568 CHECK_CALLED(OnScriptError);
2569
2570 memset(&ei, 0xcc, sizeof(ei));
2571 hres = IActiveScriptError_GetExceptionInfo(error1, &ei);
2572 ok(hres == S_OK, "GetExceptionInfo returned %08lx\n", hres);
2573 ok(!ei.wCode, "wCode = %x\n", ei.wCode);
2574 ok(!ei.wReserved, "wReserved = %x\n", ei.wReserved);
2575 if(is_english) {
2576 ok(!ei.bstrSource,
2577 "bstrSource = %s\n", wine_dbgstr_w(ei.bstrSource));
2578 ok(!ei.bstrDescription,
2579 "bstrDescription = %s\n", wine_dbgstr_w(ei.bstrDescription));
2580 }
2581 ok(!ei.bstrHelpFile, "bstrHelpFile = %s\n", wine_dbgstr_w(ei.bstrHelpFile));
2582 ok(!ei.dwHelpContext, "dwHelpContext = %lx\n", ei.dwHelpContext);
2583 ok(!ei.pvReserved, "pvReserved = %p\n", ei.pvReserved);
2584 ok(!ei.pfnDeferredFillIn, "pfnDeferredFillIn = %p\n", ei.pfnDeferredFillIn);
2585 ok(ei.scode == E_UNEXPECTED, "scode = %lx\n", ei.scode);
2586 free_ei(&ei);
2587
2588 IActiveScriptError_Release(error1);
2589}
static IServiceProvider caller_sp
Definition: run.c:290
static void free_ei(EXCEPINFO *ei)
Definition: run.c:2294
#define error2(s, a, b)
Definition: debug.h:126
#define error1(s, a)
Definition: debug.h:125
#define E_UNEXPECTED
Definition: winerror.h:3528

Referenced by run_tests().

◆ test_disp()

static void test_disp ( IDispatch disp)
static

Definition at line 292 of file run.c.

293{
294 DISPID id, public_prop_id, public_prop2_id, public_func_id, public_sub_id, defvalget_id, gs_getter_id;
295 DISPID named_args[5] = {DISPID_PROPERTYPUT};
296 VARIANT v, args[5];
297 DISPPARAMS dp = {args, named_args};
298 IDispatchEx *dispex;
299 EXCEPINFO ei = {0};
300 BSTR str;
302
303 hres = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (void**)&dispex);
304 ok(hres == S_OK, "Could not get IDispatchEx iface: %08lx\n", hres);
305
306 str = SysAllocString(L"publicProp");
307 hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseInsensitive, &public_prop_id);
309 ok(hres == S_OK, "GetDispID(publicProp) failed: %08lx\n", hres);
310
311 str = SysAllocString(L"PUBLICPROP");
312 hres = IDispatchEx_GetDispID(dispex, str, 0, &id);
314 ok(hres == S_OK, "GetDispID(PUBLICPROP) failed: %08lx\n", hres);
315 ok(public_prop_id == id, "id = %ld\n", public_prop_id);
316
317 str = SysAllocString(L"publicPROP2");
318 hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseInsensitive, &public_prop2_id);
320 ok(hres == S_OK, "GetDispID(publicProp2) failed: %08lx\n", hres);
321
322 str = SysAllocString(L"defValGet");
323 hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseInsensitive, &defvalget_id);
325 ok(hres == S_OK, "GetDispID(defValGet) failed: %08lx\n", hres);
326 ok(defvalget_id == DISPID_VALUE, "id = %ld\n", defvalget_id);
327
328 str = SysAllocString(L"privateProp");
329 hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseInsensitive, &id);
331 ok(hres == DISP_E_UNKNOWNNAME, "GetDispID(privateProp) failed: %08lx, expected DISP_E_UNKNOWNNAME\n", hres);
332 ok(id == -1, "id = %ld\n", id);
333
334 str = SysAllocString(L"class_initialize");
335 hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseInsensitive, &id);
337 ok(hres == S_OK, "GetDispID(publicProp2) failed: %08lx\n", hres);
338
339 hres = IDispatchEx_InvokeEx(dispex, public_prop_id, 0, DISPATCH_PROPERTYGET|DISPATCH_METHOD, &dp, &v, &ei, NULL);
340 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
341 ok(V_VT(&v) == VT_EMPTY, "V_VT(v) = %d\n", V_VT(&v));
342
343 V_VT(args) = VT_BOOL;
344 V_BOOL(args) = VARIANT_TRUE;
345 dp.cArgs = dp.cNamedArgs = 1;
346 V_VT(&v) = VT_BOOL;
347 hres = IDispatchEx_InvokeEx(dispex, public_prop_id, 0, DISPATCH_PROPERTYPUT, &dp, &v, &ei, NULL);
348 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
349 ok(V_VT(&v) == VT_EMPTY, "V_VT(v) = %d\n", V_VT(&v));
350
351 dp.cArgs = dp.cNamedArgs = 0;
352 hres = IDispatchEx_InvokeEx(dispex, public_prop_id, 0, DISPATCH_PROPERTYGET|DISPATCH_METHOD, &dp, &v, &ei, NULL);
353 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
354 ok(V_VT(&v) == VT_BOOL, "V_VT(v) = %d\n", V_VT(&v));
355 ok(V_BOOL(&v), "V_BOOL(v) = %x\n", V_BOOL(&v));
356
357 dp.cArgs = dp.cNamedArgs = 0;
358 hres = IDispatchEx_Invoke(dispex, public_prop_id, &IID_NULL, 0, DISPATCH_PROPERTYGET|DISPATCH_METHOD, &dp, &v, &ei, NULL);
359 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
360 ok(V_VT(&v) == VT_BOOL, "V_VT(v) = %d\n", V_VT(&v));
361 ok(V_BOOL(&v), "V_BOOL(v) = %x\n", V_BOOL(&v));
362
363 dp.cArgs = dp.cNamedArgs = 0;
364 hres = IDispatchEx_InvokeEx(dispex, public_prop_id, 0, DISPATCH_PROPERTYGET, &dp, &v, &ei, NULL);
365 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
366 ok(V_VT(&v) == VT_BOOL, "V_VT(v) = %d\n", V_VT(&v));
367 ok(V_BOOL(&v), "V_BOOL(v) = %x\n", V_BOOL(&v));
368
369 dp.cArgs = 1;
370 hres = IDispatchEx_InvokeEx(dispex, public_prop_id, 0, DISPATCH_PROPERTYGET|DISPATCH_METHOD, &dp, &v, &ei, NULL);
371 ok(hres == DISP_E_MEMBERNOTFOUND, "InvokeEx failed: %08lx, expected DISP_E_MEMBERNOTFOUND\n", hres);
372 ok(V_VT(&v) == VT_EMPTY, "V_VT(v) = %d\n", V_VT(&v));
373
374 SET_EXPECT(testobj_value_i);
377 dp.cArgs = dp.cNamedArgs = 1;
378 hres = IDispatchEx_InvokeEx(dispex, public_prop_id, 0, DISPATCH_PROPERTYPUT, &dp, NULL, &ei, NULL);
379 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
380 CHECK_CALLED(testobj_value_i);
381
382 dp.cArgs = dp.cNamedArgs = 0;
383 hres = IDispatchEx_InvokeEx(dispex, public_prop_id, 0, DISPATCH_PROPERTYGET, &dp, &v, &ei, NULL);
384 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
385 ok(V_VT(&v) == VT_I2, "V_VT(v) = %d\n", V_VT(&v));
386 ok(V_I2(&v) == 0, "V_I2(v) = %d\n", V_I2(&v));
387
390 dp.cArgs = dp.cNamedArgs = 1;
391 hres = IDispatchEx_InvokeEx(dispex, public_prop_id, 0, DISPATCH_PROPERTYPUT|DISPATCH_PROPERTYPUTREF, &dp, NULL, &ei, NULL);
392 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
393
396 dp.cArgs = dp.cNamedArgs = 1;
397 hres = IDispatchEx_InvokeEx(dispex, public_prop_id, 0, DISPATCH_PROPERTYPUTREF, &dp, NULL, &ei, NULL);
398 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
399
400 dp.cArgs = dp.cNamedArgs = 0;
401 hres = IDispatchEx_InvokeEx(dispex, public_prop_id, 0, DISPATCH_PROPERTYGET, &dp, &v, &ei, NULL);
402 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
403 ok(V_VT(&v) == VT_DISPATCH, "V_VT(v) = %d\n", V_VT(&v));
404 ok(V_DISPATCH(&v) == (IDispatch*)&testObj, "V_DISPATCH(v) != testObj\n");
405
406 V_VT(args) = VT_BOOL;
407 V_BOOL(args) = VARIANT_TRUE;
408 dp.cArgs = dp.cNamedArgs = 1;
409 hres = IDispatchEx_InvokeEx(dispex, public_prop_id, 0, DISPATCH_PROPERTYPUT|DISPATCH_PROPERTYPUTREF, &dp, NULL, &ei, NULL);
410 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
411
412 dp.cArgs = dp.cNamedArgs = 0;
413 hres = IDispatchEx_InvokeEx(dispex, public_prop_id, 0, DISPATCH_PROPERTYGET, &dp, &v, &ei, NULL);
414 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
415 ok(V_VT(&v) == VT_BOOL, "V_VT(v) = %d\n", V_VT(&v));
416 ok(V_BOOL(&v) == VARIANT_TRUE, "V_BOOL(v) = %x\n", V_BOOL(&v));
417
418 V_VT(args) = VT_BOOL;
419 V_BOOL(args) = VARIANT_FALSE;
420 dp.cArgs = dp.cNamedArgs = 1;
421 hres = IDispatchEx_InvokeEx(dispex, public_prop_id, 0, DISPATCH_PROPERTYPUTREF, &dp, NULL, &ei, NULL);
422 ok(hres == DISP_E_EXCEPTION, "InvokeEx failed: %08lx, expected DISP_E_EXCEPTION\n", hres);
423
424 V_VT(args) = VT_BOOL;
425 V_BOOL(args) = VARIANT_FALSE;
426 dp.cArgs = 1;
427 dp.cNamedArgs = 0;
428 V_VT(&v) = VT_BOOL;
429 hres = IDispatchEx_InvokeEx(dispex, public_prop_id, 0, DISPATCH_PROPERTYPUT, &dp, NULL, &ei, NULL);
430 ok(hres == DISP_E_PARAMNOTOPTIONAL, "InvokeEx failed: %08lx, expected DISP_E_PARAMNOTOPTIONAL\n", hres);
431
432 str = SysAllocString(L"publicFunction");
433 hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseInsensitive, &public_func_id);
435 ok(hres == S_OK, "GetDispID(publicFunction) failed: %08lx\n", hres);
436 ok(public_func_id != -1, "public_func_id = -1\n");
437
438 str = SysAllocString(L"publicSub");
439 hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseInsensitive, &public_sub_id);
441 ok(hres == S_OK, "GetDispID(publicSub) failed: %08lx\n", hres);
442 ok(public_sub_id != -1, "public_func_id = -1\n");
443
444 dp.cArgs = dp.cNamedArgs = 0;
445 hres = IDispatchEx_InvokeEx(dispex, public_func_id, 0, DISPATCH_PROPERTYGET|DISPATCH_METHOD, &dp, &v, &ei, NULL);
446 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
447 ok(V_VT(&v) == VT_I2, "V_VT(v) = %d\n", V_VT(&v));
448 ok(V_I2(&v) == 4, "V_I2(v) = %d\n", V_I2(&v));
449
450 dp.cArgs = dp.cNamedArgs = 0;
451 hres = IDispatchEx_InvokeEx(dispex, public_func_id, 0, DISPATCH_PROPERTYGET, &dp, &v, &ei, NULL);
452 ok(hres == DISP_E_MEMBERNOTFOUND, "InvokeEx failed: %08lx, expected DISP_E_MEMBERNOTFOUND\n", hres);
453 ok(V_VT(&v) == VT_EMPTY, "V_VT(v) = %d\n", V_VT(&v));
454
455 dp.cArgs = dp.cNamedArgs = 0;
456 hres = IDispatchEx_InvokeEx(dispex, public_func_id, 0, DISPATCH_METHOD, &dp, &v, &ei, NULL);
457 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
458 ok(V_VT(&v) == VT_I2, "V_VT(v) = %d\n", V_VT(&v));
459 ok(V_I2(&v) == 4, "V_I2(v) = %d\n", V_I2(&v));
460
461 dp.cArgs = dp.cNamedArgs = 0;
462 hres = IDispatchEx_InvokeEx(dispex, public_sub_id, 0, DISPATCH_PROPERTYGET|DISPATCH_METHOD, &dp, &v, &ei, NULL);
463 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
464 ok(V_VT(&v) == VT_EMPTY, "V_VT(v) = %d\n", V_VT(&v));
465
466 dp.cArgs = dp.cNamedArgs = 0;
467 hres = IDispatchEx_InvokeEx(dispex, public_sub_id, 0, DISPATCH_PROPERTYGET, &dp, &v, &ei, NULL);
468 ok(hres == DISP_E_MEMBERNOTFOUND, "InvokeEx failed: %08lx, expected DISP_E_MEMBERNOTFOUND\n", hres);
469 ok(V_VT(&v) == VT_EMPTY, "V_VT(v) = %d\n", V_VT(&v));
470
471 dp.cArgs = dp.cNamedArgs = 0;
472 hres = IDispatchEx_InvokeEx(dispex, public_sub_id, 0, DISPATCH_METHOD, &dp, &v, &ei, NULL);
473 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
474 ok(V_VT(&v) == VT_EMPTY, "V_VT(v) = %d\n", V_VT(&v));
475
476 V_VT(args) = VT_BOOL;
477 V_BOOL(args) = VARIANT_TRUE;
478 dp.cArgs = dp.cNamedArgs = 1;
479 hres = IDispatchEx_InvokeEx(dispex, public_sub_id, 0, DISPATCH_PROPERTYPUT, &dp, NULL, &ei, NULL);
480 ok(FAILED(hres), "InvokeEx succeeded: %08lx\n", hres);
481
482 dp.cArgs = dp.cNamedArgs = 0;
483 hres = IDispatchEx_InvokeEx(dispex, public_func_id, 0, DISPATCH_PROPERTYGET|DISPATCH_METHOD, &dp, &v, &ei, NULL);
484 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
485 ok(V_VT(&v) == VT_I2, "V_VT(v) = %d\n", V_VT(&v));
486 ok(V_I2(&v) == 4, "V_I2(v) = %d\n", V_I2(&v));
487
488 dp.cArgs = dp.cNamedArgs = 0;
489 hres = IDispatchEx_InvokeEx(dispex, public_func_id, 0, DISPATCH_METHOD, &dp, &v, &ei, NULL);
490 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
491 ok(V_VT(&v) == VT_I2, "V_VT(v) = %d\n", V_VT(&v));
492 ok(V_I2(&v) == 4, "V_I2(v) = %d\n", V_I2(&v));
493
494 dp.cArgs = dp.cNamedArgs = 0;
495 hres = IDispatchEx_Invoke(dispex, public_func_id, &IID_NULL, 0, DISPATCH_METHOD, &dp, &v, &ei, NULL);
496 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
497 ok(V_VT(&v) == VT_I2, "V_VT(v) = %d\n", V_VT(&v));
498 ok(V_I2(&v) == 4, "V_I2(v) = %d\n", V_I2(&v));
499
500 dp.cArgs = dp.cNamedArgs = 0;
501 hres = IDispatchEx_InvokeEx(dispex, public_sub_id, 0, DISPATCH_PROPERTYGET|DISPATCH_METHOD, &dp, &v, &ei, NULL);
502 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
503 ok(V_VT(&v) == VT_EMPTY, "V_VT(v) = %d\n", V_VT(&v));
504
505 dp.cArgs = dp.cNamedArgs = 0;
506 hres = IDispatchEx_InvokeEx(dispex, public_sub_id, 0, DISPATCH_METHOD, &dp, &v, &ei, NULL);
507 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
508 ok(V_VT(&v) == VT_EMPTY, "V_VT(v) = %d\n", V_VT(&v));
509
510 str = SysAllocString(L"privateSub");
511 hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseInsensitive, &id);
513 ok(hres == DISP_E_UNKNOWNNAME, "GetDispID(privateSub) failed: %08lx, expected DISP_E_UNKNOWNNAME\n", hres);
514 ok(id == -1, "id = %ld\n", id);
515
516 str = SysAllocString(L"dynprop");
517 hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseInsensitive|fdexNameEnsure, &id);
518 ok(hres == DISP_E_UNKNOWNNAME, "GetDispID(privateProp) failed: %08lx, expected DISP_E_UNKNOWNNAME\n", hres);
519 ok(id == -1, "id = %ld\n", id);
520 hres = IDispatchEx_GetDispID(dispex, str, fdexNameEnsure, &id);
521 ok(hres == DISP_E_UNKNOWNNAME, "GetDispID(privateProp) failed: %08lx, expected DISP_E_UNKNOWNNAME\n", hres);
522 ok(id == -1, "id = %ld\n", id);
524
525 str = SysAllocString(L"publicProp");
526 hres = IDispatchEx_GetDispID(dispex, str, 0x80000000|fdexNameCaseInsensitive, &public_prop_id);
528 ok(hres == S_OK, "GetDispID(publicProp) failed: %08lx\n", hres);
529
530 id = 0xdeadbeef;
531 str = SysAllocString(L"publicProp");
532 hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseSensitive, &id);
534 ok(hres == S_OK, "GetDispID(publicProp) failed: %08lx\n", hres);
535 ok(id == public_prop_id, "id = %ld, expected %ld\n", id, public_prop_id);
536
537 id = 0xdeadbeef;
538 str = SysAllocString(L"publicprop");
539 hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseSensitive, &id);
541 ok(hres == S_OK, "GetDispID(publicProp) failed: %08lx\n", hres);
542 ok(id == public_prop_id, "id = %ld, expected %ld\n", id, public_prop_id);
543
544 str = SysAllocString(L"gsGetProp");
545 hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseInsensitive, &gs_getter_id);
547 ok(hres == S_OK, "GetDispID(publicFunction) failed: %08lx\n", hres);
548 ok(gs_getter_id != -1, "gs_getter_id = -1\n");
549
550 V_VT(args) = VT_BOOL;
551 V_BOOL(args) = VARIANT_TRUE;
552 dp.cNamedArgs = 0;
553 dp.cArgs = 1;
554 V_VT(&v) = VT_I8;
555 hres = IDispatchEx_InvokeEx(dispex, gs_getter_id, 0, DISPATCH_PROPERTYGET, &dp, &v, &ei, NULL);
556 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
557 ok(V_VT(&v) == VT_BOOL && V_BOOL(&v), "V_VT(v) = %d\n", V_VT(&v));
558
559 hres = IDispatchEx_InvokeEx(dispex, gs_getter_id, 0, DISPATCH_PROPERTYGET, &dp, NULL, &ei, NULL);
560 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
561
562 V_VT(args) = VT_BOOL;
563 V_BOOL(args) = VARIANT_FALSE;
564 dp.cArgs = 1;
565 V_VT(&v) = VT_I8;
566 hres = IDispatchEx_InvokeEx(dispex, gs_getter_id, 0, DISPATCH_PROPERTYGET|DISPATCH_METHOD, &dp, &v, &ei, NULL);
567 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
568 ok(V_VT(&v) == VT_BOOL && !V_BOOL(&v), "V_VT(v) = %d\n", V_VT(&v));
569
570 V_VT(args) = VT_BOOL;
571 V_BOOL(args) = VARIANT_TRUE;
572 V_VT(&v) = VT_I8;
573 dp.cArgs = 1;
574 hres = IDispatchEx_InvokeEx(dispex, gs_getter_id, 0, DISPATCH_METHOD, &dp, &v, &ei, NULL);
575 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
576 ok(V_VT(&v) == VT_BOOL && V_BOOL(&v), "V_VT(v) = %d\n", V_VT(&v));
577
578 IDispatchEx_Release(dispex);
579}
@ VT_I8
Definition: compat.h:2314
#define args
Definition: format.c:66
Definition: match.c:390
#define DISP_E_PARAMNOTOPTIONAL
Definition: winerror.h:3627

◆ test_gc()

static void test_gc ( void  )
static

Definition at line 2591 of file run.c.

2592{
2593 IActiveScriptParse *parser;
2594 IActiveScript *engine;
2595 BSTR src;
2596 HRESULT hres;
2597
2599
2600 engine = create_script();
2601 if(!engine)
2602 return;
2603
2604 hres = IActiveScript_QueryInterface(engine, &IID_IActiveScriptParse, (void**)&parser);
2605 ok(hres == S_OK, "Could not get IActiveScriptParse: %08lx\n", hres);
2606
2608 ok(hres == S_OK, "InitNew failed: %08lx\n", hres);
2609
2610 hres = IActiveScript_SetScriptSite(engine, &ActiveScriptSite);
2611 ok(hres == S_OK, "SetScriptSite failed: %08lx\n", hres);
2612
2613 hres = IActiveScript_AddNamedItem(engine, L"test",
2614 SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE|SCRIPTITEM_GLOBALMEMBERS);
2615 ok(hres == S_OK, "AddNamedItem failed: %08lx\n", hres);
2616
2617 hres = IActiveScript_SetScriptState(engine, SCRIPTSTATE_STARTED);
2618 ok(hres == S_OK, "SetScriptState(SCRIPTSTATE_STARTED) failed: %08lx\n", hres);
2619
2621 L"class C\n"
2622 " Public ref\n"
2623 " Public Sub Class_Terminate\n"
2624 " Call reportSuccess()\n"
2625 " End Sub\n"
2626 "End Class\n"
2627 "Dim x\n"
2628 "set x = new C\n"
2629 "set x.ref = x\n"
2630 "set x = nothing\n");
2631
2633 ok(hres == S_OK, "ParseScriptText failed: %08lx\n", hres);
2635
2636 SET_EXPECT(global_success_d);
2637 SET_EXPECT(global_success_i);
2638 hres = IActiveScript_Close(engine);
2639 ok(hres == S_OK, "Close failed: %08lx\n", hres);
2640 CHECK_CALLED(global_success_d);
2641 CHECK_CALLED(global_success_i);
2642
2643 IActiveScript_Release(engine);
2645}

Referenced by run_tests().

◆ test_global_vars_ref()

static HRESULT test_global_vars_ref ( BOOL  use_close)
static

Definition at line 2845 of file run.c.

2846{
2847 IActiveScriptParse *parser;
2848 IActiveScript *engine;
2849 BSTR script_str;
2850 LONG ref;
2851 HRESULT hres;
2852
2853 engine = create_script();
2854 if(!engine)
2855 return S_OK;
2856
2857 hres = IActiveScript_QueryInterface(engine, &IID_IActiveScriptParse, (void**)&parser);
2858 ok(hres == S_OK, "Could not get IActiveScriptParse: %08lx\n", hres);
2859 if (FAILED(hres))
2860 {
2861 IActiveScript_Release(engine);
2862 return hres;
2863 }
2864
2866 ok(hres == S_OK, "InitNew failed: %08lx\n", hres);
2867
2868 hres = IActiveScript_SetScriptSite(engine, &ActiveScriptSite);
2869 ok(hres == S_OK, "SetScriptSite failed: %08lx\n", hres);
2870
2871 hres = IActiveScript_AddNamedItem(engine, L"test", SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE|SCRIPTITEM_GLOBALMEMBERS);
2872 ok(hres == S_OK, "AddNamedItem failed: %08lx\n", hres);
2873
2874 hres = IActiveScript_SetScriptState(engine, SCRIPTSTATE_STARTED);
2875 ok(hres == S_OK, "SetScriptState(SCRIPTSTATE_STARTED) failed: %08lx\n", hres);
2876
2877 refobj_ref = 0;
2878
2879 script_str = SysAllocString(L"Dim x\nset x = RefObj\n");
2880 hres = IActiveScriptParse_ParseScriptText(parser, script_str, NULL, NULL, NULL, 0, 0, 0, NULL, NULL);
2881 SysFreeString(script_str);
2882
2883 ok(refobj_ref, "refobj_ref = 0\n");
2884
2885 if(use_close) {
2886 hres = IActiveScript_Close(engine);
2887 ok(hres == S_OK, "Close failed: %08lx\n", hres);
2888 }else {
2889 hres = IActiveScript_SetScriptState(engine, SCRIPTSTATE_UNINITIALIZED);
2890 ok(hres == S_OK, "SetScriptState(SCRIPTSTATE_STARTED) failed: %08lx\n", hres);
2891 }
2892
2893 ok(!refobj_ref, "refobj_ref = %ld\n", refobj_ref);
2894
2895 IActiveScript_Release(engine);
2896
2898 ok(!ref, "ref=%ld\n", ref);
2899 return hres;
2900}
@ SCRIPTSTATE_UNINITIALIZED
Definition: activscp.idl:57
long LONG
Definition: pedump.c:60

Referenced by run_tests().

◆ test_isexpression()

static void test_isexpression ( void  )
static

Definition at line 2902 of file run.c.

2903{
2904 IActiveScriptParse *parser;
2905 IActiveScript *engine;
2906 IDispatch *disp;
2908 HRESULT hres;
2909 VARIANT var;
2910 BSTR str;
2911
2912 if (!(engine = create_and_init_script(0, FALSE)))
2913 return;
2914
2915 hres = IActiveScript_QueryInterface(engine, &IID_IActiveScriptParse, (void**)&parser);
2916 ok(hres == S_OK, "Could not get IActiveScriptParse: %08lx\n", hres);
2917 if (FAILED(hres))
2918 {
2919 close_script(engine);
2920 return;
2921 }
2922
2923 /* Expression when script is not started is still executed */
2924 hres = IActiveScript_GetScriptState(engine, &ss);
2925 ok(hres == S_OK, "GetScriptState failed: %08lx\n", hres);
2926 ok(ss == SCRIPTSTATE_INITIALIZED, "Wrong script state %u\n", ss);
2927
2928 str = SysAllocString(L"13");
2929 hres = IActiveScriptParse_ParseScriptText(parser, str, NULL, NULL, NULL, 0, 0, SCRIPTTEXT_ISEXPRESSION, &var, NULL);
2930 ok(hres == S_OK, "ParseScriptText failed: %08lx\n", hres);
2931 ok(V_VT(&var) == VT_I2, "Expected VT_I2, got %s\n", vt2a(&var));
2932 ok(V_I2(&var) == 13, "Expected 13, got %d\n", V_I2(&var));
2933 VariantClear(&var);
2935
2936 hres = IActiveScript_SetScriptState(engine, SCRIPTSTATE_STARTED);
2937 ok(hres == S_OK, "SetScriptState(SCRIPTSTATE_STARTED) failed: %08lx\n", hres);
2938
2939 /* Empty expressions */
2940 V_VT(&var) = VT_I2;
2941 str = SysAllocString(L"");
2942 hres = IActiveScriptParse_ParseScriptText(parser, str, NULL, NULL, NULL, 0, 0, SCRIPTTEXT_ISEXPRESSION, &var, NULL);
2943 ok(hres == S_OK, "ParseScriptText failed: %08lx\n", hres);
2944 ok(V_VT(&var) == VT_EMPTY, "Expected VT_EMPTY, got %s\n", vt2a(&var));
2945 VariantClear(&var);
2947
2948 /* Two expressions fail */
2949 str = SysAllocString(L"1\n3");
2950 SET_EXPECT(OnScriptError);
2951 hres = IActiveScriptParse_ParseScriptText(parser, str, NULL, NULL, NULL, 0, 0, SCRIPTTEXT_ISEXPRESSION, &var, NULL);
2952 ok(FAILED(hres), "ParseScriptText did not fail: %08lx\n", hres);
2953 CHECK_CALLED(OnScriptError);
2954 VariantClear(&var);
2956
2957 /* Simple numerical expression */
2958 str = SysAllocString(L"(1 + 7) * 2 - 3");
2959 hres = IActiveScriptParse_ParseScriptText(parser, str, NULL, NULL, NULL, 0, 0, SCRIPTTEXT_ISEXPRESSION, NULL, NULL);
2960 ok(hres == S_OK, "ParseScriptText failed: %08lx\n", hres);
2961
2962 hres = IActiveScriptParse_ParseScriptText(parser, str, NULL, NULL, NULL, 0, 0, SCRIPTTEXT_ISEXPRESSION, &var, NULL);
2963 ok(hres == S_OK, "ParseScriptText failed: %08lx\n", hres);
2964 ok(V_VT(&var) == VT_I2, "Expected VT_I2, got %s\n", vt2a(&var));
2965 ok(V_I2(&var) == 13, "Expected 13, got %d\n", V_I2(&var));
2966 VariantClear(&var);
2968
2969 /* Without a global host or named item context, "me" returns the script dispatch */
2970 hres = IActiveScript_GetScriptDispatch(engine, NULL, &disp);
2971 ok(hres == S_OK, "GetScriptDispatch failed: %08lx\n", hres);
2972 str = SysAllocString(L"me");
2973 hres = IActiveScriptParse_ParseScriptText(parser, str, NULL, NULL, NULL, 0, 0, SCRIPTTEXT_ISEXPRESSION, &var, NULL);
2974 ok(hres == S_OK, "ParseScriptText failed: %08lx\n", hres);
2975 ok(V_VT(&var) == VT_DISPATCH, "Expected VT_DISPATCH, got %s\n", vt2a(&var));
2976 ok(V_DISPATCH(&var) == disp, "Wrong dispatch returned for 'me'\n");
2977 IDispatch_Release(disp);
2978 VariantClear(&var);
2980
2981 /* An expression can also refer to a variable, function, class, etc previously set */
2982 V_VT(&var) = VT_I2;
2983 str = SysAllocString(L"If True Then foo = 42 Else foo = 0\n");
2985 ok(hres == S_OK, "ParseScriptText failed: %08lx\n", hres);
2986 ok(V_VT(&var) == VT_EMPTY, "Expected VT_EMPTY, got %s\n", vt2a(&var));
2987 VariantClear(&var);
2989
2990 str = SysAllocString(L"foo\n\n");
2991 hres = IActiveScriptParse_ParseScriptText(parser, str, NULL, NULL, NULL, 0, 0, SCRIPTTEXT_ISEXPRESSION, &var, NULL);
2992 ok(hres == S_OK, "ParseScriptText failed: %08lx\n", hres);
2993 ok(V_VT(&var) == VT_I2, "Expected VT_I2, got %s\n", vt2a(&var));
2994 ok(V_I2(&var) == 42, "Expected 42, got %d\n", V_I2(&var));
2995 VariantClear(&var);
2997
2998 str = SysAllocString(L"foo : ");
2999 SET_EXPECT(OnScriptError);
3000 hres = IActiveScriptParse_ParseScriptText(parser, str, NULL, NULL, NULL, 0, 0, SCRIPTTEXT_ISEXPRESSION, &var, NULL);
3001 ok(FAILED(hres), "ParseScriptText did not fail: %08lx\n", hres);
3002 CHECK_CALLED(OnScriptError);
3003 VariantClear(&var);
3005
3006 str = SysAllocString(L"\"foo is \" & CStr(foo) \n \n\n ");
3007 hres = IActiveScriptParse_ParseScriptText(parser, str, NULL, NULL, NULL, 0, 0, SCRIPTTEXT_ISEXPRESSION, &var, NULL);
3008 ok(hres == S_OK, "ParseScriptText failed: %08lx\n", hres);
3009 ok(V_VT(&var) == VT_BSTR, "Expected VT_BSTR, got %s\n", vt2a(&var));
3010 ok(!lstrcmpW(V_BSTR(&var), L"foo is 42"), "Wrong string, got %s\n", wine_dbgstr_w(V_BSTR(&var)));
3011 VariantClear(&var);
3013
3014 str = SysAllocString(L"Function test(x)\n"
3015 " test = x + 0.5\n"
3016 "End Function\n");
3018 ok(hres == S_OK, "ParseScriptText failed: %08lx\n", hres);
3020
3021 str = SysAllocString(L"test(4) * 3\n");
3022 hres = IActiveScriptParse_ParseScriptText(parser, str, NULL, NULL, NULL, 0, 0, SCRIPTTEXT_ISEXPRESSION, &var, NULL);
3023 ok(hres == S_OK, "ParseScriptText failed: %08lx\n", hres);
3024 ok(V_VT(&var) == VT_R8, "Expected VT_R8, got %s\n", vt2a(&var));
3025 ok(V_R8(&var) == 13.5, "Expected %lf, got %lf\n", 13.5, V_R8(&var));
3026 VariantClear(&var);
3028
3029 str = SysAllocString(L"Class C\n"
3030 " Public x\n"
3031 "End Class\n"
3032 "Set obj = New C\n"
3033 "obj.x = True\n");
3035 ok(hres == S_OK, "ParseScriptText failed: %08lx\n", hres);
3037
3038 str = SysAllocString(L"obj.x");
3039 hres = IActiveScriptParse_ParseScriptText(parser, str, NULL, NULL, NULL, 0, 0, SCRIPTTEXT_ISEXPRESSION, &var, NULL);
3040 ok(hres == S_OK, "ParseScriptText failed: %08lx\n", hres);
3041 ok(V_VT(&var) == VT_BOOL, "Expected VT_BOOL, got %s\n", vt2a(&var));
3042 ok(V_BOOL(&var) == VARIANT_TRUE, "Expected %x, got %x\n", VARIANT_TRUE, V_BOOL(&var));
3043 VariantClear(&var);
3045
3047 close_script(engine);
3048}
@ SCRIPTSTATE_INITIALIZED
Definition: activscp.idl:62
enum tagSCRIPTSTATE SCRIPTSTATE
#define ss
Definition: i386-dis.c:441
const char * var
Definition: shader.c:5666
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
Definition: variant.c:648

Referenced by run_tests().

◆ test_msgbox()

static void test_msgbox ( void  )
static

Definition at line 2796 of file run.c.

2797{
2798 HRESULT hres;
2799
2801
2802 SET_EXPECT(GetUIBehavior);
2805 hres = parse_script_wr(L"MsgBox \"testing...\"");
2806 CLEAR_CALLED(GetUIBehavior);
2809 if(FAILED(hres)) {
2810 win_skip("Skipping MsgBox tests, broken (probably too old) vbscript\n");
2811 return;
2812 }
2813
2814 SET_EXPECT(GetUIBehavior);
2815 parse_script_w(L"dim r\n r=MsgBox(\"testing...\")\n Call ok(r=0, \"r=\"&r)");
2816 CHECK_CALLED(GetUIBehavior);
2817
2818 SET_EXPECT(GetUIBehavior);
2819 parse_script_w(L"MsgBox 10");
2820 CHECK_CALLED(GetUIBehavior);
2821
2823
2824 SET_EXPECT(GetUIBehavior);
2827 SET_EXPECT(OnScriptError);
2828 hres = parse_script_wr(L"MsgBox \"testing...\"");
2829 ok(FAILED(hres), "script not failed\n");
2830 CHECK_CALLED(GetUIBehavior);
2833 CHECK_CALLED(OnScriptError);
2834
2836
2837 SET_EXPECT(GetUIBehavior);
2838 SET_EXPECT(OnScriptError);
2839 hres = parse_script_wr(L"MsgBox \"testing...\"");
2840 ok(FAILED(hres), "script not failed\n");
2841 CHECK_CALLED(GetUIBehavior);
2842 CHECK_CALLED(OnScriptError);
2843}
@ SCRIPTUICHANDLING_NOUIERROR
Definition: activscp.idl:77
@ SCRIPTUICHANDLING_NOUIDEFAULT
Definition: activscp.idl:78
#define CLEAR_CALLED(func)
Definition: run.c:88

Referenced by run_tests().

◆ test_multiple_parse()

static void test_multiple_parse ( void  )
static

Definition at line 3050 of file run.c.

3051{
3052 IActiveScriptParse *parser;
3054 HRESULT hres;
3055
3056 script = create_and_init_script(SCRIPTITEM_GLOBALMEMBERS, TRUE);
3057
3058 hres = IActiveScript_QueryInterface(script, &IID_IActiveScriptParse, (void**)&parser);
3059 ok(hres == S_OK, "Could not get IActiveScriptParseProcedure2 iface: %08lx\n", hres);
3060
3062 L"function duplicatedfunc\n"
3063 L" ok false, \"duplicatedfunc called\"\n"
3064 L"end function\n",
3065 NULL, NULL, NULL, 0, 0, 0, NULL, NULL);
3066 ok(hres == S_OK, "ParseScriptText failed: %08lx\n", hres);
3067
3069 L"sub duplicatedfunc\n"
3070 L" ok false, \"duplicatedfunc called\"\n"
3071 L"end sub\n",
3072 NULL, NULL, NULL, 0, 0, 0, NULL, NULL);
3073 ok(hres == S_OK, "ParseScriptText failed: %08lx\n", hres);
3074
3076 L"function duplicatedfunc\n"
3077 L" duplicatedfunc = 2\n"
3078 L"end function\n",
3079 NULL, NULL, NULL, 0, 0, 0, NULL, NULL);
3080 ok(hres == S_OK, "ParseScriptText failed: %08lx\n", hres);
3081
3083 L"ok duplicatedfunc() = 2, \"duplicatedfunc = \" & duplicatedfunc()\n",
3084 NULL, NULL, NULL, 0, 0, 0, NULL, NULL);
3085 ok(hres == S_OK, "ParseScriptText failed: %08lx\n", hres);
3086
3089}

Referenced by run_tests().

◆ test_parse_context()

static void test_parse_context ( void  )
static

Definition at line 2147 of file run.c.

2148{
2149 IActiveScriptParse *parser;
2150 IActiveScript *engine;
2151 BSTR str;
2152 HRESULT hres;
2153
2154 global_ref = 1;
2155 engine = create_and_init_script(0, TRUE);
2156 if(!engine)
2157 return;
2158
2159 hres = IActiveScript_QueryInterface(engine, &IID_IActiveScriptParse, (void**)&parser);
2160 ok(hres == S_OK, "Could not get IActiveScriptParse: %08lx\n", hres);
2161
2162 /* NULL code text succeeds but does nothing */
2164 ok(hres == S_OK, "ParseScriptText failed: %08lx\n", hres);
2165
2166 /* unknown identifier context is not a valid argument */
2167 str = SysAllocString(L"Call reportSuccess()\n");
2169 ok(hres == E_INVALIDARG, "ParseScriptText failed: %08lx\n", hres);
2171
2172 str = SysAllocString(L"class Cl\n"
2173 " Public Sub ClMethod\n"
2174 " Call reportSuccess()\n"
2175 " End Sub\n"
2176 "End Class\n"
2177 "Dim x\n"
2178 "set x = new Cl\n");
2180 ok(hres == S_OK, "ParseScriptText failed: %08lx\n", hres);
2182
2183 /* known global variable is not a valid context */
2184 str = SysAllocString(L"Call reportSuccess()\n");
2186 ok(hres == E_INVALIDARG, "ParseScriptText failed: %08lx\n", hres);
2188
2189 SET_EXPECT(global_success_d);
2190 SET_EXPECT(global_success_i);
2191 str = SysAllocString(L"Call reportSuccess()\n");
2193 ok(hres == S_OK, "ParseScriptText failed: %08lx\n", hres);
2195 CHECK_CALLED(global_success_d);
2196 CHECK_CALLED(global_success_i);
2197
2199 close_script(engine);
2200 ok(global_ref == 1, "global_ref = %lu\n", global_ref);
2201}

Referenced by run_tests().

◆ test_parse_errors()

static void test_parse_errors ( void  )
static

Definition at line 2647 of file run.c.

2648{
2649 static const struct
2650 {
2651 const WCHAR *src;
2652 unsigned error_line;
2653 int error_char;
2654 }
2655 invalid_scripts[] =
2656 {
2657 {
2658 /* If...End If */
2659 L"If 0 > 1 Then\n"
2660 " x = 0 End If\n",
2661 1, 10
2662 },
2663 {
2664 /* While...End While */
2665 L"While False\n"
2666 " x = 0 End While\n",
2667 1, 10
2668 },
2669 {
2670 /* While...Wend */
2671 L"While False\n"
2672 " x = 0 Wend\n",
2673 1, 10
2674 },
2675 {
2676 /* Do While...Loop */
2677 L"Do While False\n"
2678 " x = 0 Loop\n",
2679 1, 10
2680 },
2681 {
2682 /* Do Until...Loop */
2683 L"Do Until True\n"
2684 " x = 0 Loop\n",
2685 1, 10
2686 },
2687 {
2688 /* Do...Loop While */
2689 L"Do\n"
2690 " x = 0 Loop While False\n",
2691 1, 10
2692 },
2693 {
2694 /* Do...Loop Until */
2695 L"Do\n"
2696 " x = 0 Loop Until True\n",
2697 1, 10
2698 },
2699 {
2700 /* Select...End Select */
2701 L"x = False\n"
2702 "Select Case 42\n"
2703 " Case 0\n"
2704 " Call ok(False, \"unexpected case\")\n"
2705 " Case 42\n"
2706 " x = True End Select\n"
2707 "Call ok(x, \"wrong case\")\n",
2708 5, 17
2709 },
2710 {
2711 /* Class...End Class (empty) */
2712 L"Class C End Class",
2713 0, 8
2714 },
2715 {
2716 /* Class...End Class (empty) */
2717 L"Class C _\nEnd Class",
2718 1, 0
2719 },
2720 {
2721 /* invalid use of parentheses for call statement */
2722 L"strcomp(\"x\", \"y\")",
2723 0, -17
2724 },
2725 {
2726 L"\n\n\n cint _\n throwInt(&h80001234&)",
2727 3, 2
2728 },
2729 {
2730 L"dim x\n"
2731 "if true then throwInt(&h80001234&)",
2732 1, 13
2733 },
2734 {
2735 L"dim x\n"
2736 "if x = throwInt(&h80001234&) then x = 1",
2737 1, 0
2738 },
2739 {
2740 L"sub test\n"
2741 " dim x\n"
2742 " if x = throwInt(&h80001234&) then x = 1\n"
2743 "end sub\n"
2744 "test\n",
2745 2, 4
2746 },
2747 {
2748 L"dim x\n"
2749 "do\n"
2750 " x = 1\n"
2751 "loop until throwInt(&h80001234&)\n",
2752 3, 0
2753 },
2754 {
2755 L"\n select case 3\n"
2756 " case 2\n"
2757 " ok false, \"unexpected case\"\n"
2758 " case throwInt(&h80001234&)\n"
2759 " throwInt &h87001234&\n"
2760 "end select\n",
2761 1, 2
2762 },
2763 {
2764 L"if false then\n"
2765 " ok false, \"unexpected case\"\n"
2766 " elseif throwInt(&h80001234&) then\n"
2767 " throwInt &h87001234&\n"
2768 "else\n"
2769 " throwInt &h87001234&\n"
2770 "end if\n",
2771 2, 1
2772 }
2773 };
2774 HRESULT hres;
2775 UINT i;
2776
2777 for (i = 0; i < ARRAY_SIZE(invalid_scripts); i++)
2778 {
2779 error_line = ~0;
2780 error_char = -1;
2782
2783 SET_EXPECT(OnScriptError);
2784 hres = parse_script_wr(invalid_scripts[i].src);
2785 ok(hres == SCRIPT_E_REPORTED, "[%u] script returned: %08lx\n", i, hres);
2786 CHECK_CALLED(OnScriptError);
2787
2788 ok(error_line == invalid_scripts[i].error_line, "[%u] error line %lu expected %u\n",
2789 i, error_line, invalid_scripts[i].error_line);
2790 todo_wine_if(invalid_scripts[i].error_char < 0)
2791 ok(error_char == abs(invalid_scripts[i].error_char), "[%u] error char %ld expected %d\n",
2792 i, error_char, invalid_scripts[i].error_char);
2793 }
2794}
#define abs(i)
Definition: fconv.c:206
GLdouble n
Definition: glext.h:7729
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
Definition: glfuncs.h:240
#define error(str)
Definition: mkdosfs.c:1605
BOOL expected
Definition: store.c:2000

Referenced by run_tests().

◆ test_procedures()

static void test_procedures ( void  )
static

Definition at line 2242 of file run.c.

2243{
2244 IActiveScriptParseProcedure2 *parse_proc;
2245 DISPPARAMS dp = {NULL};
2248 IDispatch *disp;
2249 EXCEPINFO ei = {0};
2250 VARIANT v;
2251 HRESULT hres;
2252
2255
2256 hres = IActiveScript_QueryInterface(script, &IID_IActiveScriptParseProcedure2, (void**)&parse_proc);
2257 ok(hres == S_OK, "Could not get IActiveScriptParseProcedure2 iface: %08lx\n", hres);
2258
2259 hres = IActiveScriptParseProcedure2_ParseProcedureText(parse_proc, NULL, NULL, L"", NULL, NULL, NULL, 0, 0, 0, &disp);
2260 ok(hres == S_OK, "ParseProcedureText failed: %08lx\n", hres);
2261 IDispatch_Release(disp);
2262
2263 proc = parse_procedure(parse_proc, L"dim x\nif true then x=false", 0);
2264
2265 SET_EXPECT(OnEnterScript);
2266 SET_EXPECT(OnLeaveScript);
2267 V_VT(&v) = VT_EMPTY;
2268 hres = IDispatchEx_InvokeEx(proc, DISPID_VALUE, 0, DISPATCH_METHOD, &dp, &v, &ei, &caller_sp);
2269 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
2270 CHECK_CALLED(OnEnterScript);
2271 CHECK_CALLED(OnLeaveScript);
2272 VariantClear(&v);
2273 IDispatchEx_Release(proc);
2274
2275 proc = parse_procedure(parse_proc, L"\"foobar\"", SCRIPTPROC_ISEXPRESSION);
2276
2277 SET_EXPECT(OnEnterScript);
2278 SET_EXPECT(OnLeaveScript);
2279 hres = IDispatchEx_InvokeEx(proc, DISPID_VALUE, 0, DISPATCH_METHOD, &dp, &v, &ei, &caller_sp);
2280 ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres);
2281 CHECK_CALLED(OnEnterScript);
2282 CHECK_CALLED(OnLeaveScript);
2283 ok(V_VT(&v) == VT_BSTR, "Expected VT_BSTR, got %s\n", vt2a(&v));
2284 ok(!lstrcmpW(V_BSTR(&v), L"foobar"), "Wrong string, got %s\n", wine_dbgstr_w(V_BSTR(&v)));
2285 VariantClear(&v);
2286 IDispatchEx_Release(proc);
2287
2289
2292}
#define IActiveScriptParseProcedure2_Release
Definition: run.c:45
static IDispatchEx * parse_procedure(IActiveScriptParseProcedure2 *parse_proc, const WCHAR *src, DWORD flags)
Definition: run.c:2220
static HANDLE proc()
Definition: pdb.c:32

Referenced by run_tests().

◆ test_safearray()

static void test_safearray ( SAFEARRAY safearray,
unsigned  indims 
)
static

Definition at line 581 of file run.c.

582{
583 int i, exdims = indims;
584
585 if(!exdims)
586 exdims = 1;
587 ok(safearray->cDims == exdims, "safearray->cDims = %d, expected %d\n", safearray->cDims, exdims);
588 ok(safearray->fFeatures == (FADF_VARIANT|FADF_HAVEVARTYPE|FADF_FIXEDSIZE|FADF_STATIC),
589 "safearray->fFeatures = %x\n", safearray->fFeatures);
590 ok(safearray->cbElements == sizeof(VARIANT), "safearray->cbElements = %lx\n", safearray->cbElements);
591 ok(!safearray->cLocks, "safearray->cLocks = %lx\n", safearray->cLocks);
592
593 for(i=0; i < safearray->cDims; i++) {
594 ok(safearray->rgsabound[i].cElements == (indims ? i+4 : 1), "safearray->rgsabound[%d].cElements = %ld\n", i,
595 safearray->rgsabound[i].cElements);
596 ok(!safearray->rgsabound[i].lLbound, "safearray->rgsabound[%d].lLbound = %ld\n", i, safearray->rgsabound[i].lLbound);
597 }
598}
USHORT fFeatures
Definition: compat.h:2356
SAFEARRAYBOUND rgsabound[1]
Definition: compat.h:2360
ULONG cLocks
Definition: compat.h:2358
USHORT cDims
Definition: compat.h:2355
ULONG cbElements
Definition: compat.h:2357

◆ testObj_GetDispID()

static HRESULT WINAPI testObj_GetDispID ( IDispatchEx iface,
BSTR  bstrName,
DWORD  grfdex,
DISPID pid 
)
static

Definition at line 848 of file run.c.

849{
850 static const dispid_t dispids[] = {
851 { L"propget", DISPID_TESTOBJ_PROPGET, REF_EXPECT(testobj_propget_d) },
852 { L"propput", DISPID_TESTOBJ_PROPPUT, REF_EXPECT(testobj_propput_d) },
853 { L"rem", DISPID_TESTOBJ_KEYWORD },
854 { L"true", DISPID_TESTOBJ_KEYWORD },
855 { L"false", DISPID_TESTOBJ_KEYWORD },
856 { L"not", DISPID_TESTOBJ_KEYWORD },
857 { L"and", DISPID_TESTOBJ_KEYWORD },
858 { L"or", DISPID_TESTOBJ_KEYWORD },
859 { L"xor", DISPID_TESTOBJ_KEYWORD },
860 { L"eqv", DISPID_TESTOBJ_KEYWORD },
861 { L"imp", DISPID_TESTOBJ_KEYWORD },
862 { L"is", DISPID_TESTOBJ_KEYWORD },
863 { L"mod", DISPID_TESTOBJ_KEYWORD },
864 { L"call", DISPID_TESTOBJ_KEYWORD },
865 { L"dim", DISPID_TESTOBJ_KEYWORD },
866 { L"sub", DISPID_TESTOBJ_KEYWORD },
867 { L"function", DISPID_TESTOBJ_KEYWORD },
868 { L"get", DISPID_TESTOBJ_KEYWORD },
869 { L"let", DISPID_TESTOBJ_KEYWORD },
870 { L"const", DISPID_TESTOBJ_KEYWORD },
871 { L"if", DISPID_TESTOBJ_KEYWORD },
872 { L"else", DISPID_TESTOBJ_KEYWORD },
873 { L"elseif", DISPID_TESTOBJ_KEYWORD },
874 { L"end", DISPID_TESTOBJ_KEYWORD },
875 { L"then", DISPID_TESTOBJ_KEYWORD },
876 { L"exit", DISPID_TESTOBJ_KEYWORD },
877 { L"while", DISPID_TESTOBJ_KEYWORD },
878 { L"wend", DISPID_TESTOBJ_KEYWORD },
879 { L"do", DISPID_TESTOBJ_KEYWORD },
880 { L"loop", DISPID_TESTOBJ_KEYWORD },
881 { L"until", DISPID_TESTOBJ_KEYWORD },
882 { L"for", DISPID_TESTOBJ_KEYWORD },
883 { L"to", DISPID_TESTOBJ_KEYWORD },
884 { L"each", DISPID_TESTOBJ_KEYWORD },
885 { L"in", DISPID_TESTOBJ_KEYWORD },
886 { L"select", DISPID_TESTOBJ_KEYWORD },
887 { L"case", DISPID_TESTOBJ_KEYWORD },
888 { L"byref", DISPID_TESTOBJ_KEYWORD },
889 { L"byval", DISPID_TESTOBJ_KEYWORD },
890 { L"option", DISPID_TESTOBJ_KEYWORD },
891 { L"nothing", DISPID_TESTOBJ_KEYWORD },
892 { L"empty", DISPID_TESTOBJ_KEYWORD },
893 { L"null", DISPID_TESTOBJ_KEYWORD },
894 { L"class", DISPID_TESTOBJ_KEYWORD },
895 { L"set", DISPID_TESTOBJ_KEYWORD },
896 { L"new", DISPID_TESTOBJ_KEYWORD },
897 { L"public", DISPID_TESTOBJ_KEYWORD },
898 { L"private", DISPID_TESTOBJ_KEYWORD },
899 { L"next", DISPID_TESTOBJ_KEYWORD },
900 { L"on", DISPID_TESTOBJ_KEYWORD },
901 { L"resume", DISPID_TESTOBJ_KEYWORD },
902 { L"goto", DISPID_TESTOBJ_KEYWORD },
903 { L"redim", DISPID_TESTOBJ_KEYWORD },
904 { L"preserve", DISPID_TESTOBJ_KEYWORD },
905 { L"with", DISPID_TESTOBJ_KEYWORD },
906 { L"property", DISPID_TESTOBJ_KEYWORD },
907 { L"me", DISPID_TESTOBJ_KEYWORD },
908 { L"stop", DISPID_TESTOBJ_KEYWORD }
909 };
910
911 test_grfdex(grfdex, fdexNameCaseInsensitive);
912 if(get_dispid(bstrName, dispids, ARRAY_SIZE(dispids), pid))
913 return S_OK;
914 ok(0, "unexpected call %s\n", wine_dbgstr_w(bstrName));
915 return DISP_E_UNKNOWNNAME;
916}
#define DISPID_TESTOBJ_PROPPUT
Definition: run.c:153
#define DISPID_TESTOBJ_KEYWORD
Definition: run.c:154
#define DISPID_TESTOBJ_PROPGET
Definition: run.c:152

◆ testObj_InvokeEx()

static HRESULT WINAPI testObj_InvokeEx ( IDispatchEx iface,
DISPID  id,
LCID  lcid,
WORD  wFlags,
DISPPARAMS *  pdp,
VARIANT pvarRes,
EXCEPINFO *  pei,
IServiceProvider pspCaller 
)
static

Definition at line 918 of file run.c.

920{
921 switch(id) {
922 case DISPID_VALUE:
924 VARIANT *arg;
925 int i;
926
927 CHECK_EXPECT(testobj_value_i);
928
929 ok(pdp != NULL, "pdp == NULL\n");
930 ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
931 ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs);
932 ok(pvarRes != NULL, "pvarRes == NULL\n");
933 ok(pei != NULL, "pei == NULL\n");
934
935 for(i=0; i<pdp->cArgs; i++) {
936 arg = pdp->rgvarg+pdp->cArgs-i-1;
937 ok(V_VT(arg) == VT_I2, "V_VT(arg) = %d\n", V_VT(arg));
938 ok(V_I2(arg) == i+1, "V_I2(arg) = %d\n", V_I2(arg));
939 }
940
941 V_VT(pvarRes) = VT_I2;
942 V_I2(pvarRes) = pdp->cArgs;
943 return S_OK;
944 }
946 CHECK_EXPECT(testobj_valueput_i);
947
948 ok(pdp->cArgs == 3, "cArgs = %d\n", pdp->cArgs);
949 ok(pdp->cNamedArgs == 1, "cNamedArgs = %d\n", pdp->cNamedArgs);
950 ok(pdp->rgdispidNamedArgs[0] == DISPID_PROPERTYPUT, "pdp->rgdispidNamedArgs[0] = %ld\n", pdp->rgdispidNamedArgs[0]);
951 ok(!pvarRes, "pvarRes != NULL\n");
952 ok(pei != NULL, "pei == NULL\n");
953
954 ok(V_VT(pdp->rgvarg) == VT_I2, "V_VT(args[0]) = %d\n", V_VT(pdp->rgvarg));
955 ok(V_I2(pdp->rgvarg) == 0, "V_I2(args[0]) = %d\n", V_I2(pdp->rgvarg));
956 ok(V_VT(pdp->rgvarg+1) == VT_I2, "V_VT(args[1]) = %d\n", V_VT(pdp->rgvarg+1));
957 ok(V_I2(pdp->rgvarg+1) == 2, "V_I2(args[1]) = %d\n", V_I2(pdp->rgvarg+1));
958 ok(V_VT(pdp->rgvarg+2) == VT_I2, "V_VT(args[2]) = %d\n", V_VT(pdp->rgvarg+2));
959 ok(V_I2(pdp->rgvarg+2) == 1, "V_I2(args[2]) = %d\n", V_I2(pdp->rgvarg+2));
960
961 return S_OK;
962 }
963 ok(0, "wFlags = %x\n", wFlags);
964 break;
966 CHECK_EXPECT(testobj_propget_i);
967
968 ok(wFlags == (DISPATCH_PROPERTYGET|DISPATCH_METHOD), "wFlags = %x\n", wFlags);
969 ok(pdp != NULL, "pdp == NULL\n");
970 ok(!pdp->rgvarg, "rgvarg == NULL\n");
971 ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
972 ok(!pdp->cArgs, "cArgs = %d\n", pdp->cArgs);
973 ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs);
974 ok(pvarRes != NULL, "pvarRes == NULL\n");
975 ok(pei != NULL, "pei == NULL\n");
976
977 V_VT(pvarRes) = VT_I2;
978 V_I2(pvarRes) = 10;
979 return S_OK;
981 CHECK_EXPECT(testobj_propput_i);
982
983 ok(wFlags == DISPATCH_PROPERTYPUT, "wFlags = %x\n", wFlags);
984 ok(pdp != NULL, "pdp == NULL\n");
985 ok(pdp->rgvarg != NULL, "rgvarg == NULL\n");
986 ok(pdp->rgdispidNamedArgs != NULL, "rgdispidNamedArgs == NULL\n");
987 ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs);
988 ok(pdp->cNamedArgs == 1, "cNamedArgs = %d\n", pdp->cNamedArgs);
989 ok(pdp->rgdispidNamedArgs[0] == DISPID_PROPERTYPUT, "pdp->rgdispidNamedArgs[0] = %ld\n", pdp->rgdispidNamedArgs[0]);
990 ok(!pvarRes, "pvarRes != NULL\n");
991 ok(pei != NULL, "pei == NULL\n");
992
993 ok(V_VT(pdp->rgvarg) == VT_I2, "V_VT(psp->rgvargs) = %d\n", V_VT(pdp->rgvarg));
994 ok(V_I2(pdp->rgvarg) == 1, "V_I2(psp->rgvargs) = %d\n", V_I2(pdp->rgvarg));
995 return S_OK;
996
998 V_VT(pvarRes) = VT_I2;
999 V_I2(pvarRes) = 10;
1000 return S_OK;
1001 }
1002
1003 ok(0, "unexpected call %ld\n", id);
1004 return E_FAIL;
1005}
void * arg
Definition: msvc.h:10

◆ unkObj_AddRef()

static ULONG WINAPI unkObj_AddRef ( IUnknown iface)
static

Definition at line 619 of file run.c.

620{
621 return 2;
622}

◆ unkObj_QueryInterface()

static HRESULT WINAPI unkObj_QueryInterface ( IUnknown iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 608 of file run.c.

609{
611 *ppv = iface;
612 return S_OK;
613 }
614
615 *ppv = NULL;
616 return E_NOINTERFACE;
617}

◆ unkObj_Release()

static ULONG WINAPI unkObj_Release ( IUnknown iface)
static

Definition at line 624 of file run.c.

625{
626 return 1;
627}

◆ vt2a()

static const char * vt2a ( VARIANT v)
static

Definition at line 183 of file run.c.

184{
185 if(V_VT(v) == (VT_BYREF|VT_VARIANT)) {
186 static char buf[64];
187 sprintf(buf, "%s*", vt2a(V_BYREF(v)));
188 return buf;
189 }
190
191 switch(V_VT(v)) {
192 case VT_EMPTY:
193 return "VT_EMPTY";
194 case VT_NULL:
195 return "VT_NULL";
196 case VT_I2:
197 return "VT_I2";
198 case VT_I4:
199 return "VT_I4";
200 case VT_R4:
201 return "VT_R4";
202 case VT_R8:
203 return "VT_R8";
204 case VT_CY:
205 return "VT_CY";
206 case VT_DATE:
207 return "VT_DATE";
208 case VT_BSTR:
209 return "VT_BSTR";
210 case VT_DISPATCH:
211 return "VT_DISPATCH";
212 case VT_UNKNOWN:
213 return "VT_UNKNOWN";
214 case VT_BOOL:
215 return "VT_BOOL";
216 case VT_ARRAY|VT_VARIANT:
217 return "VT_ARRAY|VT_VARIANT";
219 return "VT_ARRAY|VT_BYREF|VT_VARIANT";
220 case VT_UI1:
221 return "VT_UI1";
222 default:
223 ok(0, "unknown vt %d\n", V_VT(v));
224 return NULL;
225 }
226}
@ VT_R4
Definition: compat.h:2299
@ VT_NULL
Definition: compat.h:2296
@ VT_CY
Definition: compat.h:2301
@ VT_DATE
Definition: compat.h:2302
@ VT_UI1
Definition: compat.h:2311
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
#define sprintf
Definition: sprintf.c:45

Referenced by Global_InvokeEx(), test_isexpression(), test_procedures(), and vt2a().

Variable Documentation

◆ ActiveScriptSite

IActiveScriptSite ActiveScriptSite = { &ActiveScriptSiteVtbl }
static

Definition at line 2030 of file run.c.

◆ ActiveScriptSiteUIControl

IActiveScriptSiteUIControl ActiveScriptSiteUIControl = { &ActiveScriptSiteUIControlVtbl }
static

Definition at line 1899 of file run.c.

Referenced by ActiveScriptSite_QueryInterface().

◆ ActiveScriptSiteUIControlVtbl

const IActiveScriptSiteUIControlVtbl ActiveScriptSiteUIControlVtbl
static
Initial value:
= {
}
static ULONG WINAPI ActiveScriptSiteUIControl_Release(IActiveScriptSiteUIControl *iface)
Definition: run.c:1876
static ULONG WINAPI ActiveScriptSiteUIControl_AddRef(IActiveScriptSiteUIControl *iface)
Definition: run.c:1871
static HRESULT WINAPI ActiveScriptSiteUIControl_GetUIBehavior(IActiveScriptSiteUIControl *iface, SCRIPTUICITEM UicItem, SCRIPTUICHANDLING *pUicHandling)
Definition: run.c:1881
static HRESULT WINAPI ActiveScriptSiteUIControl_QueryInterface(IActiveScriptSiteUIControl *iface, REFIID riid, void **ppv)
Definition: run.c:1865

Definition at line 1892 of file run.c.

◆ ActiveScriptSiteVtbl

const IActiveScriptSiteVtbl ActiveScriptSiteVtbl
static
Initial value:
= {
}
static ULONG WINAPI ActiveScriptSite_Release(IActiveScriptSite *iface)
Definition: run.c:2039
static HRESULT WINAPI ActiveScriptSite_OnLeaveScript(IActiveScriptSite *iface)
Definition: run.c:2091
static HRESULT WINAPI ActiveScriptSite_OnStateChange(IActiveScriptSite *iface, SCRIPTSTATE ssScriptState)
Definition: run.c:2076
static HRESULT WINAPI ActiveScriptSite_GetDocVersionString(IActiveScriptSite *iface, BSTR *pbstrVersion)
Definition: run.c:2065
static HRESULT WINAPI ActiveScriptSite_GetItemInfo(IActiveScriptSite *iface, LPCOLESTR pstrName, DWORD dwReturnMask, IUnknown **ppiunkItem, ITypeInfo **ppti)
Definition: run.c:2050
static HRESULT WINAPI ActiveScriptSite_QueryInterface(IActiveScriptSite *iface, REFIID riid, void **ppv)
Definition: run.c:2019
static HRESULT WINAPI ActiveScriptSite_OnEnterScript(IActiveScriptSite *iface)
Definition: run.c:2086
static ULONG WINAPI ActiveScriptSite_AddRef(IActiveScriptSite *iface)
Definition: run.c:2034
static HRESULT WINAPI ActiveScriptSite_OnScriptTerminate(IActiveScriptSite *iface, const VARIANT *pvarResult, const EXCEPINFO *pexcepinfo)
Definition: run.c:2070
static HRESULT WINAPI ActiveScriptSite_GetLCID(IActiveScriptSite *iface, LCID *plcid)
Definition: run.c:2044
static HRESULT WINAPI ActiveScriptSite_OnScriptError(IActiveScriptSite *iface, IActiveScriptError *pscripterror)
Definition: run.c:2081

Definition at line 2016 of file run.c.

◆ ActiveScriptSiteWindow

IActiveScriptSiteWindow ActiveScriptSiteWindow = { &ActiveScriptSiteWindowVtbl }
static

Definition at line 1863 of file run.c.

Referenced by ActiveScriptSite_QueryInterface().

◆ ActiveScriptSiteWindowVtbl

const IActiveScriptSiteWindowVtbl ActiveScriptSiteWindowVtbl
static
Initial value:
= {
}
static ULONG WINAPI ActiveScriptSiteWindow_Release(IActiveScriptSiteWindow *iface)
Definition: run.c:1832
static HRESULT WINAPI ActiveScriptSiteWindow_GetWindow(IActiveScriptSiteWindow *iface, HWND *phwnd)
Definition: run.c:1837
static HRESULT WINAPI ActiveScriptSiteWindow_EnableModeless(IActiveScriptSiteWindow *iface, BOOL fEnable)
Definition: run.c:1845
static HRESULT WINAPI ActiveScriptSiteWindow_QueryInterface(IActiveScriptSiteWindow *iface, REFIID riid, void **ppv)
Definition: run.c:1821
static ULONG WINAPI ActiveScriptSiteWindow_AddRef(IActiveScriptSiteWindow *iface)
Definition: run.c:1827

Definition at line 1855 of file run.c.

◆ allow_ui

◆ caller_sp

IServiceProvider caller_sp = { &ServiceProviderVtbl }
static

Definition at line 290 of file run.c.

Referenced by test_callbacks(), and test_procedures().

◆ CLSID_VBScript

const CLSID CLSID_VBScript
extern

Referenced by create_script().

◆ CLSID_VBScriptRegExp

const CLSID CLSID_VBScriptRegExp
extern

◆ collectionObj

IDispatchEx collectionObj = { &collectionObjVtbl }
static

Definition at line 1110 of file run.c.

Referenced by Global_InvokeEx().

◆ collectionObjVtbl

IDispatchExVtbl collectionObjVtbl
static
Initial value:
= {
}
static HRESULT WINAPI DispatchEx_GetMemberProperties(IDispatchEx *iface, DISPID id, DWORD grfdexFetch, DWORD *pgrfdex)
Definition: run.c:455
static ULONG WINAPI DispatchEx_Release(IDispatchEx *iface)
Definition: run.c:397
static HRESULT WINAPI DispatchEx_GetIDsOfNames(IDispatchEx *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
Definition: run.c:414
static HRESULT WINAPI DispatchEx_DeleteMemberByDispID(IDispatchEx *iface, DISPID id)
Definition: run.c:449
static HRESULT WINAPI DispatchEx_GetNameSpaceParent(IDispatchEx *iface, IUnknown **ppunk)
Definition: run.c:473
static HRESULT WINAPI DispatchEx_Invoke(IDispatchEx *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
Definition: run.c:422
static HRESULT WINAPI DispatchEx_GetMemberName(IDispatchEx *iface, DISPID id, BSTR *pbstrName)
Definition: run.c:461
static HRESULT WINAPI DispatchEx_GetNextDispID(IDispatchEx *iface, DWORD grfdex, DISPID id, DISPID *pid)
Definition: run.c:467
static HRESULT WINAPI DispatchEx_QueryInterface(IDispatchEx *iface, REFIID riid, void **ppv)
Definition: run.c:377
static ULONG WINAPI DispatchEx_AddRef(IDispatchEx *iface)
Definition: run.c:392
static HRESULT WINAPI DispatchEx_GetTypeInfo(IDispatchEx *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
Definition: run.c:408
static HRESULT WINAPI DispatchEx_DeleteMemberByName(IDispatchEx *iface, BSTR bstrName, DWORD grfdex)
Definition: run.c:443
static HRESULT WINAPI DispatchEx_GetTypeInfoCount(IDispatchEx *iface, UINT *pctinfo)
Definition: run.c:402
static HRESULT WINAPI collectionObj_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid)
Definition: run.c:1052
static HRESULT WINAPI collectionObj_InvokeEx(IDispatchEx *iface, DISPID id, LCID lcid, WORD wFlags, DISPPARAMS *pdp, VARIANT *pvarRes, EXCEPINFO *pei, IServiceProvider *pspCaller)
Definition: run.c:1063

Definition at line 1092 of file run.c.

◆ enumDisp

static IDispatchEx enumDisp = { &enumDispVtbl }
static

Definition at line 606 of file run.c.

Referenced by EnumVARIANT_QueryInterface().

◆ enumDispVtbl

IDispatchExVtbl enumDispVtbl
static
Initial value:
= {
}
static HRESULT WINAPI DispatchEx_InvokeEx(IDispatchEx *iface, DISPID id, LCID lcid, WORD wFlags, DISPPARAMS *pdp, VARIANT *res, EXCEPINFO *pei, IServiceProvider *pspCaller)
Definition: run.c:436
static HRESULT WINAPI DispatchEx_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid)
Definition: run.c:430
static HRESULT WINAPI enumDisp_QueryInterface(IDispatchEx *iface, REFIID riid, void **ppv)
Definition: run.c:1027

Definition at line 1032 of file run.c.

◆ enumObj

IEnumVARIANT enumObj = { &EnumVARIANTVtbl }
static

Definition at line 711 of file run.c.

Referenced by collectionObj_InvokeEx(), and enumDisp_QueryInterface().

◆ EnumVARIANTVtbl

const IEnumVARIANTVtbl EnumVARIANTVtbl
static
Initial value:
= {
}
static HRESULT WINAPI EnumVARIANT_Skip(IEnumVARIANT *This, ULONG celt)
Definition: run.c:304
static ULONG WINAPI EnumVARIANT_Release(IEnumVARIANT *iface)
Definition: run.c:261
static HRESULT WINAPI EnumVARIANT_Clone(IEnumVARIANT *This, IEnumVARIANT **ppEnum)
Definition: run.c:319
static HRESULT WINAPI EnumVARIANT_QueryInterface(IEnumVARIANT *iface, REFIID riid, void **ppv)
Definition: run.c:244
static HRESULT WINAPI EnumVARIANT_Reset(IEnumVARIANT *This)
Definition: run.c:311
static HRESULT WINAPI EnumVARIANT_Next(IEnumVARIANT *This, ULONG celt, VARIANT *rgVar, ULONG *pCeltFetched)
Definition: run.c:268
static ULONG WINAPI EnumVARIANT_AddRef(IEnumVARIANT *iface)
Definition: run.c:256

Definition at line 701 of file run.c.

◆ error_char

LONG error_char
static

Definition at line 1968 of file run.c.

Referenced by ActiveScriptSite_OnScriptError(), and test_parse_errors().

◆ error_line

ULONG error_line
static

◆ first_day_of_week

int first_day_of_week
static

Definition at line 163 of file run.c.

Referenced by detect_locale(), and Global_InvokeEx().

◆ Global

IDispatchEx Global = { &GlobalVtbl }
static

Definition at line 1819 of file run.c.

◆ global_ref

ULONG global_ref
static

Definition at line 1144 of file run.c.

Referenced by Global_AddRef(), Global_Release(), and test_parse_context().

◆ GlobalVtbl

IDispatchExVtbl GlobalVtbl
static
Initial value:
= {
}
static HRESULT WINAPI Global_InvokeEx(IDispatchEx *iface, DISPID id, LCID lcid, WORD wFlags, DISPPARAMS *pdp, VARIANT *pvarRes, EXCEPINFO *pei, IServiceProvider *pspCaller)
Definition: run.c:1232
static HRESULT WINAPI Global_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid)
Definition: run.c:987
static ULONG WINAPI Global_Release(IDispatchEx *iface)
Definition: run.c:1151
static ULONG WINAPI Global_AddRef(IDispatchEx *iface)
Definition: run.c:1146

Definition at line 1801 of file run.c.

◆ is_english

BOOL is_english
static

Definition at line 161 of file run.c.

Referenced by detect_locale(), Global_InvokeEx(), START_TEST(), test_callbacks(), and tt_face_get_name().

◆ MaxCharSize

UINT MaxCharSize
static

Definition at line 162 of file run.c.

Referenced by detect_locale(), and Global_InvokeEx().

◆ next_cnt

unsigned next_cnt
static

Definition at line 663 of file run.c.

Referenced by collectionObj_InvokeEx(), EnumVARIANT_Next(), and run_tests().

◆ onerror_hres

HRESULT onerror_hres = E_NOTIMPL
static

Definition at line 168 of file run.c.

Referenced by ActiveScriptSite_OnScriptError(), run_tests(), and test_parse_errors().

◆ RefObj

IDispatchEx RefObj = { &RefObjVtbl }
static

Definition at line 1142 of file run.c.

Referenced by Global_InvokeEx().

◆ refobj_ref

ULONG refobj_ref
static

Definition at line 1112 of file run.c.

Referenced by RefObj_AddRef(), RefObj_Release(), and test_global_vars_ref().

◆ RefObjVtbl

◆ ServiceProviderVtbl

const IServiceProviderVtbl ServiceProviderVtbl
static
Initial value:
= {
}
static HRESULT WINAPI ServiceProvider_QueryService(IServiceProvider *iface, REFGUID guidService, REFIID riid, void **ppv)
Definition: run.c:276
static ULONG WINAPI ServiceProvider_Release(IServiceProvider *iface)
Definition: run.c:271
static HRESULT WINAPI ServiceProvider_QueryInterface(IServiceProvider *iface, REFIID riid, void **ppv)
Definition: run.c:260
static ULONG WINAPI ServiceProvider_AddRef(IServiceProvider *iface)
Definition: run.c:266

Definition at line 283 of file run.c.

◆ store_script_error

IActiveScriptError** store_script_error
static

Definition at line 1966 of file run.c.

Referenced by ActiveScriptSite_OnScriptError(), and test_callbacks().

◆ strict_dispid_check

BOOL strict_dispid_check
static

Definition at line 161 of file run.c.

◆ strict_enter_script

BOOL strict_enter_script
static

◆ test_counter

int test_counter
static

Definition at line 165 of file run.c.

Referenced by Global_InvokeEx(), and parse_script().

◆ test_name

const char* test_name = "(null)"
static

Definition at line 164 of file run.c.

◆ testObj

static IDispatchEx testObj = { &testObjVtbl }
static

Definition at line 167 of file run.c.

◆ testObjVtbl

IDispatchExVtbl testObjVtbl
static
Initial value:
= {
}
static HRESULT WINAPI testObj_InvokeEx(IDispatchEx *iface, DISPID id, LCID lcid, WORD wFlags, DISPPARAMS *pdp, VARIANT *pvarRes, EXCEPINFO *pei, IServiceProvider *pspCaller)
Definition: run.c:548
static HRESULT WINAPI testObj_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid)
Definition: run.c:502

Definition at line 1007 of file run.c.

◆ uic_handling

◆ unkObj

IUnknown unkObj = { &unkObjVtbl }
static

Definition at line 635 of file run.c.

Referenced by Global_InvokeEx().

◆ unkObjVtbl

const IUnknownVtbl unkObjVtbl
static
Initial value:
= {
}
static HRESULT WINAPI unkObj_QueryInterface(IUnknown *iface, REFIID riid, void **ppv)
Definition: run.c:608
static ULONG WINAPI unkObj_Release(IUnknown *iface)
Definition: run.c:624
static ULONG WINAPI unkObj_AddRef(IUnknown *iface)
Definition: run.c:619

Definition at line 629 of file run.c.