From: Shuai Meng Subject: [PATCH 6/7] vbscript: Implemented Sqr(try 2) Message-Id: <53ECD4DA.7000200@gmail.com> Date: Thu, 14 Aug 2014 23:25:14 +0800 Change log: Applied cleanly. --- dlls/vbscript/global.c | 10 ++++++++-- dlls/vbscript/tests/api.vbs | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/dlls/vbscript/global.c b/dlls/vbscript/global.c index 535b0c0..7b76d2e 100644 --- a/dlls/vbscript/global.c +++ b/dlls/vbscript/global.c @@ -729,8 +729,14 @@ static HRESULT Global_Log(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIA static HRESULT Global_Sqr(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) { - FIXME("\n"); - return E_NOTIMPL; + HRESULT hres; + double d; + + hres = to_double(arg, &d); + if(FAILED(hres)) + return hres; + + return return_double(res, sqrt(d)); } static HRESULT Global_Randomize(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) diff --git a/dlls/vbscript/tests/api.vbs b/dlls/vbscript/tests/api.vbs index 60e58ac..f924201 100644 --- a/dlls/vbscript/tests/api.vbs +++ b/dlls/vbscript/tests/api.vbs @@ -1084,4 +1084,23 @@ Call ok(getVT(Log("1")) = "VT_R8", "getVT(Log(""1"")) = " & getVT(Log("1"))) Call ok(Log(CByte(1)) = 0, "Log(CByte(1)) = " & Log(CByte(1))) Call ok(getVT(Log(CByte(1))) = "VT_R8", "getVT(Log(CByte(1))) = " & getVT(Log(CByte(1)))) +Call ok(Sqr(Empty) = 0, "Sqr(Empty) = " & Sqr(Empty)) +Call ok(getVT(Sqr(Empty)) = "VT_R8", "getVT(Sqr(Empty)) = " & getVT(Sqr(Empty))) +Call ok(Sqr(4) = 2, "Sqr(4) = " & Sqr(4)) +Call ok(getVT(Sqr(4)) = "VT_R8", "getVT(Sqr(4)) = " & getVT(Sqr(4))) +Call ok(Sqr(4) = 2, "Sqr(4) = " & Sqr(4)) +Call ok(getVT(Sqr(4)) = "VT_R8", "getVT(Sqr(4)) = " & getVT(Sqr(4))) +Call ok(Sqr(CSng(4)) = 2, "Sqr(CSng(4/3)) = " & Sqr(CSng(4/3))) +Call ok(getVT(Sqr(CSng(4))) = "VT_R8", "getVT(Sqr(CSng(4))) = " & getVT(Sqr(CSng(4)))) +Call ok(Sqr(4) = 2, "Sqr(4) = " & Sqr(4)) +Call ok(getVT(Sqr(4)) = "VT_R8", "getVT(Sqr(4)) = " & getVT(Sqr(4))) +Call ok(Sqr(CCur(4)) = 2, "Sqr(CCur(4)) = " & Sqr(CCur(4))) +Call ok(getVT(Sqr(CCur(4))) = "VT_R8", "getVT(Sqr(CCur(4))) = " & getVT(Sqr(CCur(4)))) +Call ok(Sqr("4") = 2, "Sqr(""4"") = " & Sqr("4")) +Call ok(getVT(Sqr("4")) = "VT_R8", "getVT(Sqr(""4"")) = " & getVT(Sqr("4"))) +Call ok(Sqr(False) = 0, "Sqr(False) = " & Sqr(False)) +Call ok(getVT(Sqr(False)) = "VT_R8", "getVT(Sqr(False)) = " & getVT(Sqr(False))) +Call ok(Sqr(CByte(4)) = 2, "Sqr(CByte(4)) = " & Sqr(CByte(4))) +Call ok(getVT(Sqr(CByte(4))) = "VT_R8", "getVT(Sqr(CByte(4))) = " & getVT(Sqr(CByte(4)))) + Call reportSuccess()