mshtml: Added createStyleSheet and get_styleSheet tests.

This commit is contained in:
Jacek Caban 2012-10-11 14:08:42 +02:00 committed by Alexandre Julliard
parent 163970c336
commit c9e5181ff3
1 changed files with 87 additions and 5 deletions

View File

@ -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);