From a1428c78b0799aec481bca0253cfc94c19b7e3d6 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Wed, 11 Jul 2012 10:23:37 +0200 Subject: [PATCH] vbscript: Added LCase implementation. --- dlls/vbscript/global.c | 29 +++++++++++++++++++++++++++-- dlls/vbscript/tests/api.vbs | 14 ++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/dlls/vbscript/global.c b/dlls/vbscript/global.c index a812d91f332..c3b650f7e1f 100644 --- a/dlls/vbscript/global.c +++ b/dlls/vbscript/global.c @@ -582,8 +582,33 @@ static HRESULT Global_StrComp(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, V static HRESULT Global_LCase(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) { - FIXME("\n"); - return E_NOTIMPL; + BSTR str; + HRESULT hres; + + TRACE("%s\n", debugstr_variant(arg)); + + if(V_VT(arg) == VT_NULL) { + if(res) + V_VT(res) = VT_NULL; + return S_OK; + } + + hres = to_string(arg, &str); + if(FAILED(hres)) + return hres; + + if(res) { + WCHAR *ptr; + + for(ptr = str; *ptr; ptr++) + *ptr = tolowerW(*ptr); + + V_VT(res) = VT_BSTR; + V_BSTR(res) = str; + }else { + SysFreeString(str); + } + return S_OK; } static HRESULT Global_UCase(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 fe6f9b0b940..4914e7a4d97 100644 --- a/dlls/vbscript/tests/api.vbs +++ b/dlls/vbscript/tests/api.vbs @@ -159,4 +159,18 @@ TestUCase 0.123, "0.123" TestUCase Empty, "" Call ok(getVT(UCase(Null)) = "VT_NULL", "getVT(UCase(Null)) = " & getVT(UCase(Null))) +Sub TestLCase(str, ex) + x = LCase(str) + Call ok(x = ex, "LCase(" & str & ") = " & x & " expected " & ex) +End Sub + +TestLCase "test", "test" +TestLCase "123aBC?", "123abc?" +TestLCase "", "" +TestLCase 1, "1" +TestLCase true, "true" +TestLCase 0.123, "0.123" +TestLCase Empty, "" +Call ok(getVT(LCase(Null)) = "VT_NULL", "getVT(LCase(Null)) = " & getVT(LCase(Null))) + Call reportSuccess()