From: Shuai Meng Subject: [PATCH 2/2] vbscript: Implemented Int Message-Id: <53E09224.7070801@gmail.com> Date: Tue, 05 Aug 2014 16:13:24 +0800 testbot: https://testbot.winehq.org/JobDetails.pl?Key=8289 --- dlls/vbscript/global.c | 19 +++++++++++++++++-- dlls/vbscript/tests/api.vbs | 25 +++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/dlls/vbscript/global.c b/dlls/vbscript/global.c index d40ed9e..208682d 100644 --- a/dlls/vbscript/global.c +++ b/dlls/vbscript/global.c @@ -1298,8 +1298,23 @@ static HRESULT Global_Fix(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIA static HRESULT Global_Int(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) { - FIXME("\n"); - return E_NOTIMPL; + HRESULT hres; + VARIANT dst; + + TRACE("(%s)\n", debugstr_variant(arg)); + + assert(args_cnt == 1); + + hres = VarInt(arg, &dst); + if(FAILED(hres)) + return hres; + + if (res) + *res = dst; + else + VariantClear(&dst); + + return S_OK; } static HRESULT Global_Sgn(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 481b0cb..c8d5ba1 100644 --- a/dlls/vbscript/tests/api.vbs +++ b/dlls/vbscript/tests/api.vbs @@ -1009,4 +1009,29 @@ MyObject.myval = -2.5 Call ok(Fix(MyObject) = -2, "Fix(MyObject) = " & Fix(MyObject)) Call ok(getVT(Fix(MyObject)) = "VT_R8", "getVT(Fix(MyObject)) = " & getVT(Fix(MyObject))) +Call ok(Int(Empty) = 0, "Int(Empty) = " & Int(Empty)) +Call ok(getVT(Int(Empty)) = "VT_I2", "getVT(Int(Empty)) = " & getVT(Int(Empty))) +Call ok(Int(CCur(-0.99)) = -1, "Int(CCur(-0.99)) = " & Int(CCur(-0.99))) +Call ok(getVT(Int(CCur(-0.99))) = "VT_CY", "getVT(Int(CCur(-0.99))) = " & getVT(Int(CCur(-0.99)))) +Call ok(Int(1.99) = 1, "Int(1.99) = " & Int(1.99)) +Call ok(getVT(Int(1.99)) = "VT_R8", "getVT(Int(1.99)) = " & getVT(Int(1.99))) +Call ok(Int(-1.99) = -2, "Int(-1.99) = " & Int(-1.99)) +Call ok(getVT(Int(-1.99)) = "VT_R8", "getVT(Int(-1.99)) = " & getVT(Int(-1.99))) +If isEnglishLang Then + Call ok(Int("1.99") = 1, "Int(""1.99"") = " & Int("1.99")) + Call ok(getVT(Int("1.99")) = "VT_R8", "getVT(Int(""1.99"")) = " & getVT(Int("1.99"))) + Call ok(Int("-1.99") = -2, "Int(""-1.99"") = " & Int("-1.99")) + Call ok(getVT(Int("-1.99")) = "VT_R8", "getVT(Int(""-1.99"")) = " & getVT(Int("-1.99"))) +End If +Call ok(Int(True) = -1, "Int(True) = " & Int(True)) +Call ok(getVT(Int(True)) = "VT_I2", "getVT(Int(True)) = " & getVT(Int(True))) +Call ok(Int(False) = 0, "Int(False) = " & Int(False)) +Call ok(getVT(Int(False)) = "VT_I2", "getVT(Int(False)) = " & getVT(Int(False))) +MyObject.myval = 2.5 +Call ok(Int(MyObject) = 2, "Int(MyObject) = " & Int(MyObject)) +Call ok(getVT(Int(MyObject)) = "VT_R8", "getVT(Int(MyObject)) = " & getVT(Int(MyObject))) +MyObject.myval = -2.5 +Call ok(Int(MyObject) = -3, "Int(MyObject) = " & Int(MyObject)) +Call ok(getVT(Int(MyObject)) = "VT_R8", "getVT(Int(MyObject)) = " & getVT(Int(MyObject))) + Call reportSuccess()