Jacek Caban : mshtml: Added IHTMLDOMNode2::get_ownerDocument tests.
Alexandre Julliard
julliard at winehq.org
Tue Sep 22 13:55:08 CDT 2009
Module: wine
Branch: master
Commit: 5d281947caded174507aab026635653ef109d60f
URL: http://source.winehq.org/git/wine.git/?a=commit;h=5d281947caded174507aab026635653ef109d60f
Author: Jacek Caban <jacek at codeweavers.com>
Date: Sun Sep 20 19:00:23 2009 +0200
mshtml: Added IHTMLDOMNode2::get_ownerDocument tests.
Also fixes typo in iface_cmp.
---
dlls/mshtml/tests/dom.c | 63 +++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 61 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index d6747d2..604ead5 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -412,7 +412,7 @@ static BOOL iface_cmp(IUnknown *iface1, IUnknown *iface2)
IUnknown_QueryInterface(iface1, &IID_IUnknown, (void**)&unk1);
IUnknown_Release(unk1);
- IUnknown_QueryInterface(iface1, &IID_IUnknown, (void**)&unk2);
+ IUnknown_QueryInterface(iface2, &IID_IUnknown, (void**)&unk2);
IUnknown_Release(unk2);
return unk1 == unk2;
@@ -584,6 +584,17 @@ static IHTMLDOMNode *_get_node_iface(unsigned line, IUnknown *unk)
return node;
}
+#define get_node2_iface(u) _get_node2_iface(__LINE__,u)
+static IHTMLDOMNode2 *_get_node2_iface(unsigned line, IUnknown *unk)
+{
+ IHTMLDOMNode2 *node;
+ HRESULT hres;
+
+ hres = IUnknown_QueryInterface(unk, &IID_IHTMLDOMNode2, (void**)&node);
+ ok_(__FILE__,line) (hres == S_OK, "Could not get IHTMLDOMNode2: %08x\n", hres);
+ return node;
+}
+
#define get_img_iface(u) _get_img_iface(__LINE__,u)
static IHTMLImgElement *_get_img_iface(unsigned line, IUnknown *unk)
{
@@ -610,6 +621,26 @@ static void _test_node_name(unsigned line, IUnknown *unk, const char *exname)
SysFreeString(name);
}
+#define get_owner_doc(u) _get_owner_doc(__LINE__,u)
+static IHTMLDocument2 *_get_owner_doc(unsigned line, IUnknown *unk)
+{
+ IHTMLDOMNode2 *node = _get_node2_iface(line, unk);
+ IDispatch *disp = (void*)0xdeadbeef;
+ IHTMLDocument2 *doc;
+ HRESULT hres;
+
+ hres = IHTMLDOMNode2_get_ownerDocument(node, &disp);
+ IHTMLDOMNode2_Release(node);
+ ok_(__FILE__,line)(hres == S_OK, "get_ownerDocument failed: %08x\n", hres);
+ ok_(__FILE__,line)(disp != NULL, "disp = NULL\n");
+
+ hres = IDispatch_QueryInterface(disp, &IID_IHTMLDocument2, (void**)&doc);
+ IDispatch_Release(disp);
+ ok_(__FILE__,line)(hres == S_OK, "Could not get IHTMLDocument2 iface: %08x\n", hres);
+
+ return doc;
+}
+
#define test_elem_tag(u,n) _test_elem_tag(__LINE__,u,n)
static void _test_elem_tag(unsigned line, IUnknown *unk, const char *extag)
{
@@ -730,8 +761,26 @@ static void _test_elem_offset(unsigned line, IUnknown *unk)
IHTMLElement_Release(elem);
}
+#define get_doc_node(d) _get_doc_node(__LINE__,d)
+static IHTMLDocument2 *_get_doc_node(unsigned line, IHTMLDocument2 *doc)
+{
+ IHTMLWindow2 *window;
+ IHTMLDocument2 *ret;
+ HRESULT hres;
+
+ hres = IHTMLDocument2_get_parentWindow(doc, &window);
+ ok_(__FILE__,line)(hres == S_OK, "get_parentWindow failed: %08x\n", hres);
+
+ hres = IHTMLWindow2_get_document(window, &ret);
+ ok_(__FILE__,line)(hres == S_OK, "get_document failed: %08x\n", hres);
+ ok_(__FILE__,line)(ret != NULL, "document = NULL\n");
+
+ return ret;
+}
+
static void test_doc_elem(IHTMLDocument2 *doc)
{
+ IHTMLDocument2 *doc_node, *owner_doc;
IHTMLElement *elem;
IHTMLDocument3 *doc3;
HRESULT hres;
@@ -746,6 +795,12 @@ static void test_doc_elem(IHTMLDocument2 *doc)
test_node_name((IUnknown*)elem, "HTML");
test_elem_tag((IUnknown*)elem, "HTML");
+ doc_node = get_doc_node(doc);
+ owner_doc = get_owner_doc((IUnknown*)elem);
+ ok(iface_cmp((IUnknown *)doc_node, (IUnknown *)owner_doc), "doc_node != owner_doc\n");
+ IHTMLDocument2_Release(doc_node);
+ IHTMLDocument2_Release(owner_doc);
+
IHTMLElement_Release(elem);
}
@@ -4659,6 +4714,7 @@ static void test_elems(IHTMLDocument2 *doc)
elem = get_elem_by_id(doc, "s", TRUE);
if(elem) {
IHTMLSelectElement *select;
+ IHTMLDocument2 *doc_node;
hres = IHTMLElement_QueryInterface(elem, &IID_IHTMLSelectElement, (void**)&select);
ok(hres == S_OK, "Could not get IHTMLSelectElement interface: %08x\n", hres);
@@ -4684,7 +4740,10 @@ static void test_elems(IHTMLDocument2 *doc)
hres = IHTMLElement_get_document(elem, &disp);
ok(hres == S_OK, "get_document failed: %08x\n", hres);
- ok(iface_cmp((IUnknown*)disp, (IUnknown*)doc), "disp != doc\n");
+
+ doc_node = get_doc_node(doc);
+ ok(iface_cmp((IUnknown*)disp, (IUnknown*)doc_node), "disp != doc\n");
+ IHTMLDocument2_Release(doc_node);
IHTMLElement_Release(elem);
}
More information about the wine-cvs
mailing list