From: Shuai Meng Subject: [PATCH 4/7] vbscript: Implemented Exp(try 2) Message-Id: <53ECD4B0.6010806@gmail.com> Date: Thu, 14 Aug 2014 23:24:32 +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 440dbb3..9471315 100644 --- a/dlls/vbscript/global.c +++ b/dlls/vbscript/global.c @@ -705,8 +705,14 @@ static HRESULT Global_Tan(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIA static HRESULT Global_Exp(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, exp(d)); } static HRESULT Global_Log(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 7eed379..050a80d 100644 --- a/dlls/vbscript/tests/api.vbs +++ b/dlls/vbscript/tests/api.vbs @@ -1050,4 +1050,23 @@ Call ok(getVT(Tan(False)) = "VT_R8", "getVT(Tan(False)) = " & getVT(Tan(False))) Call ok(Tan(CByte(0)) = 0, "Tan(CByte(0)) = " & Tan(CByte(0))) Call ok(getVT(Tan(CByte(0))) = "VT_R8", "getVT(Tan(CByte(0))) = " & getVT(Tan(CByte(0)))) +Call ok(Exp(Empty) = 1, "Exp(Empty) = " & Exp(Empty)) +Call ok(getVT(Exp(Empty)) = "VT_R8", "getVT(Exp(Empty)) = " & getVT(Exp(Empty))) +Call ok(Exp(0) = 1, "Exp(0) = " & Exp(0)) +Call ok(getVT(Exp(0)) = "VT_R8", "getVT(Exp(0)) = " & getVT(Exp(0))) +Call ok(Exp(0) = 1, "Exp(0) = " & Exp(0)) +Call ok(getVT(Exp(0)) = "VT_R8", "getVT(Exp(0)) = " & getVT(Exp(0))) +Call ok(Exp(CSng(0)) = 1, "Exp(CSng(0/3)) = " & Exp(CSng(0/3))) +Call ok(getVT(Exp(CSng(0))) = "VT_R8", "getVT(Exp(CSng(0))) = " & getVT(Exp(CSng(0)))) +Call ok(Exp(0) = 1, "Exp(0) = " & Exp(0)) +Call ok(getVT(Exp(0)) = "VT_R8", "getVT(Exp(0)) = " & getVT(Exp(0))) +Call ok(Exp(CCur(0)) = 1, "Exp(CCur(0)) = " & Exp(CCur(0))) +Call ok(getVT(Exp(CCur(0))) = "VT_R8", "getVT(Exp(CCur(0))) = " & getVT(Exp(CCur(0)))) +Call ok(Exp("0") = 1, "Exp(""0"") = " & Exp("0")) +Call ok(getVT(Exp("0")) = "VT_R8", "getVT(Exp(""0"")) = " & getVT(Exp("0"))) +Call ok(Exp(False) = 1, "Exp(False) = " & Exp(False)) +Call ok(getVT(Exp(False)) = "VT_R8", "getVT(Exp(False)) = " & getVT(Exp(False))) +Call ok(Exp(CByte(0)) = 1, "Exp(CByte(0)) = " & Exp(CByte(0))) +Call ok(getVT(Exp(CByte(0))) = "VT_R8", "getVT(Exp(CByte(0))) = " & getVT(Exp(CByte(0)))) + Call reportSuccess()