Shuai Meng : vbscript: Implemented VarType.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Jul 11 13:37:31 CDT 2014


Module: wine
Branch: master
Commit: 393f4bc5475f87150187d3c0f19db99db169feac
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=393f4bc5475f87150187d3c0f19db99db169feac

Author: Shuai Meng <mengshuaicalendr at gmail.com>
Date:   Fri Jul 11 11:43:28 2014 +0800

vbscript: Implemented VarType.

---

 dlls/vbscript/global.c      | 12 ++++++++++--
 dlls/vbscript/tests/api.vbs | 21 +++++++++++++++++++++
 2 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/dlls/vbscript/global.c b/dlls/vbscript/global.c
index 5a12729..fa53757 100644
--- a/dlls/vbscript/global.c
+++ b/dlls/vbscript/global.c
@@ -602,8 +602,16 @@ static HRESULT Global_Oct(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIA
 
 static HRESULT Global_VarType(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
 {
-    FIXME("\n");
-    return E_NOTIMPL;
+    TRACE("(%s)\n", debugstr_variant(arg));
+
+    assert(args_cnt == 1);
+
+    if(V_VT(arg) & ~VT_TYPEMASK) {
+        FIXME("not supported %s\n", debugstr_variant(arg));
+        return E_NOTIMPL;
+    }
+
+    return return_short(res, V_VT(arg));
 }
 
 static HRESULT Global_IsDate(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 ded9b8b..abdb6c7 100644
--- a/dlls/vbscript/tests/api.vbs
+++ b/dlls/vbscript/tests/api.vbs
@@ -857,4 +857,25 @@ Call ok(TypeName(True) = "Boolean", "TypeName(True) = " & TypeName(True))
 Call ok(TypeName(MyEmpty) = "Empty", "TypeName(MyEmpty) = " & TypeName(Empty))
 Call ok(TypeName(Null) = "Null", "TypeName(Null) = " & TypeName(Null))
 
+Call ok(VarType(Empty) = vbEmpty, "VarType(Empty) = " & VarType(Empty))
+Call ok(getVT(VarType(Empty)) = "VT_I2", "getVT(VarType(Empty)) = " & getVT(VarType(Empty)))
+Call ok(VarType(Null) = vbNull, "VarType(Null) = " & VarType(Null))
+Call ok(getVT(VarType(Null)) = "VT_I2", "getVT(VarType(Null)) = " & getVT(VarType(Null)))
+Call ok(VarType(255) = vbInteger, "VarType(255) = " & VarType(255))
+Call ok(getVT(VarType(255)) = "VT_I2", "getVT(VarType(255)) = " & getVT(VarType(255)))
+Call ok(VarType(32768) = vbLong, "VarType(32768) = " & VarType(32768))
+Call ok(getVT(VarType(32768)) = "VT_I2", "getVT(VarType(32768)) = " & getVT(VarType(32768)))
+Call ok(VarType(CSng(0.5)) = vbSingle, "VarType(CSng(0.5)) = " & VarType(CSng(0.5)))
+Call ok(getVT(VarType(CSng(0.5))) = "VT_I2", "getVT(VarType(CSng(0.5))) = " & getVT(VarType(CSng(0.5))))
+Call ok(VarType(-0.5) = vbDouble, "VarType(-0.5) = " & VarType(-0.5))
+Call ok(getVT(VarType(-0.5)) = "VT_I2", "getVT(VarType(-0.5)) = " & getVT(VarType(-0.5)))
+Call ok(VarType(CCur(0.5)) = vbCurrency, "VarType(CCur(0.5)) = " & VarType(CCur(0.5)))
+Call ok(getVT(VarType(CCur(0.5))) = "VT_I2", "getVT(VarType(CCur(0.5))) = " & getVT(VarType(CCur(0.5))))
+Call ok(VarType(CStr(0.5)) = vbString, "VarType(CStr(0.5)) = " & VarType(CStr(0.5)))
+Call ok(getVT(VarType(CStr(0.5))) = "VT_I2", "getVT(VarType(CStr(0.5))) = " & getVT(VarType(CStr(0.5))))
+Call ok(VarType(CBool(0.5)) = vbBoolean, "VarType(CBool(0.5)) = " & VarType(CBool(0.5)))
+Call ok(getVT(VarType(CBool(0.5))) = "VT_I2", "getVT(VarType(CBool(0.5))) = " & getVT(VarType(CBool(0.5))))
+Call ok(VarType(CByte(255)) = vbByte, "VarType(CByte(255)) = " & VarType(CByte(255)))
+Call ok(getVT(VarType(CByte(255))) = "VT_I2", "getVT(VarType(CByte(255))) = " & getVT(VarType(CByte(255))))
+
 Call reportSuccess()




More information about the wine-cvs mailing list