From: Shuai Meng Subject: [PATCH 2/7] vbscript: Implemented Sin(try 2) Message-Id: <53ECD488.2020807@gmail.com> Date: Thu, 14 Aug 2014 23:23:52 +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 bba0d07..7321258 100644 --- a/dlls/vbscript/global.c +++ b/dlls/vbscript/global.c @@ -681,8 +681,14 @@ static HRESULT Global_Cos(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIA static HRESULT Global_Sin(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, sin(d)); } static HRESULT Global_Tan(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 ff78989..91ccc66 100644 --- a/dlls/vbscript/tests/api.vbs +++ b/dlls/vbscript/tests/api.vbs @@ -1012,4 +1012,23 @@ Call ok(getVT(Cos(False)) = "VT_R8", "getVT(Cos(False)) = " & getVT(Cos(False))) Call ok(Cos(CByte(0)) = 1, "Cos(CByte(0)) = " & Cos(CByte(0))) Call ok(getVT(Cos(CByte(0))) = "VT_R8", "getVT(Cos(CByte(0))) = " & getVT(Cos(CByte(0)))) +Call ok(Sin(Empty) = 0, "Sin(Empty) = " & Sin(Empty)) +Call ok(getVT(Sin(Empty)) = "VT_R8", "getVT(Sin(Empty)) = " & getVT(Sin(Empty))) +Call ok(Sin(0) = 0, "Sin(0) = " & Sin(0)) +Call ok(getVT(Sin(0)) = "VT_R8", "getVT(Sin(0)) = " & getVT(Sin(0))) +Call ok(Sin(0) = 0, "Sin(0) = " & Sin(0)) +Call ok(getVT(Sin(0)) = "VT_R8", "getVT(Sin(0)) = " & getVT(Sin(0))) +Call ok(Sin(CSng(0)) = 0, "Sin(CSng(0/3)) = " & Sin(CSng(0/3))) +Call ok(getVT(Sin(CSng(0))) = "VT_R8", "getVT(Sin(CSng(0))) = " & getVT(Sin(CSng(0)))) +Call ok(Sin(0) = 0, "Sin(0) = " & Sin(0)) +Call ok(getVT(Sin(0)) = "VT_R8", "getVT(Sin(0)) = " & getVT(Sin(0))) +Call ok(Sin(CCur(0)) = 0, "Sin(CCur(0)) = " & Sin(CCur(0))) +Call ok(getVT(Sin(CCur(0))) = "VT_R8", "getVT(Sin(CCur(0))) = " & getVT(Sin(CCur(0)))) +Call ok(Sin("0") = 0, "Sin(""0"") = " & Sin("0")) +Call ok(getVT(Sin("0")) = "VT_R8", "getVT(Sin(""0"")) = " & getVT(Sin("0"))) +Call ok(Sin(False) = 0, "Sin(False) = " & Sin(False)) +Call ok(getVT(Sin(False)) = "VT_R8", "getVT(Sin(False)) = " & getVT(Sin(False))) +Call ok(Sin(CByte(0)) = 0, "Sin(CByte(0)) = " & Sin(CByte(0))) +Call ok(getVT(Sin(CByte(0))) = "VT_R8", "getVT(Sin(CByte(0))) = " & getVT(Sin(CByte(0)))) + Call reportSuccess()