vbscript: Added IRegExp2_QueryInterface tests.
This commit is contained in:
parent
63d27b5420
commit
b0ef29595a
|
@ -136,6 +136,7 @@ dlls/urlmon/urlmon_urlmon.h
|
||||||
dlls/urlmon/urlmon_urlmon_p.c
|
dlls/urlmon/urlmon_urlmon_p.c
|
||||||
dlls/vbscript/parser.tab.c
|
dlls/vbscript/parser.tab.c
|
||||||
dlls/vbscript/parser.tab.h
|
dlls/vbscript/parser.tab.h
|
||||||
|
dlls/vbscript/tests/vbsregexp55.h
|
||||||
dlls/vbscript/vbscript_classes.h
|
dlls/vbscript/vbscript_classes.h
|
||||||
dlls/vbscript/vbsglobal.h
|
dlls/vbscript/vbsglobal.h
|
||||||
dlls/vbscript/vbsregexp55.h
|
dlls/vbscript/vbsregexp55.h
|
||||||
|
|
|
@ -6,6 +6,8 @@ C_SRCS = \
|
||||||
run.c \
|
run.c \
|
||||||
vbscript.c
|
vbscript.c
|
||||||
|
|
||||||
|
IDL_H_SRCS = vbsregexp55.idl
|
||||||
|
|
||||||
RC_SRCS = rsrc.rc
|
RC_SRCS = rsrc.rc
|
||||||
|
|
||||||
@MAKE_TEST_RULES@
|
@MAKE_TEST_RULES@
|
||||||
|
|
|
@ -25,6 +25,8 @@
|
||||||
#include <objsafe.h>
|
#include <objsafe.h>
|
||||||
#include <dispex.h>
|
#include <dispex.h>
|
||||||
|
|
||||||
|
#include "vbsregexp55.h"
|
||||||
|
|
||||||
#include "wine/test.h"
|
#include "wine/test.h"
|
||||||
|
|
||||||
#ifdef _WIN64
|
#ifdef _WIN64
|
||||||
|
@ -84,6 +86,7 @@ DEFINE_EXPECT(OnEnterScript);
|
||||||
DEFINE_EXPECT(OnLeaveScript);
|
DEFINE_EXPECT(OnLeaveScript);
|
||||||
|
|
||||||
DEFINE_GUID(CLSID_VBScript, 0xb54f3741, 0x5b07, 0x11cf, 0xa4,0xb0, 0x00,0xaa,0x00,0x4a,0x55,0xe8);
|
DEFINE_GUID(CLSID_VBScript, 0xb54f3741, 0x5b07, 0x11cf, 0xa4,0xb0, 0x00,0xaa,0x00,0x4a,0x55,0xe8);
|
||||||
|
DEFINE_GUID(CLSID_VBScriptRegExp, 0x3f4daca4, 0x160d, 0x11d2, 0xa8,0xe9, 0x00,0x10,0x4b,0x36,0x5c,0x9f);
|
||||||
|
|
||||||
static BSTR a2bstr(const char *str)
|
static BSTR a2bstr(const char *str)
|
||||||
{
|
{
|
||||||
|
@ -791,6 +794,39 @@ static void test_vbscript_initializing(void)
|
||||||
ok(!ref, "ref = %d\n", ref);
|
ok(!ref, "ref = %d\n", ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_RegExp(void)
|
||||||
|
{
|
||||||
|
IRegExp2 *regexp;
|
||||||
|
IUnknown *unk;
|
||||||
|
HRESULT hres;
|
||||||
|
|
||||||
|
hres = CoCreateInstance(&CLSID_VBScriptRegExp, NULL,
|
||||||
|
CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
|
||||||
|
&IID_IUnknown, (void**)&unk);
|
||||||
|
if(hres == REGDB_E_CLASSNOTREG) {
|
||||||
|
win_skip("VBScriptRegExp is not registered\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ok(hres == S_OK, "CoCreateInstance(CLSID_VBScriptRegExp) failed: %x\n", hres);
|
||||||
|
|
||||||
|
hres = IUnknown_QueryInterface(unk, &IID_IRegExp2, (void**)®exp);
|
||||||
|
if(hres == E_NOINTERFACE) {
|
||||||
|
win_skip("IRegExp2 interface is not available\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ok(hres == S_OK, "QueryInterface(IID_IRegExp2) failed: %x\n", hres);
|
||||||
|
IUnknown_Release(unk);
|
||||||
|
|
||||||
|
hres = IRegExp2_QueryInterface(regexp, &IID_IRegExp, (void**)&unk);
|
||||||
|
ok(hres == S_OK, "QueryInterface(IID_IRegExp) returned %x\n", hres);
|
||||||
|
IUnknown_Release(unk);
|
||||||
|
|
||||||
|
hres = IRegExp2_QueryInterface(regexp, &IID_IDispatchEx, (void**)&unk);
|
||||||
|
ok(hres == E_NOINTERFACE, "QueryInterface(IID_IDispatchEx) returned %x\n", hres);
|
||||||
|
|
||||||
|
IRegExp2_Release(regexp);
|
||||||
|
}
|
||||||
|
|
||||||
static BOOL check_vbscript(void)
|
static BOOL check_vbscript(void)
|
||||||
{
|
{
|
||||||
IActiveScriptParseProcedure2 *vbscript;
|
IActiveScriptParseProcedure2 *vbscript;
|
||||||
|
@ -815,6 +851,7 @@ START_TEST(vbscript)
|
||||||
test_vbscript_simplecreate();
|
test_vbscript_simplecreate();
|
||||||
test_vbscript_initializing();
|
test_vbscript_initializing();
|
||||||
test_scriptdisp();
|
test_scriptdisp();
|
||||||
|
test_RegExp();
|
||||||
}else {
|
}else {
|
||||||
win_skip("VBScript engine not available or too old\n");
|
win_skip("VBScript engine not available or too old\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2011 Jacek Caban for CodeWeavers
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define DISPID_SUBMATCHES_COUNT 1
|
||||||
|
|
||||||
|
#define DISPID_MATCHCOLLECTION_COUNT 1
|
||||||
|
|
||||||
|
#define DISPID_MATCH_FIRSTINDEX 10001
|
||||||
|
#define DISPID_MATCH_LENGTH 10002
|
||||||
|
#define DISPID_MATCH_SUBMATCHES 10003
|
||||||
|
|
||||||
|
#define DISPID_REGEXP_PATTERN 10001
|
||||||
|
#define DISPID_REGEXP_IGNORECASE 10002
|
||||||
|
#define DISPID_REGEXP_GLOBAL 10003
|
||||||
|
#define DISPID_REGEXP_EXECUTE 10004
|
||||||
|
#define DISPID_REGEXP_TEST 10005
|
||||||
|
#define DISPID_REGEXP_REPLACE 10006
|
||||||
|
#define DISPID_REGEXP_MULTILINE 10007
|
|
@ -0,0 +1,271 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2013 Piotr Caban for CodeWeavers
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
import "oaidl.idl";
|
||||||
|
|
||||||
|
#include "vbscript_defs.h"
|
||||||
|
|
||||||
|
[
|
||||||
|
helpstring("Microsoft VBScript Regular Expressions 5.5"),
|
||||||
|
id(3),
|
||||||
|
uuid(3f4daca7-160d-11d2-a8e9-00104b365c9f),
|
||||||
|
version(5.5)
|
||||||
|
]
|
||||||
|
library VBScript_RegExp_55
|
||||||
|
{
|
||||||
|
importlib("stdole2.tlb");
|
||||||
|
|
||||||
|
[
|
||||||
|
dual,
|
||||||
|
hidden,
|
||||||
|
nonextensible,
|
||||||
|
odl,
|
||||||
|
oleautomation,
|
||||||
|
uuid(3f4daca0-160d-11d2-a8e9-00104b365c9f),
|
||||||
|
]
|
||||||
|
interface IRegExp : IDispatch
|
||||||
|
{
|
||||||
|
[id(DISPID_REGEXP_PATTERN), propget]
|
||||||
|
HRESULT Pattern([out, retval] BSTR *pPattern);
|
||||||
|
|
||||||
|
[id(DISPID_REGEXP_PATTERN), propput]
|
||||||
|
HRESULT Pattern([in] BSTR pPattern);
|
||||||
|
|
||||||
|
[id(DISPID_REGEXP_IGNORECASE), propget]
|
||||||
|
HRESULT IgnoreCase([out, retval] VARIANT_BOOL *pIgnoreCase);
|
||||||
|
|
||||||
|
[id(DISPID_REGEXP_IGNORECASE), propput]
|
||||||
|
HRESULT IgnoreCase([in] VARIANT_BOOL pIgnoreCase);
|
||||||
|
|
||||||
|
[id(DISPID_REGEXP_GLOBAL), propget]
|
||||||
|
HRESULT Global([out, retval] VARIANT_BOOL *pGlobal);
|
||||||
|
|
||||||
|
[id(DISPID_REGEXP_GLOBAL), propput]
|
||||||
|
HRESULT Global([in] VARIANT_BOOL pGlobal);
|
||||||
|
|
||||||
|
[id(DISPID_REGEXP_EXECUTE)]
|
||||||
|
HRESULT Execute(
|
||||||
|
[in] BSTR sourceString,
|
||||||
|
[out, retval] IDispatch **ppMatches);
|
||||||
|
|
||||||
|
[id(DISPID_REGEXP_TEST)]
|
||||||
|
HRESULT Test(
|
||||||
|
[in] BSTR sourceString,
|
||||||
|
[out, retval] VARIANT_BOOL *pMatch);
|
||||||
|
|
||||||
|
[id(DISPID_REGEXP_REPLACE)]
|
||||||
|
HRESULT Replace(
|
||||||
|
[in] BSTR sourceString,
|
||||||
|
[in] BSTR replaceString,
|
||||||
|
[out, retval] BSTR *pDestString);
|
||||||
|
}
|
||||||
|
|
||||||
|
[
|
||||||
|
dual,
|
||||||
|
hidden,
|
||||||
|
nonextensible,
|
||||||
|
odl,
|
||||||
|
oleautomation,
|
||||||
|
uuid(3f4dacb0-160d-11d2-a8e9-00104b365c9f)
|
||||||
|
]
|
||||||
|
interface IRegExp2 : IDispatch
|
||||||
|
{
|
||||||
|
[id(DISPID_REGEXP_PATTERN), propget]
|
||||||
|
HRESULT Pattern([out, retval] BSTR *pPattern);
|
||||||
|
|
||||||
|
[id(DISPID_REGEXP_PATTERN), propput]
|
||||||
|
HRESULT Pattern([in] BSTR pPattern);
|
||||||
|
|
||||||
|
[id(DISPID_REGEXP_IGNORECASE), propget]
|
||||||
|
HRESULT IgnoreCase([out, retval] VARIANT_BOOL *pIgnoreCase);
|
||||||
|
|
||||||
|
[id(DISPID_REGEXP_IGNORECASE), propput]
|
||||||
|
HRESULT IgnoreCase([in] VARIANT_BOOL pIgnoreCase);
|
||||||
|
|
||||||
|
[id(DISPID_REGEXP_GLOBAL), propget]
|
||||||
|
HRESULT Global([out, retval] VARIANT_BOOL *pGlobal);
|
||||||
|
|
||||||
|
[id(DISPID_REGEXP_GLOBAL), propput]
|
||||||
|
HRESULT Global([in] VARIANT_BOOL pGlobal);
|
||||||
|
|
||||||
|
[id(DISPID_REGEXP_MULTILINE), propget]
|
||||||
|
HRESULT Multiline([out, retval] VARIANT_BOOL *pMultiline);
|
||||||
|
|
||||||
|
[id(DISPID_REGEXP_MULTILINE), propput]
|
||||||
|
HRESULT Multiline([in] VARIANT_BOOL pMultiline);
|
||||||
|
|
||||||
|
[id(DISPID_REGEXP_EXECUTE)]
|
||||||
|
HRESULT Execute(
|
||||||
|
[in] BSTR sourceString,
|
||||||
|
[out, retval] IDispatch **ppMatches);
|
||||||
|
|
||||||
|
[id(DISPID_REGEXP_TEST)]
|
||||||
|
HRESULT Test(
|
||||||
|
[in] BSTR sourceString,
|
||||||
|
[out, retval] VARIANT_BOOL *pMatch);
|
||||||
|
|
||||||
|
[id(DISPID_REGEXP_REPLACE)]
|
||||||
|
HRESULT Replace(
|
||||||
|
[in] BSTR sourceString,
|
||||||
|
[in] VARIANT replaceVar,
|
||||||
|
[out, retval] BSTR *pDestString);
|
||||||
|
}
|
||||||
|
|
||||||
|
[
|
||||||
|
dual,
|
||||||
|
hidden,
|
||||||
|
nonextensible,
|
||||||
|
odl,
|
||||||
|
oleautomation,
|
||||||
|
uuid(3f4daca1-160d-11d2-a8e9-00104b365c9f)
|
||||||
|
]
|
||||||
|
interface IMatch : IDispatch
|
||||||
|
{
|
||||||
|
[id(DISPID_VALUE), propget]
|
||||||
|
HRESULT Value([out, retval] BSTR *pValue);
|
||||||
|
|
||||||
|
[id(DISPID_MATCH_FIRSTINDEX), propget]
|
||||||
|
HRESULT FirstIndex([out, retval] LONG *pFirstIndex);
|
||||||
|
|
||||||
|
[id(DISPID_MATCH_LENGTH), propget]
|
||||||
|
HRESULT Length([out, retval] LONG *pLength);
|
||||||
|
}
|
||||||
|
|
||||||
|
[
|
||||||
|
odl,
|
||||||
|
uuid(3f4dacb1-160d-11d2-a8e9-00104b365c9f),
|
||||||
|
hidden,
|
||||||
|
dual,
|
||||||
|
nonextensible,
|
||||||
|
oleautomation
|
||||||
|
]
|
||||||
|
interface IMatch2 : IDispatch
|
||||||
|
{
|
||||||
|
[id(DISPID_VALUE), propget]
|
||||||
|
HRESULT Value([out, retval] BSTR *pValue);
|
||||||
|
|
||||||
|
[id(DISPID_MATCH_FIRSTINDEX), propget]
|
||||||
|
HRESULT FirstIndex([out, retval] LONG *pFirstIndex);
|
||||||
|
|
||||||
|
[id(DISPID_MATCH_LENGTH), propget]
|
||||||
|
HRESULT Length([out, retval] LONG *pLength);
|
||||||
|
|
||||||
|
[id(DISPID_MATCH_SUBMATCHES), propget]
|
||||||
|
HRESULT SubMatches([out, retval] IDispatch **ppSubMatches);
|
||||||
|
}
|
||||||
|
|
||||||
|
[
|
||||||
|
dual,
|
||||||
|
hidden,
|
||||||
|
nonextensible,
|
||||||
|
odl,
|
||||||
|
oleautomation,
|
||||||
|
uuid(3f4daca2-160d-11d2-a8e9-00104b365c9f)
|
||||||
|
]
|
||||||
|
interface IMatchCollection : IDispatch
|
||||||
|
{
|
||||||
|
[id(DISPID_VALUE), propget]
|
||||||
|
HRESULT Item(
|
||||||
|
[in] LONG index,
|
||||||
|
[out, retval] IDispatch **ppMatch);
|
||||||
|
|
||||||
|
[id(DISPID_MATCHCOLLECTION_COUNT), propget]
|
||||||
|
HRESULT Count([out, retval] LONG *pCount);
|
||||||
|
|
||||||
|
[id(DISPID_NEWENUM), propget]
|
||||||
|
HRESULT _NewEnum([out, retval] IUnknown **ppEnum);
|
||||||
|
}
|
||||||
|
|
||||||
|
[
|
||||||
|
dual,
|
||||||
|
hidden,
|
||||||
|
nonextensible,
|
||||||
|
odl,
|
||||||
|
oleautomation,
|
||||||
|
uuid(3f4dacb2-160d-11d2-a8e9-00104b365c9f)
|
||||||
|
]
|
||||||
|
interface IMatchCollection2 : IDispatch
|
||||||
|
{
|
||||||
|
[id(DISPID_VALUE), propget]
|
||||||
|
HRESULT Item(
|
||||||
|
[in] LONG index,
|
||||||
|
[out, retval] IDispatch **ppMatch);
|
||||||
|
|
||||||
|
[id(DISPID_MATCHCOLLECTION_COUNT), propget]
|
||||||
|
HRESULT Count([out, retval] LONG *pCount);
|
||||||
|
|
||||||
|
[id(DISPID_NEWENUM), propget]
|
||||||
|
HRESULT _NewEnum([out, retval] IUnknown **ppEnum);
|
||||||
|
}
|
||||||
|
|
||||||
|
[
|
||||||
|
dual,
|
||||||
|
hidden,
|
||||||
|
nonextensible,
|
||||||
|
odl,
|
||||||
|
oleautomation,
|
||||||
|
uuid(3f4dacb3-160d-11d2-a8e9-00104b365c9f)
|
||||||
|
]
|
||||||
|
interface ISubMatches : IDispatch
|
||||||
|
{
|
||||||
|
[id(DISPID_VALUE), propget]
|
||||||
|
HRESULT Item(
|
||||||
|
[in] LONG index,
|
||||||
|
[out, retval] VARIANT *pSubMatch);
|
||||||
|
|
||||||
|
[id(DISPID_SUBMATCHES_COUNT), propget]
|
||||||
|
HRESULT Count([out, retval] LONG *pCount);
|
||||||
|
|
||||||
|
[id(DISPID_NEWENUM), propget]
|
||||||
|
HRESULT _NewEnum([out, retval] IUnknown **ppEnum);
|
||||||
|
}
|
||||||
|
|
||||||
|
[
|
||||||
|
uuid(3f4daca4-160d-11d2-a8e9-00104b365c9f)
|
||||||
|
]
|
||||||
|
coclass RegExp
|
||||||
|
{
|
||||||
|
[default] interface IRegExp2;
|
||||||
|
}
|
||||||
|
|
||||||
|
[
|
||||||
|
noncreatable,
|
||||||
|
uuid(3f4daca5-160d-11d2-a8e9-00104b365c9f)
|
||||||
|
]
|
||||||
|
coclass Match
|
||||||
|
{
|
||||||
|
[default] interface IMatch2;
|
||||||
|
}
|
||||||
|
|
||||||
|
[
|
||||||
|
noncreatable,
|
||||||
|
uuid(3f4daca6-160d-11d2-a8e9-00104b365c9f)
|
||||||
|
]
|
||||||
|
coclass MatchCollection
|
||||||
|
{
|
||||||
|
[default] interface IMatchCollection2;
|
||||||
|
}
|
||||||
|
|
||||||
|
[
|
||||||
|
noncreatable,
|
||||||
|
uuid(3f4dacc0-160d-11d2-a8e9-00104b365c9f)
|
||||||
|
]
|
||||||
|
coclass SubMatches {
|
||||||
|
[default] interface ISubMatches;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue