Jacek Caban : vbscript: Added more tests.

Alexandre Julliard julliard at winehq.org
Thu Sep 8 14:52:13 CDT 2011


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Sep  8 14:58:32 2011 +0200

vbscript: Added more tests.

---

 dlls/vbscript/tests/Makefile.in |    2 +
 dlls/vbscript/tests/lang.vbs    |   21 +++++++++
 dlls/vbscript/tests/rsrc.rc     |   20 +++++++++
 dlls/vbscript/tests/run.c       |   88 +++++++++++++++++++++++++++++++++++++++
 4 files changed, 131 insertions(+), 0 deletions(-)

diff --git a/dlls/vbscript/tests/Makefile.in b/dlls/vbscript/tests/Makefile.in
index a045f9c..3424612 100644
--- a/dlls/vbscript/tests/Makefile.in
+++ b/dlls/vbscript/tests/Makefile.in
@@ -5,4 +5,6 @@ C_SRCS = \
 	run.c \
 	vbscript.c
 
+RC_SRCS = rsrc.rc
+
 @MAKE_TEST_RULES@
diff --git a/dlls/vbscript/tests/lang.vbs b/dlls/vbscript/tests/lang.vbs
new file mode 100644
index 0000000..642c2ff
--- /dev/null
+++ b/dlls/vbscript/tests/lang.vbs
@@ -0,0 +1,21 @@
+'
+' Copyright 2011 Jacek Caban for CodeWeavers
+'
+' This library is free software; you can redistribute it and/or
+' modify it under the terms of the GNU Lesser General Public
+' License as published by the Free Software Foundation; either
+' version 2.1 of the License, or (at your option) any later version.
+'
+' This library is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+' Lesser General Public License for more details.
+'
+' You should have received a copy of the GNU Lesser General Public
+' License along with this library; if not, write to the Free Software
+' Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+'
+
+call ok(true, "true is not true?")
+
+reportSuccess()
diff --git a/dlls/vbscript/tests/rsrc.rc b/dlls/vbscript/tests/rsrc.rc
new file mode 100644
index 0000000..834df1d
--- /dev/null
+++ b/dlls/vbscript/tests/rsrc.rc
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2011 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/* @makedep: lang.vbs */
+lang.vbs 40 "lang.vbs"
diff --git a/dlls/vbscript/tests/run.c b/dlls/vbscript/tests/run.c
index 6f1a967..b8cef40 100644
--- a/dlls/vbscript/tests/run.c
+++ b/dlls/vbscript/tests/run.c
@@ -60,10 +60,13 @@ DEFINE_EXPECT(global_success_d);
 DEFINE_EXPECT(global_success_i);
 
 #define DISPID_GLOBAL_REPORTSUCCESS 1000
+#define DISPID_GLOBAL_TRACE         1001
+#define DISPID_GLOBAL_OK            1002
 
 static const WCHAR testW[] = {'t','e','s','t',0};
 
 static BOOL strict_dispid_check;
+static const char *test_name = "(null)";
 
 static BSTR a2bstr(const char *str)
 {
@@ -183,6 +186,16 @@ static HRESULT WINAPI DispatchEx_GetNameSpaceParent(IDispatchEx *iface, IUnknown
 
 static HRESULT WINAPI Global_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid)
 {
+    if(!strcmp_wa(bstrName, "ok")) {
+        test_grfdex(grfdex, fdexNameCaseInsensitive);
+        *pid = DISPID_GLOBAL_OK;
+        return S_OK;
+    }
+    if(!strcmp_wa(bstrName, "trace")) {
+        test_grfdex(grfdex, fdexNameCaseInsensitive);
+        *pid = DISPID_GLOBAL_TRACE;
+        return S_OK;
+    }
     if(!strcmp_wa(bstrName, "reportSuccess")) {
         CHECK_EXPECT(global_success_d);
         test_grfdex(grfdex, fdexNameCaseInsensitive);
@@ -199,6 +212,48 @@ static HRESULT WINAPI Global_InvokeEx(IDispatchEx *iface, DISPID id, LCID lcid,
         VARIANT *pvarRes, EXCEPINFO *pei, IServiceProvider *pspCaller)
 {
     switch(id) {
+    case DISPID_GLOBAL_OK: {
+        VARIANT *b;
+
+        ok(wFlags == INVOKE_FUNC || wFlags == (INVOKE_FUNC|INVOKE_PROPERTYGET), "wFlags = %x\n", wFlags);
+        ok(pdp != NULL, "pdp == NULL\n");
+        ok(pdp->rgvarg != NULL, "rgvarg == NULL\n");
+        ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
+        ok(pdp->cArgs == 2, "cArgs = %d\n", pdp->cArgs);
+        ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs);
+        if(wFlags & INVOKE_PROPERTYGET)
+            ok(pvarRes != NULL, "pvarRes == NULL\n");
+        else
+            ok(!pvarRes, "pvarRes != NULL\n");
+        ok(pei != NULL, "pei == NULL\n");
+
+        ok(V_VT(pdp->rgvarg) == VT_BSTR, "V_VT(psp->rgvargs) = %d\n", V_VT(pdp->rgvarg));
+
+        b = pdp->rgvarg+1;
+        if(V_VT(b) == (VT_BYREF|VT_VARIANT))
+            b = V_BYREF(b);
+
+        ok(V_VT(b) == VT_BOOL, "V_VT(b) = %d\n", V_VT(b));
+
+        ok(V_BOOL(b), "%s: %s\n", test_name, wine_dbgstr_w(V_BSTR(pdp->rgvarg)));
+        return S_OK;
+    }
+
+     case DISPID_GLOBAL_TRACE:
+        ok(wFlags == INVOKE_FUNC, "wFlags = %x\n", wFlags);
+        ok(pdp != NULL, "pdp == NULL\n");
+        ok(pdp->rgvarg != NULL, "rgvarg == NULL\n");
+        ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n");
+        ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs);
+        ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs);
+        ok(!pvarRes, "pvarRes != NULL\n");
+        ok(pei != NULL, "pei == NULL\n");
+
+        ok(V_VT(pdp->rgvarg) == VT_BSTR, "V_VT(psp->rgvargs) = %d\n", V_VT(pdp->rgvarg));
+        if(V_VT(pdp->rgvarg) == VT_BSTR)
+            trace("%s: %s\n", test_name, wine_dbgstr_w(V_BSTR(pdp->rgvarg)));
+
+        return S_OK;
     case DISPID_GLOBAL_REPORTSUCCESS:
         CHECK_EXPECT(global_success_i);
 
@@ -457,6 +512,37 @@ static void run_from_file(const char *filename)
     ok(hres == S_OK, "parse_script failed: %08x\n", hres);
 }
 
+static void run_from_res(const char *name)
+{
+    const char *data;
+    DWORD size, len;
+    BSTR str;
+    HRSRC src;
+    HRESULT hres;
+
+    strict_dispid_check = FALSE;
+    test_name = name;
+
+    src = FindResourceA(NULL, name, (LPCSTR)40);
+    ok(src != NULL, "Could not find resource %s\n", name);
+
+    size = SizeofResource(NULL, src);
+    data = LoadResource(NULL, src);
+
+    len = MultiByteToWideChar(CP_ACP, 0, data, size, NULL, 0);
+    str = SysAllocStringLen(NULL, len);
+    MultiByteToWideChar(CP_ACP, 0, data, size, str, len);
+
+    SET_EXPECT(global_success_d);
+    SET_EXPECT(global_success_i);
+    hres = parse_script(SCRIPTITEM_GLOBALMEMBERS, str);
+    CHECK_CALLED(global_success_d);
+    CHECK_CALLED(global_success_i);
+
+    ok(hres == S_OK, "parse_script failed: %08x\n", hres);
+    SysFreeString(str);
+}
+
 static void run_tests(void)
 {
     strict_dispid_check = TRUE;
@@ -481,6 +567,8 @@ static void run_tests(void)
     parse_script_a("Call reportSuccess");
     CHECK_CALLED(global_success_d);
     CHECK_CALLED(global_success_i);
+
+    run_from_res("lang.vbs");
 }
 
 static BOOL check_vbscript(void)




More information about the wine-cvs mailing list