Module: wine Branch: master Commit: c9e5181ff3f17086e911c14a7950173f6b106375 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c9e5181ff3f17086e911c14a79...
Author: Jacek Caban jacek@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);