Jacek Caban : mshtml: Added createStyleSheet and get_styleSheet tests.

Alexandre Julliard julliard at winehq.org
Thu Oct 11 15:25:16 CDT 2012


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Oct 11 14:08:42 2012 +0200

mshtml: Added createStyleSheet and get_styleSheet tests.

---

 dlls/mshtml/tests/dom.c |   92 ++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 87 insertions(+), 5 deletions(-)

diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index 7f1682e..371da77 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -1980,8 +1980,21 @@ static void _test_elem_all(unsigned line, IUnknown *unk, const elem_type_t *elem
     IDispatch_Release(disp);
 }
 
-#define test_elem_getelembytag(u,t,l) _test_elem_getelembytag(__LINE__,u,t,l)
-static void _test_elem_getelembytag(unsigned line, IUnknown *unk, elem_type_t type, LONG exlen)
+#define test_doc_all(a,b,c) _test_doc_all(__LINE__,a,b,c)
+static void _test_doc_all(unsigned line, IHTMLDocument2 *doc, const elem_type_t *elem_types, LONG exlen)
+{
+    IHTMLElementCollection *col;
+    HRESULT hres;
+
+    hres = IHTMLDocument2_get_all(doc, &col);
+    ok_(__FILE__,line)(hres == S_OK, "get_all failed: %08x\n", hres);
+
+    _test_elem_collection(line, (IUnknown*)col, elem_types, exlen);
+    IHTMLElementCollection_Release(col);
+}
+
+#define test_elem_getelembytag(a,b,c,d) _test_elem_getelembytag(__LINE__,a,b,c,d)
+static void _test_elem_getelembytag(unsigned line, IUnknown *unk, elem_type_t type, LONG exlen, IHTMLElement **ret)
 {
     IHTMLElement2 *elem = _get_elem2_iface(line, unk);
     IHTMLElementCollection *col = NULL;
@@ -2006,6 +2019,22 @@ static void _test_elem_getelembytag(unsigned line, IUnknown *unk, elem_type_t ty
     _test_elem_collection(line, (IUnknown*)col, types, exlen);
 
     HeapFree(GetProcessHeap(), 0, types);
+
+    if(ret) {
+        IDispatch *disp;
+        VARIANT v;
+
+        V_VT(&v) = VT_I4;
+        V_I4(&v) = 0;
+        disp = NULL;
+        hres = IHTMLElementCollection_item(col, v, v, &disp);
+        ok(hres == S_OK, "item failed: %08x\n", hres);
+        ok(disp != NULL, "disp == NULL\n");
+        *ret = _get_elem_iface(line, (IUnknown*)disp);
+        IDispatch_Release(disp);
+    }
+
+    IHTMLElementCollection_Release(col);
 }
 
 #define test_elem_innertext(e,t) _test_elem_innertext(__LINE__,e,t)
@@ -5365,9 +5394,9 @@ static void test_elems(IHTMLDocument2 *doc)
         ok(elem2 == NULL, "elem2 != NULL\n");
         IHTMLElement_Release(elem3);
 
-        test_elem_getelembytag((IUnknown*)elem, ET_OPTION, 2);
-        test_elem_getelembytag((IUnknown*)elem, ET_SELECT, 0);
-        test_elem_getelembytag((IUnknown*)elem, ET_HTML, 0);
+        test_elem_getelembytag((IUnknown*)elem, ET_OPTION, 2, NULL);
+        test_elem_getelembytag((IUnknown*)elem, ET_SELECT, 0, NULL);
+        test_elem_getelembytag((IUnknown*)elem, ET_HTML, 0, NULL);
 
         test_elem_innertext(elem, "opt1opt2");
 
@@ -6097,6 +6126,58 @@ static void test_null_write(IHTMLDocument2 *doc)
        "Expected IHTMLDocument2::writeln to return S_OK, got 0x%08x\n", hres);
 }
 
+static void test_create_stylesheet(IHTMLDocument2 *doc)
+{
+    IHTMLStyleSheet *stylesheet, *stylesheet2;
+    IHTMLStyleElement *style_elem;
+    IHTMLElement *doc_elem, *elem;
+    HRESULT hres;
+
+    static const elem_type_t all_types[] = {
+        ET_HTML,
+        ET_HEAD,
+        ET_TITLE,
+        ET_BODY,
+        ET_DIV
+    };
+
+    static const elem_type_t all_types2[] = {
+        ET_HTML,
+        ET_HEAD,
+        ET_TITLE,
+        ET_STYLE,
+        ET_BODY,
+        ET_DIV
+    };
+
+    test_doc_all(doc, all_types, sizeof(all_types)/sizeof(*all_types));
+
+    hres = IHTMLDocument2_createStyleSheet(doc, NULL, -1, &stylesheet);
+    ok(hres == S_OK, "createStyleSheet failed: %08x\n", hres);
+
+    test_doc_all(doc, all_types2, sizeof(all_types2)/sizeof(*all_types2));
+
+    doc_elem = get_doc_elem(doc);
+
+    test_elem_getelembytag((IUnknown*)doc_elem, ET_STYLE, 1, &elem);
+    IHTMLElement_Release(doc_elem);
+
+    hres = IHTMLElement_QueryInterface(elem, &IID_IHTMLStyleElement, (void**)&style_elem);
+    IHTMLElement_Release(elem);
+    ok(hres == S_OK, "Could not get IHTMLStyleElement iface: %08x\n", hres);
+
+    stylesheet2 = NULL;
+    hres = IHTMLStyleElement_get_styleSheet(style_elem, &stylesheet2);
+    ok(hres == S_OK, "get_styleSheet failed: %08x\n", hres);
+    ok(stylesheet2 != NULL, "stylesheet2 == NULL\n");
+    ok(iface_cmp((IUnknown*)stylesheet, (IUnknown*)stylesheet2), "stylesheet != stylesheet2\n");
+
+    IHTMLStyleSheet_Release(stylesheet2);
+    IHTMLStyleSheet_Release(stylesheet);
+
+    IHTMLStyleElement_Release(style_elem);
+}
+
 static void test_exec(IUnknown *unk, const GUID *grpid, DWORD cmdid, VARIANT *in, VARIANT *out)
 {
     IOleCommandTarget *cmdtrg;
@@ -6571,6 +6652,7 @@ START_TEST(dom)
     run_domtest(doc_blank, test_create_elems);
     run_domtest(doc_blank, test_defaults);
     run_domtest(doc_blank, test_null_write);
+    run_domtest(emptydiv_str, test_create_stylesheet);
     run_domtest(indent_test_str, test_indent);
     run_domtest(cond_comment_str, test_cond_comment);
     run_domtest(frameset_str, test_frameset);




More information about the wine-cvs mailing list