jscript: Improve to_string implementation.
This commit is contained in:
parent
a5d9536542
commit
15b07c2a36
|
@ -512,6 +512,8 @@ HRESULT to_string(script_ctx_t *ctx, VARIANT *v, jsexcept_t *ei, BSTR *str)
|
|||
const WCHAR nullW[] = {'n','u','l','l',0};
|
||||
const WCHAR trueW[] = {'t','r','u','e',0};
|
||||
const WCHAR falseW[] = {'f','a','l','s','e',0};
|
||||
const WCHAR NaNW[] = {'N','a','N',0};
|
||||
const WCHAR InfinityW[] = {'-','I','n','f','i','n','i','t','y',0};
|
||||
|
||||
switch(V_VT(v)) {
|
||||
case VT_EMPTY:
|
||||
|
@ -524,6 +526,11 @@ HRESULT to_string(script_ctx_t *ctx, VARIANT *v, jsexcept_t *ei, BSTR *str)
|
|||
*str = int_to_bstr(V_I4(v));
|
||||
break;
|
||||
case VT_R8: {
|
||||
if(isnan(V_R8(v)))
|
||||
*str = SysAllocString(NaNW);
|
||||
else if(isinf(V_R8(v)))
|
||||
*str = SysAllocString(V_R8(v)<0 ? InfinityW : InfinityW+1);
|
||||
else {
|
||||
VARIANT strv;
|
||||
HRESULT hres;
|
||||
|
||||
|
@ -535,6 +542,8 @@ HRESULT to_string(script_ctx_t *ctx, VARIANT *v, jsexcept_t *ei, BSTR *str)
|
|||
*str = V_BSTR(&strv);
|
||||
return S_OK;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case VT_BSTR:
|
||||
*str = SysAllocString(V_BSTR(v));
|
||||
break;
|
||||
|
|
|
@ -566,6 +566,13 @@ ok(tmp === 0, "(new Number()).valueOf = " + tmp);
|
|||
tmp = Number.prototype.valueOf();
|
||||
ok(tmp === 0, "Number.prototype.valueOf = " + tmp);
|
||||
|
||||
num = new Number(NaN);
|
||||
ok(num.toString() === "NaN", "num.toString() = " + num.toString());
|
||||
num = new Number(-Infinity);
|
||||
ok(num.toString() === "-Infinity", "num.toString() = " + num.toString());
|
||||
num = new Number(Infinity);
|
||||
ok(num.toString() === "Infinity", "num.toString() = " + num.toString());
|
||||
|
||||
tmp = Math.min(1);
|
||||
ok(tmp === 1, "Math.min(1) = " + tmp);
|
||||
|
||||
|
|
Loading…
Reference in New Issue