From: Shuai Meng Subject: [PATCH 7/7] vbscript: Implemented Atn(try 2) Message-Id: <53ECD50D.7070906@gmail.com> Date: Thu, 14 Aug 2014 23:26:05 +0800 Change log: Changed function name from Ant to Atn; Applied cleanly. --- dlls/vbscript/global.c | 14 ++++++++++---- dlls/vbscript/tests/api.vbs | 19 +++++++++++++++++++ 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/dlls/vbscript/global.c b/dlls/vbscript/global.c index 7b76d2e..12b3a3f 100644 --- a/dlls/vbscript/global.c +++ b/dlls/vbscript/global.c @@ -661,10 +661,16 @@ static HRESULT Global_IsObject(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, return S_OK; } -static HRESULT Global_Ant(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) +static HRESULT Global_Atn(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, atan(d)); } static HRESULT Global_Cos(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) @@ -2006,7 +2012,7 @@ static const builtin_prop_t global_props[] = { {DISPID_GLOBAL_ISNUMERIC, Global_IsNumeric, 0, 1}, {DISPID_GLOBAL_ISARRAY, Global_IsArray, 0, 1}, {DISPID_GLOBAL_ISOBJECT, Global_IsObject, 0, 1}, - {DISPID_GLOBAL_ATN, Global_Ant, 0, 1}, + {DISPID_GLOBAL_ATN, Global_Atn, 0, 1}, {DISPID_GLOBAL_COS, Global_Cos, 0, 1}, {DISPID_GLOBAL_SIN, Global_Sin, 0, 1}, {DISPID_GLOBAL_TAN, Global_Tan, 0, 1}, diff --git a/dlls/vbscript/tests/api.vbs b/dlls/vbscript/tests/api.vbs index f924201..0beda9c 100644 --- a/dlls/vbscript/tests/api.vbs +++ b/dlls/vbscript/tests/api.vbs @@ -1103,4 +1103,23 @@ 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 ok(Atn(Empty) = 0, "Atn(Empty) = " & Atn(Empty)) +Call ok(getVT(Atn(Empty)) = "VT_R8", "getVT(Atn(Empty)) = " & getVT(Atn(Empty))) +Call ok(Atn(0) = 0, "Atn(0) = " & Atn(0)) +Call ok(getVT(Atn(0)) = "VT_R8", "getVT(Atn(0)) = " & getVT(Atn(0))) +Call ok(Atn(0) = 0, "Atn(0) = " & Atn(0)) +Call ok(getVT(Atn(0)) = "VT_R8", "getVT(Atn(0)) = " & getVT(Atn(0))) +Call ok(Atn(CSng(0)) = 0, "Atn(CSng(0/3)) = " & Atn(CSng(0/3))) +Call ok(getVT(Atn(CSng(0))) = "VT_R8", "getVT(Atn(CSng(0))) = " & getVT(Atn(CSng(0)))) +Call ok(Atn(0) = 0, "Atn(0) = " & Atn(0)) +Call ok(getVT(Atn(0)) = "VT_R8", "getVT(Atn(0)) = " & getVT(Atn(0))) +Call ok(Atn(CCur(0)) = 0, "Atn(CCur(0)) = " & Atn(CCur(0))) +Call ok(getVT(Atn(CCur(0))) = "VT_R8", "getVT(Atn(CCur(0))) = " & getVT(Atn(CCur(0)))) +Call ok(Atn("0") = 0, "Atn(""0"") = " & Atn("0")) +Call ok(getVT(Atn("0")) = "VT_R8", "getVT(Atn(""0"")) = " & getVT(Atn("0"))) +Call ok(Atn(False) = 0, "Atn(False) = " & Atn(False)) +Call ok(getVT(Atn(False)) = "VT_R8", "getVT(Atn(False)) = " & getVT(Atn(False))) +Call ok(Atn(CByte(0)) = 0, "Atn(CByte(0)) = " & Atn(CByte(0))) +Call ok(getVT(Atn(CByte(0))) = "VT_R8", "getVT(Atn(CByte(0))) = " & getVT(Atn(CByte(0)))) + Call reportSuccess()