jscript/tests: Use wide char string literals in caller.c.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Jacek Caban 2020-01-15 15:32:06 +01:00 committed by Alexandre Julliard
parent 740bcc4bd7
commit fc009bf882
1 changed files with 27 additions and 52 deletions

View File

@ -73,35 +73,14 @@ static const CLSID CLSID_JScript =
DEFINE_EXPECT(testArgConv);
static const WCHAR testW[] = {'t','e','s','t',0};
static IVariantChangeType *script_change_type;
static IDispatch *stored_obj;
#define DISPID_TEST_TESTARGCONV 0x1000
static BSTR a2bstr(const char *str)
{
BSTR ret;
int len;
len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
ret = SysAllocStringLen(NULL, len-1);
MultiByteToWideChar(CP_ACP, 0, str, -1, ret, len);
return ret;
}
static int strcmp_wa(LPCWSTR strw, const char *stra)
{
CHAR buf[512];
WideCharToMultiByte(CP_ACP, 0, strw, -1, buf, sizeof(buf), 0, 0);
return lstrcmpA(buf, stra);
}
typedef struct {
int int_result;
const char *str_result;
const WCHAR *str_result;
VARIANT_BOOL bool_result;
int test_double;
double double_result;
@ -140,7 +119,7 @@ static void test_change_type(IVariantChangeType *change_type, VARIANT *src, cons
ok(V_UI2(&v) == (UINT16)ex->int_result, "V_UI2(v) = %u, expected %u\n", V_UI2(&v), (UINT16)ex->int_result);
call_change_type(change_type, &v, src, VT_BSTR);
ok(!strcmp_wa(V_BSTR(&v), ex->str_result), "V_BSTR(v) = %s, expected %s\n", wine_dbgstr_w(V_BSTR(&v)), ex->str_result);
ok(!lstrcmpW(V_BSTR(&v), ex->str_result), "V_BSTR(v) = %s, expected %s\n", wine_dbgstr_w(V_BSTR(&v)), wine_dbgstr_w(ex->str_result));
VariantClear(&v);
call_change_type(change_type, &v, src, VT_BOOL);
@ -175,18 +154,18 @@ static void test_change_types(IVariantChangeType *change_type, IDispatch *obj_di
HRESULT hres;
static const conv_results_t bool_results[] = {
{0, "false", VARIANT_FALSE, 1,0.0},
{1, "true", VARIANT_TRUE, 1,1.0}};
{0, L"false", VARIANT_FALSE, 1,0.0},
{1, L"true", VARIANT_TRUE, 1,1.0}};
static const conv_results_t int_results[] = {
{0, "0", VARIANT_FALSE, 1,0.0},
{-100, "-100", VARIANT_TRUE, 1,-100.0},
{0x10010, "65552", VARIANT_TRUE, 1,65552.0}};
{0, L"0", VARIANT_FALSE, 1,0.0},
{-100, L"-100", VARIANT_TRUE, 1,-100.0},
{0x10010, L"65552", VARIANT_TRUE, 1,65552.0}};
static const conv_results_t empty_results =
{0, "undefined", VARIANT_FALSE, 0,0};
{0, L"undefined", VARIANT_FALSE, 0,0};
static const conv_results_t null_results =
{0, "null", VARIANT_FALSE, 0,0};
{0, L"null", VARIANT_FALSE, 0,0};
static const conv_results_t obj_results =
{10, "strval", VARIANT_TRUE, 1,10.0};
{10, L"strval", VARIANT_TRUE, 1,10.0};
V_VT(&v) = VT_BOOL;
V_BOOL(&v) = VARIANT_FALSE;
@ -221,12 +200,13 @@ static void test_change_types(IVariantChangeType *change_type, IDispatch *obj_di
/* Test conversion in place */
V_VT(&v) = VT_BSTR;
V_BSTR(&v) = str = a2bstr("test");
V_BSTR(&v) = str = SysAllocString(L"test");
hres = IVariantChangeType_ChangeType(change_type, &v, &v, 0, VT_BSTR);
ok(hres == S_OK, "ChangeType failed: %08x\n", hres);
ok(V_VT(&v) == VT_BSTR, "V_VT(v) = %d\n", V_VT(&v));
ok(V_BSTR(&v) != str, "V_BSTR(v) == str\n");
ok(!strcmp_wa(V_BSTR(&v), "test"), "V_BSTR(v) = %s\n", wine_dbgstr_w(V_BSTR(&v)));
ok(!lstrcmpW(V_BSTR(&v), L"test"), "V_BSTR(v) = %s\n", wine_dbgstr_w(V_BSTR(&v)));
VariantClear(&v);
}
static void test_caller(IServiceProvider *caller, IDispatch *arg_obj)
@ -334,7 +314,7 @@ static HRESULT WINAPI DispatchEx_GetNameSpaceParent(IDispatchEx *iface, IUnknown
static HRESULT WINAPI Test_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid)
{
if(!strcmp_wa(bstrName, "testArgConv")) {
if(!lstrcmpW(bstrName, L"testArgConv")) {
ok(grfdex == fdexNameCaseSensitive, "grfdex = %x\n", grfdex);
*pid = DISPID_TEST_TESTARGCONV;
return S_OK;
@ -431,7 +411,7 @@ static HRESULT WINAPI ActiveScriptSite_GetItemInfo(IActiveScriptSite *iface, LPC
{
ok(dwReturnMask == SCRIPTINFO_IUNKNOWN, "unexpected dwReturnMask %x\n", dwReturnMask);
ok(!ppti, "ppti != NULL\n");
ok(!strcmp_wa(pstrName, "test"), "pstrName = %s\n", wine_dbgstr_w(pstrName));
ok(!lstrcmpW(pstrName, L"test"), "pstrName = %s\n", wine_dbgstr_w(pstrName));
*ppiunkItem = (IUnknown*)&testObj;
return S_OK;
@ -484,15 +464,12 @@ static const IActiveScriptSiteVtbl ActiveScriptSiteVtbl = {
static IActiveScriptSite ActiveScriptSite = { &ActiveScriptSiteVtbl };
#define parse_script_a(p,s) _parse_script_a(__LINE__,p,s)
static void _parse_script_a(unsigned line, IActiveScriptParse *parser, const char *script)
#define parse_script(p,s) _parse_script(__LINE__,p,s)
static void _parse_script(unsigned line, IActiveScriptParse *parser, const WCHAR *script)
{
BSTR str;
HRESULT hres;
str = a2bstr(script);
hres = IActiveScriptParse_ParseScriptText(parser, str, NULL, NULL, NULL, 0, 0, 0, NULL, NULL);
SysFreeString(str);
hres = IActiveScriptParse_ParseScriptText(parser, script, NULL, NULL, NULL, 0, 0, 0, NULL, NULL);
ok_(__FILE__,line)(hres == S_OK, "ParseScriptText failed: %08x\n", hres);
}
@ -516,7 +493,7 @@ static IActiveScriptParse *create_script(void)
hres = IActiveScript_SetScriptSite(script, &ActiveScriptSite);
ok(hres == S_OK, "SetScriptSite failed: %08x\n", hres);
hres = IActiveScript_AddNamedItem(script, testW,
hres = IActiveScript_AddNamedItem(script, L"test",
SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE|SCRIPTITEM_GLOBALMEMBERS);
ok(hres == S_OK, "AddNamedItem failed: %08x\n", hres);
@ -539,12 +516,12 @@ static void run_scripts(void)
ok(hres == S_OK, "Could not get IVariantChangeType iface: %08x\n", hres);
SET_EXPECT(testArgConv);
parse_script_a(parser,
"var obj = {"
" toString: function() { return 'strval'; },"
" valueOf: function() { return 10; }"
"};"
"testArgConv(obj);");
parse_script(parser,
L"var obj = {"
L" toString: function() { return 'strval'; },"
L" valueOf: function() { return 10; }"
L"};"
L"testArgConv(obj);");
CHECK_CALLED(testArgConv);
test_change_types(script_change_type, stored_obj);
@ -558,16 +535,14 @@ static BOOL check_jscript(void)
{
IActiveScriptProperty *script_prop;
IActiveScriptParse *parser;
BSTR str;
HRESULT hres;
parser = create_script();
if(!parser)
return FALSE;
str = a2bstr("if(!('localeCompare' in String.prototype)) throw 1;");
hres = IActiveScriptParse_ParseScriptText(parser, str, NULL, NULL, NULL, 0, 0, 0, NULL, NULL);
SysFreeString(str);
hres = IActiveScriptParse_ParseScriptText(parser, L"if(!('localeCompare' in String.prototype)) throw 1;",
NULL, NULL, NULL, 0, 0, 0, NULL, NULL);
if(hres == S_OK)
hres = IActiveScriptParse_QueryInterface(parser, &IID_IActiveScriptProperty, (void**)&script_prop);