Jacek Caban : mshtml: Added IHTMLElementCollection::get__newEnum tests.

Alexandre Julliard julliard at winehq.org
Mon Apr 21 12:36:55 CDT 2014


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Apr 21 13:48:55 2014 +0200

mshtml: Added IHTMLElementCollection::get__newEnum tests.

---

 dlls/mshtml/tests/dom.c |   56 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 55 insertions(+), 1 deletion(-)

diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index 23677f4..65ca1d3 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -2108,9 +2108,12 @@ static void _test_elem_collection(unsigned line, IUnknown *unk,
         const elem_type_t *elem_types, LONG exlen)
 {
     IHTMLElementCollection *col;
+    IEnumVARIANT *enum_var;
+    IUnknown *enum_unk;
+    ULONG fetched;
     LONG len;
     DWORD i;
-    VARIANT name, index;
+    VARIANT name, index, v, vs[5];
     IDispatch *disp, *disp2;
     HRESULT hres;
 
@@ -2128,6 +2131,13 @@ static void _test_elem_collection(unsigned line, IUnknown *unk,
 
     V_VT(&index) = VT_EMPTY;
 
+    hres = IHTMLElementCollection_get__newEnum(col, &enum_unk);
+    ok_(__FILE__,line)(hres == S_OK, "_newEnum failed: %08x\n", hres);
+
+    hres = IUnknown_QueryInterface(enum_unk, &IID_IEnumVARIANT, (void**)&enum_var);
+    IUnknown_Release(enum_unk);
+    ok_(__FILE__,line)(hres == S_OK, "Could not get IEnumVARIANT iface: %08x\n", hres);
+
     for(i=0; i<len; i++) {
         V_VT(&name) = VT_I4;
         V_I4(&name) = i;
@@ -2151,9 +2161,53 @@ static void _test_elem_collection(unsigned line, IUnknown *unk,
                 IDispatch_Release(disp2);
         }
 
+        fetched = 0;
+        V_VT(&v) = VT_ERROR;
+        hres = IEnumVARIANT_Next(enum_var, 1, &v, &fetched);
+        ok_(__FILE__,line)(hres == S_OK, "Next failed: %08x\n", hres);
+        ok_(__FILE__,line)(fetched == 1, "fetched = %d\n", fetched);
+        ok_(__FILE__,line)(V_VT(&v) == VT_DISPATCH && V_DISPATCH(&v), "V_VT(v) = %d\n", V_VT(&v));
+        ok_(__FILE__,line)(iface_cmp((IUnknown*)disp, (IUnknown*)V_DISPATCH(&v)), "disp != V_DISPATCH(v)\n");
+        IDispatch_Release(V_DISPATCH(&v));
+
         IDispatch_Release(disp);
     }
 
+    fetched = 0xdeadbeef;
+    V_VT(&v) = VT_BOOL;
+    hres = IEnumVARIANT_Next(enum_var, 1, &v, &fetched);
+    ok_(__FILE__,line)(hres == S_FALSE, "Next returned %08x, expected S_FALSE\n", hres);
+    ok_(__FILE__,line)(fetched == 0, "fetched = %d\n", fetched);
+    ok_(__FILE__,line)(V_VT(&v) == VT_BOOL, "V_VT(v) = %d\n", V_VT(&v));
+
+    hres = IEnumVARIANT_Reset(enum_var);
+    ok_(__FILE__,line)(hres == S_OK, "Reset failed: %08x\n", hres);
+
+    hres = IEnumVARIANT_Skip(enum_var, len > 2 ? len-2 : 0);
+    ok_(__FILE__,line)(hres == S_OK, "Skip failed: %08x\n", hres);
+
+    memset(vs, 0, sizeof(vs));
+    fetched = 0;
+    hres = IEnumVARIANT_Next(enum_var, sizeof(vs)/sizeof(*vs), vs, &fetched);
+    ok_(__FILE__,line)(hres == S_FALSE, "Next failed: %08x\n", hres);
+    ok_(__FILE__,line)(fetched == (len > 2 ? 2 : len), "fetched = %d\n", fetched);
+    if(len) {
+        ok_(__FILE__,line)(V_VT(vs) == VT_DISPATCH && V_DISPATCH(vs), "V_VT(vs[0]) = %d\n", V_VT(vs));
+        IDispatch_Release(V_DISPATCH(vs));
+    }
+    if(len > 1) {
+        ok_(__FILE__,line)(V_VT(vs+1) == VT_DISPATCH && V_DISPATCH(vs+1), "V_VT(vs[1]) = %d\n", V_VT(vs+1));
+        IDispatch_Release(V_DISPATCH(vs+1));
+    }
+
+    hres = IEnumVARIANT_Reset(enum_var);
+    ok_(__FILE__,line)(hres == S_OK, "Reset failed: %08x\n", hres);
+
+    hres = IEnumVARIANT_Skip(enum_var, len+1);
+    ok_(__FILE__,line)(hres == S_FALSE, "Skip failed: %08x\n", hres);
+
+    IEnumVARIANT_Release(enum_var);
+
     V_VT(&name) = VT_I4;
     V_I4(&name) = len;
     disp = (void*)0xdeadbeef;




More information about the wine-cvs mailing list