Author: akhaldi
Date: Wed Jul 22 00:40:02 2015
New Revision: 68537
URL:
http://svn.reactos.org/svn/reactos?rev=68537&view=rev
Log:
[VBSCRIPT_WINETEST] Sync with Wine Staging 1.7.47. CORE-9924
Modified:
trunk/rostests/winetests/vbscript/api.vbs
trunk/rostests/winetests/vbscript/regexp.vbs
trunk/rostests/winetests/vbscript/run.c
Modified: trunk/rostests/winetests/vbscript/api.vbs
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/vbscript/api.vb…
==============================================================================
--- trunk/rostests/winetests/vbscript/api.vbs [iso-8859-1] (original)
+++ trunk/rostests/winetests/vbscript/api.vbs [iso-8859-1] Wed Jul 22 00:40:02 2015
@@ -233,9 +233,60 @@
TestHex -16, "FFF0"
TestHex -934859845, "C8472BBB"
TestHex empty, "0"
+TestHex "17", "11"
+TestHex 228.5, "E4"
+TestHex -32767, "8001"
+TestHex -32768, "FFFF8000"
+TestHex 2147483647.49, "7FFFFFFF"
+TestHex -2147483647.5, "80000000"
+newObject.myval = 30.5
+TestHex newObject, "1E"
+newObject.myval = "27"
+TestHex newObject, "1B"
+
Call ok(getVT(hex(null)) = "VT_NULL", "getVT(hex(null)) = " &
getVT(hex(null)))
Call ok(getVT(hex(empty)) = "VT_BSTR", "getVT(hex(empty)) = " &
getVT(hex(empty)))
+
+Sub TestHexError(num, err_num)
+ On Error Resume Next
+ Call Hex(num)
+ Call ok(Err.number = err_num, "Hex(" & num & ") returns error
number " & Err.number & " expected " & err_num)
+End Sub
+
+TestHexError 2147483647.5, 6
+TestHexError 2147483648.51, 6
+TestHexError "test", 13
+
+Sub TestOct(x, ex, res_type)
+ Call ok(Oct(x) = ex, "Oct(" & x & ") = " & Oct(x)
& " expected " & ex)
+ Call ok(getVT(Oct(x)) = res_type, "getVT(Oct(" &x & ")) =
" & getVT(Oct(x)) & "expected " & res_type)
+End Sub
+
+Sub TestOctError(num, err_num)
+ On error resume next
+ Call Oct(num)
+ Call ok(Err.number = err_num, "Oct(" & num & ") error number
is " & Err.number & " expected " & err_num)
+End Sub
+
+TestOct empty, "0", "VT_BSTR"
+TestOct 0, "0", "VT_BSTR"
+TestOct 9, "11", "VT_BSTR"
+TestOct "9", "11", "VT_BSTR"
+TestOct 8.5, "10", "VT_BSTR"
+TestOct 9.5, "12", "VT_BSTR"
+TestOct -1, "177777", "VT_BSTR"
+TestOct -32767, "100001", "VT_BSTR"
+TestOct -32768, "37777700000", "VT_BSTR"
+TestOct 2147483647.49, "17777777777", "VT_BSTR"
+TestOct -2147483648.5, "20000000000", "VT_BSTR"
+Call ok(getVT(Oct(null)) = "VT_NULL", "getVT(Oct(null)) = " &
getVT(Oct(null)))
+newObject.myval = 5
+TestOct newObject, "5", "VT_BSTR"
+
+TestOctError 2147483647.5, 6
+TestOctError -2147483648.51, 6
+TestOctError "test", 13
x = InStr(1, "abcd", "bc")
Call ok(x = 2, "InStr returned " & x)
Modified: trunk/rostests/winetests/vbscript/regexp.vbs
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/vbscript/regexp…
==============================================================================
--- trunk/rostests/winetests/vbscript/regexp.vbs [iso-8859-1] (original)
+++ trunk/rostests/winetests/vbscript/regexp.vbs [iso-8859-1] Wed Jul 22 00:40:02 2015
@@ -174,4 +174,21 @@
Call ok(x.Global = false, "RegExp.Global = " & x.Global)
Call ok(x.Multiline = false, "RegExp.Multiline = " & x.Multiline)
+set matches = x.execute("test")
+Call ok(matches.Count = 1, "matches.Count = " & matches.Count)
+x.pattern = ""
+set matches = x.execute("test")
+Call ok(matches.Count = 1, "matches.Count = " & matches.Count)
+set match = matches.item(0)
+Call ok(match.Value = "", "match.Value = " & match.Value)
+x.global = true
+set matches = x.execute("test")
+Call ok(matches.Count = 5, "matches.Count = " & matches.Count)
+set match = matches.item(0)
+Call ok(match.Value = "", "match.Value = " & match.Value)
+set match = matches.item(4)
+Call ok(match.Value = "", "match.Value = " & match.Value)
+matches = x.test("test")
+Call ok(matches = true, "matches = " & matches)
+
Call reportSuccess()
Modified: trunk/rostests/winetests/vbscript/run.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/vbscript/run.c?…
==============================================================================
--- trunk/rostests/winetests/vbscript/run.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/vbscript/run.c [iso-8859-1] Wed Jul 22 00:40:02 2015
@@ -90,6 +90,8 @@
DEFINE_EXPECT(global_success_i);
DEFINE_EXPECT(global_vbvar_d);
DEFINE_EXPECT(global_vbvar_i);
+DEFINE_EXPECT(global_letobj_i);
+DEFINE_EXPECT(global_setobj_i);
DEFINE_EXPECT(testobj_propget_d);
DEFINE_EXPECT(testobj_propget_i);
DEFINE_EXPECT(testobj_propput_d);
@@ -124,6 +126,8 @@
#define DISPID_GLOBAL_TESTARRAY 1015
#define DISPID_GLOBAL_THROWINT 1016
#define DISPID_GLOBAL_TESTOPTIONALARG 1017
+#define DISPID_GLOBAL_LETOBJ 1018
+#define DISPID_GLOBAL_SETOBJ 1019
#define DISPID_TESTOBJ_PROPGET 2000
#define DISPID_TESTOBJ_PROPPUT 2001
@@ -140,6 +144,7 @@
static const char *test_name = "(null)";
static int test_counter;
static SCRIPTUICHANDLING uic_handling = SCRIPTUICHANDLING_NOUIERROR;
+static IDispatchEx testObj;
static BSTR a2bstr(const char *str)
{
@@ -340,9 +345,60 @@
ok(hres == DISP_E_MEMBERNOTFOUND, "InvokeEx failed: %08x, expected
DISP_E_MEMBERNOTFOUND\n", hres);
ok(V_VT(&v) == VT_EMPTY, "V_VT(v) = %d\n", V_VT(&v));
+ SET_EXPECT(testobj_value_i);
+ V_VT(args) = VT_DISPATCH;
+ V_DISPATCH(args) = (IDispatch*)&testObj;
+ dp.cArgs = dp.cNamedArgs = 1;
+ hres = IDispatchEx_InvokeEx(dispex, public_prop_id, 0, DISPATCH_PROPERTYPUT, &dp,
NULL, &ei, NULL);
+ ok(hres == S_OK, "InvokeEx failed: %08x\n", hres);
+ CHECK_CALLED(testobj_value_i);
+
+ dp.cArgs = dp.cNamedArgs = 0;
+ hres = IDispatchEx_InvokeEx(dispex, public_prop_id, 0, DISPATCH_PROPERTYGET, &dp,
&v, &ei, NULL);
+ ok(hres == S_OK, "InvokeEx failed: %08x\n", hres);
+ ok(V_VT(&v) == VT_I2, "V_VT(v) = %d\n", V_VT(&v));
+ ok(V_I2(&v) == 0, "V_I2(v) = %d\n", V_I2(&v));
+
+ V_VT(args) = VT_DISPATCH;
+ V_DISPATCH(args) = (IDispatch*)&testObj;
+ dp.cArgs = dp.cNamedArgs = 1;
+ hres = IDispatchEx_InvokeEx(dispex, public_prop_id, 0,
DISPATCH_PROPERTYPUT|DISPATCH_PROPERTYPUTREF, &dp, NULL, &ei, NULL);
+ ok(hres == S_OK, "InvokeEx failed: %08x\n", hres);
+
+ V_VT(args) = VT_DISPATCH;
+ V_DISPATCH(args) = (IDispatch*)&testObj;
+ dp.cArgs = dp.cNamedArgs = 1;
+ hres = IDispatchEx_InvokeEx(dispex, public_prop_id, 0, DISPATCH_PROPERTYPUTREF,
&dp, NULL, &ei, NULL);
+ ok(hres == S_OK, "InvokeEx failed: %08x\n", hres);
+
+ dp.cArgs = dp.cNamedArgs = 0;
+ hres = IDispatchEx_InvokeEx(dispex, public_prop_id, 0, DISPATCH_PROPERTYGET, &dp,
&v, &ei, NULL);
+ ok(hres == S_OK, "InvokeEx failed: %08x\n", hres);
+ ok(V_VT(&v) == VT_DISPATCH, "V_VT(v) = %d\n", V_VT(&v));
+ ok(V_DISPATCH(&v) == (IDispatch*)&testObj, "V_DISPATCH(v) !=
testObj\n");
+
+ V_VT(args) = VT_BOOL;
+ V_BOOL(args) = VARIANT_TRUE;
+ dp.cArgs = dp.cNamedArgs = 1;
+ hres = IDispatchEx_InvokeEx(dispex, public_prop_id, 0,
DISPATCH_PROPERTYPUT|DISPATCH_PROPERTYPUTREF, &dp, NULL, &ei, NULL);
+ ok(hres == S_OK, "InvokeEx failed: %08x\n", hres);
+
+ dp.cArgs = dp.cNamedArgs = 0;
+ hres = IDispatchEx_InvokeEx(dispex, public_prop_id, 0, DISPATCH_PROPERTYGET, &dp,
&v, &ei, NULL);
+ ok(hres == S_OK, "InvokeEx failed: %08x\n", hres);
+ ok(V_VT(&v) == VT_BOOL, "V_VT(v) = %d\n", V_VT(&v));
+ ok(V_BOOL(&v) == VARIANT_TRUE, "V_BOOL(v) = %x\n", V_BOOL(&v));
+
+ V_VT(args) = VT_BOOL;
+ V_BOOL(args) = VARIANT_FALSE;
+ dp.cArgs = dp.cNamedArgs = 1;
+ hres = IDispatchEx_InvokeEx(dispex, public_prop_id, 0, DISPATCH_PROPERTYPUTREF,
&dp, NULL, &ei, NULL);
+ ok(hres == DISP_E_EXCEPTION, "InvokeEx failed: %08x, expected
DISP_E_EXCEPTION\n", hres);
+
V_VT(args) = VT_BOOL;
V_BOOL(args) = VARIANT_FALSE;
dp.cArgs = 1;
+ dp.cNamedArgs = 0;
V_VT(&v) = VT_BOOL;
hres = IDispatchEx_InvokeEx(dispex, public_prop_id, 0, DISPATCH_PROPERTYPUT, &dp,
NULL, &ei, NULL);
ok(hres == DISP_E_PARAMNOTOPTIONAL, "InvokeEx failed: %08x, expected
DISP_E_PARAMNOTOPTIONAL\n", hres);
@@ -969,6 +1025,16 @@
*pid = DISPID_GLOBAL_VBVAR;
return S_OK;
}
+ if(!strcmp_wa(bstrName, "letobj")) {
+ test_grfdex(grfdex, fdexNameCaseInsensitive);
+ *pid = DISPID_GLOBAL_LETOBJ;
+ return S_OK;
+ }
+ if(!strcmp_wa(bstrName, "setobj")) {
+ test_grfdex(grfdex, fdexNameCaseInsensitive);
+ *pid = DISPID_GLOBAL_SETOBJ;
+ return S_OK;
+ }
if(!strcmp_wa(bstrName, "isNullDisp")) {
test_grfdex(grfdex, fdexNameCaseInsensitive);
*pid = DISPID_GLOBAL_ISNULLDISP;
@@ -1129,6 +1195,40 @@
ok(V_VT(pdp->rgvarg) == VT_I2, "V_VT(psp->rgvargs) = %d\n",
V_VT(pdp->rgvarg));
ok(V_I2(pdp->rgvarg) == 3, "V_I2(psp->rgvargs) = %d\n",
V_I2(pdp->rgvarg));
+ return S_OK;
+
+ case DISPID_GLOBAL_LETOBJ:
+ CHECK_EXPECT(global_letobj_i);
+
+ ok(wFlags == DISPATCH_PROPERTYPUT, "wFlags = %x\n", wFlags);
+ ok(pdp != NULL, "pdp == NULL\n");
+ ok(pdp->rgvarg != NULL, "rgvarg == NULL\n");
+ ok(pdp->rgdispidNamedArgs != NULL, "rgdispidNamedArgs == NULL\n");
+ ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs);
+ ok(pdp->cNamedArgs == 1, "cNamedArgs = %d\n", pdp->cNamedArgs);
+ ok(pdp->rgdispidNamedArgs[0] == DISPID_PROPERTYPUT,
"pdp->rgdispidNamedArgs[0] = %d\n", pdp->rgdispidNamedArgs[0]);
+ ok(!pvarRes, "pvarRes != NULL\n");
+ ok(pei != NULL, "pei == NULL\n");
+
+ ok(V_VT(pdp->rgvarg) == VT_DISPATCH, "V_VT(psp->rgvargs) = %d\n",
V_VT(pdp->rgvarg));
+ ok(V_DISPATCH(pdp->rgvarg) == (IDispatch*)&testObj,
"V_DISPATCH(psp->rgvargs) != testObj\n");
+ return S_OK;
+
+ case DISPID_GLOBAL_SETOBJ:
+ CHECK_EXPECT(global_setobj_i);
+
+ ok(wFlags == DISPATCH_PROPERTYPUTREF, "wFlags = %x\n", wFlags);
+ ok(pdp != NULL, "pdp == NULL\n");
+ ok(pdp->rgvarg != NULL, "rgvarg == NULL\n");
+ ok(pdp->rgdispidNamedArgs != NULL, "rgdispidNamedArgs == NULL\n");
+ ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs);
+ ok(pdp->cNamedArgs == 1, "cNamedArgs = %d\n", pdp->cNamedArgs);
+ ok(pdp->rgdispidNamedArgs[0] == DISPID_PROPERTYPUT,
"pdp->rgdispidNamedArgs[0] = %d\n", pdp->rgdispidNamedArgs[0]);
+ ok(!pvarRes, "pvarRes != NULL\n");
+ ok(pei != NULL, "pei == NULL\n");
+
+ ok(V_VT(pdp->rgvarg) == VT_DISPATCH, "V_VT(psp->rgvargs) = %d\n",
V_VT(pdp->rgvarg));
+ ok(V_DISPATCH(pdp->rgvarg) == (IDispatch*)&testObj,
"V_DISPATCH(psp->rgvargs) != testObj\n");
return S_OK;
case DISPID_GLOBAL_TESTOBJ:
@@ -2034,6 +2134,22 @@
CHECK_CALLED(global_vbvar_d);
CHECK_CALLED(global_vbvar_i);
+ SET_EXPECT(global_letobj_i);
+ parse_script_a("Option Explicit\nletobj = testObj");
+ CHECK_CALLED(global_letobj_i);
+
+ SET_EXPECT(global_letobj_i);
+ parse_script_a("Option Explicit\ntest.letobj = testObj");
+ CHECK_CALLED(global_letobj_i);
+
+ SET_EXPECT(global_setobj_i);
+ parse_script_a("Option Explicit\nset setobj = testObj");
+ CHECK_CALLED(global_setobj_i);
+
+ SET_EXPECT(global_setobj_i);
+ parse_script_a("Option Explicit\nset test.setobj = testObj");
+ CHECK_CALLED(global_setobj_i);
+
SET_EXPECT(testobj_propget_d);
SET_EXPECT(testobj_propget_i);
parse_script_a("dim x\nx = testObj.propget");