From 2518b8f31b9d42c2bc5b2d3ddbecdd4953835eee Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Mon, 21 Apr 2014 13:48:55 +0200 Subject: [PATCH] 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 23677f42ccf..65ca1d3fa58 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 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;