mshtml: Added parser compatMode tests.

This commit is contained in:
Jacek Caban 2013-04-12 15:07:17 +02:00 committed by Alexandre Julliard
parent 3f39f69f41
commit c54a989430
1 changed files with 40 additions and 16 deletions

View File

@ -781,6 +781,17 @@ static IHTMLDOMNode2 *_get_node2_iface(unsigned line, IUnknown *unk)
return node; return node;
} }
#define get_htmldoc5_iface(u) _get_htmldoc5_iface(__LINE__,u)
static IHTMLDocument5 *_get_htmldoc5_iface(unsigned line, IUnknown *unk)
{
IHTMLDocument5 *doc;
HRESULT hres;
hres = IUnknown_QueryInterface(unk, &IID_IHTMLDocument5, (void**)&doc);
ok_(__FILE__,line) (hres == S_OK, "Could not get IHTMLDocument5: %08x\n", hres);
return doc;
}
#define get_img_iface(u) _get_img_iface(__LINE__,u) #define get_img_iface(u) _get_img_iface(__LINE__,u)
static IHTMLImgElement *_get_img_iface(unsigned line, IUnknown *unk) static IHTMLImgElement *_get_img_iface(unsigned line, IUnknown *unk)
{ {
@ -4478,22 +4489,18 @@ static void test_txtrange2(IHTMLDocument2 *doc)
IHTMLTxtRange_Release(range); IHTMLTxtRange_Release(range);
} }
static void test_compatmode(IHTMLDocument2 *doc) #define test_compatmode(a,b) _test_compatmode(__LINE__,a,b)
static void _test_compatmode(unsigned line, IHTMLDocument2 *doc2, const char *excompat)
{ {
IHTMLDocument5 *doc5; IHTMLDocument5 *doc = get_htmldoc5_iface((IUnknown*)doc2);
BSTR mode; BSTR str;
HRESULT hres; HRESULT hres;
hres = IHTMLDocument2_QueryInterface(doc, &IID_IHTMLDocument5, (void**)&doc5); hres = IHTMLDocument5_get_compatMode(doc, &str);
ok(hres == S_OK, "Could not get IHTMLDocument5 interface: %08x\n", hres); ok_(__FILE__,line)(hres == S_OK, "get_compatMode failed: %08x\n", hres);
if(FAILED(hres)) ok_(__FILE__,line)(!strcmp_wa(str, excompat), "compatMode = %s, expected %s\n", wine_dbgstr_w(str), excompat);
return;
hres = IHTMLDocument5_get_compatMode(doc5, &mode); IHTMLDocument5_Release(doc);
IHTMLDocument5_Release(doc5);
ok(hres == S_OK, "get_compatMode failed: %08x\n", hres);
ok(!strcmp_wa(mode, "BackCompat"), "compatMode=%s\n", wine_dbgstr_w(mode));
SysFreeString(mode);
} }
static void test_location(IHTMLDocument2 *doc) static void test_location(IHTMLDocument2 *doc)
@ -5313,7 +5320,7 @@ static void test_defaults(IHTMLDocument2 *doc)
SysFreeString(str); SysFreeString(str);
test_window(doc); test_window(doc);
test_compatmode(doc); test_compatmode(doc, "BackCompat");
test_location(doc); test_location(doc);
test_navigator(doc); test_navigator(doc);
test_plugins_col(doc); test_plugins_col(doc);
@ -6652,9 +6659,8 @@ static void test_create_elems(IHTMLDocument2 *doc)
test_elem_innertext(body, "insert test Test"); test_elem_innertext(body, "insert test Test");
IHTMLDOMNode_Release(node); IHTMLDOMNode_Release(node);
hres = IHTMLDocument2_QueryInterface(doc, &IID_IHTMLDocument5, (void**)&doc5); doc5 = get_htmldoc5_iface((IUnknown*)doc);
if(hres == S_OK) if(doc5) {
{
str = a2bstr("testing"); str = a2bstr("testing");
hres = IHTMLDocument5_createComment(doc5, str, &comment); hres = IHTMLDocument5_createComment(doc5, str, &comment);
SysFreeString(str); SysFreeString(str);
@ -7168,6 +7174,16 @@ static void test_docfrag(IHTMLDocument2 *doc)
IHTMLDocument2_Release(frag); IHTMLDocument2_Release(frag);
} }
static void check_quirks_mode(IHTMLDocument2 *doc)
{
test_compatmode(doc, "BackCompat");
}
static void check_strict_mode(IHTMLDocument2 *doc)
{
test_compatmode(doc, "CSS1Compat");
}
static IHTMLDocument2 *notif_doc; static IHTMLDocument2 *notif_doc;
static BOOL doc_complete; static BOOL doc_complete;
@ -7299,6 +7315,12 @@ static void run_domtest(const char *str, domtest_t test)
"ref = %d\n", ref); "ref = %d\n", ref);
} }
static void test_quirks_mode(void)
{
run_domtest("<html></html>", check_quirks_mode);
run_domtest("<!DOCTYPE html>\n<html></html>", check_strict_mode);
}
START_TEST(dom) START_TEST(dom)
{ {
HMODULE hkernel32 = GetModuleHandleA("kernel32.dll"); HMODULE hkernel32 = GetModuleHandleA("kernel32.dll");
@ -7329,5 +7351,7 @@ START_TEST(dom)
run_domtest(doc_blank, test_replacechild_elems); run_domtest(doc_blank, test_replacechild_elems);
run_domtest(doctype_str, test_doctype); run_domtest(doctype_str, test_doctype);
test_quirks_mode();
CoUninitialize(); CoUninitialize();
} }