Commit 3925f130 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

jscript: Added String constructor implementation.

parent 84b69fb1
...@@ -701,8 +701,39 @@ static const builtin_info_t String_info = { ...@@ -701,8 +701,39 @@ static const builtin_info_t String_info = {
static HRESULT StringConstr_value(DispatchEx *dispex, LCID lcid, WORD flags, DISPPARAMS *dp, static HRESULT StringConstr_value(DispatchEx *dispex, LCID lcid, WORD flags, DISPPARAMS *dp,
VARIANT *retv, jsexcept_t *ei, IServiceProvider *sp) VARIANT *retv, jsexcept_t *ei, IServiceProvider *sp)
{ {
FIXME("\n"); HRESULT hres;
return E_NOTIMPL;
switch(flags) {
case DISPATCH_CONSTRUCT: {
DispatchEx *ret;
if(arg_cnt(dp)) {
BSTR str;
hres = to_string(dispex->ctx, get_arg(dp, 0), ei, &str);
if(FAILED(hres))
return hres;
hres = create_string(dispex->ctx, str, SysStringLen(str), &ret);
SysFreeString(str);
}else {
hres = create_string(dispex->ctx, NULL, 0, &ret);
}
if(FAILED(hres))
return hres;
V_VT(retv) = VT_DISPATCH;
V_DISPATCH(retv) = (IDispatch*)_IDispatchEx_(ret);
break;
}
default:
FIXME("unimplemented flags: %x\n", flags);
return E_NOTIMPL;
}
return S_OK;
} }
static HRESULT string_alloc(script_ctx_t *ctx, BOOL use_constr, StringInstance **ret) static HRESULT string_alloc(script_ctx_t *ctx, BOOL use_constr, StringInstance **ret)
......
...@@ -59,6 +59,13 @@ ok(tmp === "test", "''.valueOf() = " + tmp); ...@@ -59,6 +59,13 @@ ok(tmp === "test", "''.valueOf() = " + tmp);
tmp = "test".valueOf(3); tmp = "test".valueOf(3);
ok(tmp === "test", "''.valueOf(3) = " + tmp); ok(tmp === "test", "''.valueOf(3) = " + tmp);
var str = new String("test");
ok(str.toString() === "test", "str.toString() = " + str.toString());
var str = new String();
ok(str.toString() === "", "str.toString() = " + str.toString());
var str = new String("test", "abc");
ok(str.toString() === "test", "str.toString() = " + str.toString());
tmp = "abc".charAt(0); tmp = "abc".charAt(0);
ok(tmp === "a", "'abc',charAt(0) = " + tmp); ok(tmp === "a", "'abc',charAt(0) = " + tmp);
tmp = "abc".charAt(1); tmp = "abc".charAt(1);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment