Jacek Caban : jscript: Added VT_I2 tests.

Alexandre Julliard julliard at winehq.org
Tue May 1 13:12:14 CDT 2012


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue May  1 15:05:21 2012 +0200

jscript: Added VT_I2 tests.

---

 dlls/jscript/jsutils.c   |    4 +++
 dlls/jscript/tests/run.c |   56 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 60 insertions(+), 0 deletions(-)

diff --git a/dlls/jscript/jsutils.c b/dlls/jscript/jsutils.c
index 4773fc9..5e7e347 100644
--- a/dlls/jscript/jsutils.c
+++ b/dlls/jscript/jsutils.c
@@ -262,6 +262,8 @@ HRESULT to_primitive(script_ctx_t *ctx, VARIANT *v, jsexcept_t *ei, VARIANT *ret
         WARN("failed\n");
         return throw_type_error(ctx, ei, JS_E_TO_PRIMITIVE, NULL);
     }
+    case VT_I2:
+        assert(0);
     default:
         FIXME("Unimplemented for vt %d\n", V_VT(v));
         return E_NOTIMPL;
@@ -444,6 +446,8 @@ HRESULT to_number(script_ctx_t *ctx, VARIANT *v, jsexcept_t *ei, double *ret)
     case VT_BOOL:
         *ret = V_BOOL(v) ? 1 : 0;
         break;
+    case VT_I2:
+        assert(0);
     default:
         FIXME("unimplemented for vt %d\n", V_VT(v));
         return E_NOTIMPL;
diff --git a/dlls/jscript/tests/run.c b/dlls/jscript/tests/run.c
index c4dfd1d..332b125 100644
--- a/dlls/jscript/tests/run.c
+++ b/dlls/jscript/tests/run.c
@@ -66,6 +66,7 @@ DEFINE_EXPECT(global_success_i);
 DEFINE_EXPECT(global_notexists_d);
 DEFINE_EXPECT(global_propargput_d);
 DEFINE_EXPECT(global_propargput_i);
+DEFINE_EXPECT(global_testargtypes_i);
 DEFINE_EXPECT(puredisp_prop_d);
 DEFINE_EXPECT(puredisp_noprop_d);
 DEFINE_EXPECT(testobj_delete);
@@ -99,6 +100,9 @@ DEFINE_EXPECT(DeleteMemberByDispID);
 #define DISPID_GLOBAL_TESTPROPDELETE  0x1010
 #define DISPID_GLOBAL_ISNULLBSTR    0x1011
 #define DISPID_GLOBAL_PROPARGPUT    0x1012
+#define DISPID_GLOBAL_SHORTPROP     0x1013
+#define DISPID_GLOBAL_GETSHORT      0x1014
+#define DISPID_GLOBAL_TESTARGTYPES  0x1015
 
 #define DISPID_TESTOBJ_PROP         0x2000
 #define DISPID_TESTOBJ_ONLYDISPID   0x2001
@@ -519,6 +523,21 @@ static HRESULT WINAPI Global_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD
         return S_OK;
     }
 
+    if(!strcmp_wa(bstrName, "shortProp")) {
+        *pid = DISPID_GLOBAL_SHORTPROP;
+        return S_OK;
+    }
+
+    if(!strcmp_wa(bstrName, "getShort")) {
+        *pid = DISPID_GLOBAL_GETSHORT;
+        return S_OK;
+    }
+
+    if(!strcmp_wa(bstrName, "testArgTypes")) {
+        *pid = DISPID_GLOBAL_TESTARGTYPES;
+        return S_OK;
+    }
+
     if(strict_dispid_check && strcmp_wa(bstrName, "t"))
         ok(0, "unexpected call %s\n", wine_dbgstr_w(bstrName));
     return DISP_E_UNKNOWNNAME;
@@ -903,6 +922,39 @@ static HRESULT WINAPI Global_InvokeEx(IDispatchEx *iface, DISPID id, LCID lcid,
         IDispatchEx_Release(dispex);
         return S_OK;
     }
+    case DISPID_GLOBAL_SHORTPROP:
+    case DISPID_GLOBAL_GETSHORT:
+        V_VT(pvarRes) = VT_I2;
+        V_I2(pvarRes) = 10;
+        return S_OK;
+
+    case DISPID_GLOBAL_TESTARGTYPES: {
+        VARIANT args[1];
+        DISPPARAMS dp = {args, NULL, 1, 0};
+        HRESULT hres;
+
+        CHECK_EXPECT(global_testargtypes_i);
+        ok(wFlags == DISPATCH_METHOD, "wFlags = %x\n", wFlags);
+        ok(pdp != NULL, "pdp == NULL\n");
+        ok(pdp->rgvarg != NULL, "rgvarg != NULL\n");
+        ok(pdp->cArgs == 3, "cArgs = %d\n", pdp->cArgs);
+        ok(!pvarRes, "pvarRes != NULL\n");
+
+        ok(V_VT(pdp->rgvarg+1) == VT_I4, "V_VT(psp->rgvargs+1) = %d\n", V_VT(pdp->rgvarg));
+        ok(V_I4(pdp->rgvarg+1) == 10, "V_I4(psp->rgvargs+1) = %d\n", V_I4(pdp->rgvarg));
+
+        ok(V_VT(pdp->rgvarg+2) == VT_I4, "V_VT(psp->rgvargs+2) = %d\n", V_VT(pdp->rgvarg+1));
+        ok(V_I4(pdp->rgvarg+2) == 10, "V_I4(psp->rgvargs+2) = %d\n", V_I4(pdp->rgvarg+1));
+
+        ok(V_VT(pdp->rgvarg) == VT_DISPATCH, "V_VT(psp->rgvargs) = %d\n", V_VT(pdp->rgvarg));
+
+        V_VT(args) = VT_I2;
+        V_I2(args) = 2;
+        hres = IDispatch_Invoke(V_DISPATCH(pdp->rgvarg), DISPID_VALUE, &IID_NULL, 0, DISPATCH_METHOD, &dp, NULL, NULL, NULL);
+        ok(hres == S_OK, "Invoke failed: %08x\n", hres);
+
+        return S_OK;
+    }
     }
 
     ok(0, "unexpected call %x\n", id);
@@ -1659,6 +1711,10 @@ static BOOL run_tests(void)
     CHECK_CALLED(global_propargput_d);
     CHECK_CALLED(global_propargput_i);
 
+    SET_EXPECT(global_testargtypes_i);
+    parse_script_a("testArgTypes(getShort(), shortProp, function(s) {ok(getVT(s) === 'VT_I4', 'not VT_I4');});");
+    CHECK_CALLED(global_testargtypes_i);
+
     run_from_res("lang.js");
     run_from_res("api.js");
     run_from_res("regexp.js");




More information about the wine-cvs mailing list