msxml3/tests: Consolidate check for available class versions.

This commit is contained in:
Nikolay Sivov 2013-11-04 14:16:55 +04:00 committed by Alexandre Julliard
parent a14793f50b
commit 61c8a4e6ea
1 changed files with 129 additions and 116 deletions

View File

@ -61,6 +61,88 @@ static const char *debugstr_guid(REFIID riid)
static int g_unexpectedcall, g_expectedcall;
struct msxmlsupported_data_t
{
const GUID *clsid;
const char *name;
const IID *ifaces[3];
BOOL supported[3];
};
static struct msxmlsupported_data_t domdoc_support_data[] =
{
{ &CLSID_DOMDocument, "DOMDocument", {&IID_IXMLDOMDocument, &IID_IXMLDOMDocument2} },
{ &CLSID_DOMDocument2, "DOMDocument2", {&IID_IXMLDOMDocument, &IID_IXMLDOMDocument2} },
{ &CLSID_DOMDocument30, "DOMDocument30", {&IID_IXMLDOMDocument, &IID_IXMLDOMDocument2} },
{ &CLSID_DOMDocument40, "DOMDocument40", {&IID_IXMLDOMDocument, &IID_IXMLDOMDocument2} },
{ &CLSID_DOMDocument60, "DOMDocument60", {&IID_IXMLDOMDocument, &IID_IXMLDOMDocument2, &IID_IXMLDOMDocument3} },
{ &CLSID_FreeThreadedDOMDocument, "FreeThreadedDOMDocument", {&IID_IXMLDOMDocument, &IID_IXMLDOMDocument2} },
{ &CLSID_XMLSchemaCache, "XMLSchemaCache", {&IID_IXMLDOMSchemaCollection} },
{ &CLSID_XSLTemplate, "XSLTemplate", {&IID_IXSLTemplate} },
{ &CLSID_MXNamespaceManager40, "MXNamespaceManager40", {&IID_IMXNamespaceManager} },
{ NULL }
};
static const char *debugstr_msxml_guid(REFIID riid)
{
if(!riid)
return "(null)";
if (IsEqualIID(&IID_IXMLDOMDocument, riid))
return "IXMLDOMDocument";
else if (IsEqualIID(&IID_IXMLDOMDocument2, riid))
return "IXMLDOMDocument2";
else if (IsEqualIID(&IID_IXMLDOMDocument3, riid))
return "IXMLDOMDocument3";
else if (IsEqualIID(&IID_IXMLDOMSchemaCollection, riid))
return "IXMLDOMSchemaCollection";
else if (IsEqualIID(&IID_IXSLTemplate, riid))
return "IXSLTemplate";
else if (IsEqualIID(&IID_IMXNamespaceManager, riid))
return "IMXNamespaceManager";
else
return debugstr_guid(riid);
}
static void get_class_support_data(struct msxmlsupported_data_t *table)
{
while (table->clsid)
{
IUnknown *unk;
HRESULT hr;
int i;
for (i = 0; i < sizeof(table->ifaces)/sizeof(table->ifaces[0]) && table->ifaces[i] != NULL; i++)
{
hr = CoCreateInstance(table->clsid, NULL, CLSCTX_INPROC_SERVER, table->ifaces[i], (void**)&unk);
if (hr == S_OK) IUnknown_Release(unk);
table->supported[i] = hr == S_OK;
if (hr != S_OK) win_skip("class %s, iface %s not supported\n", table->name, debugstr_msxml_guid(table->ifaces[i]));
}
table++;
}
}
static BOOL is_clsid_supported(const GUID *clsid, REFIID riid)
{
const struct msxmlsupported_data_t *table = domdoc_support_data;
while (table->clsid)
{
if (table->clsid == clsid)
{
int i;
for (i = 0; i < sizeof(table->ifaces)/sizeof(table->ifaces[0]) && table->ifaces[i] != NULL; i++)
if (table->ifaces[i] == riid) return table->supported[i];
}
table++;
}
return FALSE;
}
typedef struct
{
IDispatch IDispatch_iface;
@ -846,8 +928,7 @@ static void* _create_object(const GUID *clsid, const char *name, const IID *iid,
HRESULT hr;
hr = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, iid, &obj);
if (hr != S_OK)
win_skip_(__FILE__,line)("failed to create %s instance: 0x%08x\n", name, hr);
ok(hr == S_OK, "failed to create %s instance: 0x%08x\n", name, hr);
return obj;
}
@ -857,7 +938,6 @@ static void* _create_object(const GUID *clsid, const char *name, const IID *iid,
#define create_document(iid) _create_object(&_create(CLSID_DOMDocument2), iid, __LINE__)
#define create_document_version(v, iid) _create_object(&_create(CLSID_DOMDocument ## v), iid, __LINE__)
#define create_cache(iid) _create_object(&_create(CLSID_XMLSchemaCache), iid, __LINE__)
#define create_cache_version(v, iid) _create_object(&_create(CLSID_XMLSchemaCache ## v), iid, __LINE__)
#define create_xsltemplate(iid) _create_object(&_create(CLSID_XSLTemplate), iid, __LINE__)
static BSTR alloc_str_from_narrow(const char *str)
@ -1101,10 +1181,12 @@ static void test_domdoc( void )
HRESULT hr;
int i;
hr = CoCreateInstance(class_ptr->clsid, NULL, CLSCTX_INPROC_SERVER,
&IID_IXMLDOMDocument, (void**)&doc);
if (hr != S_OK) {
win_skip("%d: failed to create class instance for %s\n", index, class_ptr->name);
if (is_clsid_supported(class_ptr->clsid, &IID_IXMLDOMDocument))
{
hr = CoCreateInstance(class_ptr->clsid, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument, (void**)&doc);
}
else
{
class_ptr++;
index++;
continue;
@ -1776,7 +1858,6 @@ static void test_persiststreaminit(void)
HRESULT hr;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
hr = IXMLDOMDocument_QueryInterface(doc, &IID_IPersistStreamInit, (void**)&streaminit);
ok(hr == S_OK, "got 0x%08x\n", hr);
@ -1806,7 +1887,6 @@ static void test_domnode( void )
LONG count;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
b = FALSE;
r = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b );
@ -2205,7 +2285,6 @@ static void test_refs(void)
LONG ref;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
ptr = refcount_test;
while (ptr->type != NODE_INVALID)
@ -2343,7 +2422,6 @@ todo_wine {
IUnknown_Release(unk);
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
EXPECT_REF(doc, 1);
hr = IXMLDOMDocument_QueryInterface(doc, &IID_IUnknown, (void**)&unk);
@ -2510,7 +2588,6 @@ static void test_create(void)
LONG num;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
EXPECT_REF(doc, 1);
@ -2953,7 +3030,6 @@ static void test_getElementsByTagName(void)
BSTR str;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
r = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b );
ok( r == S_OK, "loadXML failed\n");
@ -3065,7 +3141,6 @@ static void test_get_text(void)
LONG len;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
r = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b );
ok( r == S_OK, "loadXML failed\n");
@ -3161,7 +3236,6 @@ static void test_get_childNodes(void)
LONG len;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
hr = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b );
EXPECT_HR(hr, S_OK);
@ -3320,7 +3394,6 @@ static void test_get_firstChild(void)
BSTR str;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
r = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b );
ok( r == S_OK, "loadXML failed\n");
@ -3352,7 +3425,6 @@ static void test_get_lastChild(void)
BSTR str;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
r = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b );
ok( r == S_OK, "loadXML failed\n");
@ -3393,7 +3465,6 @@ static void test_removeChild(void)
IXMLDOMNodeList *root_list, *fo_list;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
r = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b );
ok( r == S_OK, "loadXML failed\n");
@ -3495,7 +3566,6 @@ static void test_replaceChild(void)
LONG len;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
r = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b );
ok( r == S_OK, "loadXML failed\n");
@ -3609,7 +3679,6 @@ static void test_removeNamedItem(void)
HRESULT r;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
r = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b );
ok( r == S_OK, "loadXML failed\n");
@ -3824,15 +3893,10 @@ static void test_IXMLDOMDocument2(void)
HRESULT r;
LONG res;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
if (!is_clsid_supported(&CLSID_DOMDocument2, &IID_IXMLDOMDocument2)) return;
doc = create_document(&IID_IXMLDOMDocument);
dtddoc2 = create_document(&IID_IXMLDOMDocument2);
if (!dtddoc2)
{
IXMLDOMDocument_Release(doc);
return;
}
r = IXMLDOMDocument_QueryInterface( doc, &IID_IXMLDOMDocument2, (void**)&doc2 );
ok( r == S_OK, "ret %08x\n", r );
@ -4228,9 +4292,9 @@ static void test_whitespace(void)
HRESULT hr;
LONG len;
if (!is_clsid_supported(&CLSID_DOMDocument2, &IID_IXMLDOMDocument2)) return;
doc1 = create_document(&IID_IXMLDOMDocument2);
doc2 = create_document(&IID_IXMLDOMDocument2);
if (!doc1 || !doc2) return;
ole_check(IXMLDOMDocument2_put_preserveWhiteSpace(doc2, VARIANT_TRUE));
ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc1, &b));
@ -4420,8 +4484,8 @@ static void test_XPath(void)
LONG len;
BSTR str;
if (!is_clsid_supported(&CLSID_DOMDocument2, &IID_IXMLDOMDocument2)) return;
doc = create_document(&IID_IXMLDOMDocument2);
if (!doc) return;
hr = IXMLDOMDocument2_loadXML(doc, _bstr_(szExampleXML), &b);
EXPECT_HR(hr, S_OK);
@ -4683,10 +4747,13 @@ if (0)
while (ptr->clsid)
{
hr = CoCreateInstance(ptr->clsid, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument2, (void**)&doc);
if (hr != S_OK)
if (is_clsid_supported(ptr->clsid, &IID_IXMLDOMDocument2))
{
hr = CoCreateInstance(ptr->clsid, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument2, (void**)&doc);
ok(hr == S_OK, "got 0x%08x\n", hr);
}
else
{
win_skip("can't create instance of %s\n", ptr->name);
ptr++;
continue;
}
@ -4738,7 +4805,6 @@ static void test_cloneNode(void )
HRESULT hr;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
ole_check(IXMLDOMDocument_loadXML(doc, _bstr_(complete4A), &b));
ok(b == VARIANT_TRUE, "failed to load XML string\n");
@ -4854,7 +4920,6 @@ static void test_xmlTypes(void)
LONG len = 0;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
pNextChild = (void*)0xdeadbeef;
hr = IXMLDOMDocument_get_nextSibling(doc, NULL);
@ -5826,7 +5891,6 @@ static void test_put_dataType( void )
HRESULT hr;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
hr = IXMLDOMDocument_createElement(doc, _bstr_("Testing"), NULL);
EXPECT_HR(hr, E_INVALIDARG);
@ -5925,14 +5989,7 @@ static void test_save(void)
char *ptr;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
doc2 = create_document(&IID_IXMLDOMDocument);
if (!doc2)
{
IXMLDOMDocument_Release(doc);
return;
}
/* save to IXMLDOMDocument */
hr = IXMLDOMDocument_createElement(doc, _bstr_("Testing"), &root);
@ -6051,18 +6108,10 @@ static void test_testTransforms(void)
IXMLDOMDocument *doc, *docSS;
IXMLDOMNode *pNode;
VARIANT_BOOL bSucc;
HRESULT hr;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
docSS = create_document(&IID_IXMLDOMDocument);
if (!docSS)
{
IXMLDOMDocument_Release(doc);
return;
}
hr = IXMLDOMDocument_loadXML(doc, _bstr_(szTransformXML), &bSucc);
ok(hr == S_OK, "ret %08x\n", hr );
@ -6122,15 +6171,16 @@ static void test_namespaces_change(void)
HRESULT hr;
BSTR str;
hr = CoCreateInstance(class_ptr->clsid, NULL, CLSCTX_INPROC_SERVER,
&IID_IXMLDOMDocument, (void**)&doc);
if (hr != S_OK)
if (!is_clsid_supported(class_ptr->clsid, &IID_IXMLDOMDocument))
{
win_skip("failed to create class instance for %s\n", class_ptr->name);
class_ptr++;
continue;
}
hr = CoCreateInstance(class_ptr->clsid, NULL, CLSCTX_INPROC_SERVER,
&IID_IXMLDOMDocument, (void**)&doc);
ok(hr == S_OK, "got 0x%08x\n", hr);
V_VT(&var) = VT_I2;
V_I2(&var) = NODE_ELEMENT;
@ -6191,7 +6241,6 @@ static void test_namespaces_basic(void)
BSTR str;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
hr = IXMLDOMDocument_loadXML(doc, _bstr_(namespaces_xmlA), &b);
EXPECT_HR(hr, S_OK);
@ -6277,7 +6326,6 @@ static void test_FormattingXML(void)
static const CHAR szLinefeedRootXML[] = "<Root>\r\n\t<Sub val=\"A\"/>\r\n</Root>";
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
hr = IXMLDOMDocument_loadXML(doc, _bstr_(szLinefeedXML), &bSucc);
ok(hr == S_OK, "ret %08x\n", hr );
@ -6353,7 +6401,6 @@ static void test_nodeTypedValue(void)
HRESULT hr;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
b = VARIANT_FALSE;
hr = IXMLDOMDocument_loadXML(doc, _bstr_(szTypeValueXML), &b);
@ -6579,14 +6626,7 @@ static void test_TransformWithLoadingLocalFile(void)
}
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
xsl = create_document(&IID_IXMLDOMDocument);
if (!xsl)
{
IXMLDOMDocument_Release(doc);
return;
}
hr = IXMLDOMDocument_loadXML(doc, _bstr_(szTypeValueXML), &bSucc);
ok(hr == S_OK, "ret %08x\n", hr );
@ -6650,7 +6690,6 @@ static void test_put_nodeValue(void)
VARIANT data, type;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
/* test for unsupported types */
/* NODE_DOCUMENT */
@ -6736,7 +6775,6 @@ static void test_IObjectSafety(void)
HRESULT hr;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
hr = IXMLDOMDocument_QueryInterface(doc, &IID_IObjectSafety, (void**)&safety);
ok(hr == S_OK, "ret %08x\n", hr );
@ -6782,14 +6820,15 @@ static void test_default_properties(void)
VARIANT var;
HRESULT hr;
hr = CoCreateInstance(entry->guid, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument2, (void**)&doc);
if (hr != S_OK)
if (!is_clsid_supported(entry->guid, &IID_IXMLDOMDocument2))
{
win_skip("can't create %s instance\n", entry->clsid);
entry++;
continue;
}
hr = CoCreateInstance(entry->guid, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument2, (void**)&doc);
ok(hr == S_OK, "got 0x%08x\n", hr);
hr = IXMLDOMDocument2_getProperty(doc, _bstr_(entry->property), &var);
ok(hr == S_OK, "got 0x%08x\n", hr);
ok(lstrcmpW(V_BSTR(&var), _bstr_(entry->value)) == 0, "expected %s, for %s\n",
@ -6915,7 +6954,6 @@ static void test_XSLPattern(void)
LONG len;
doc = create_document(&IID_IXMLDOMDocument2);
if (!doc) return;
b = VARIANT_FALSE;
hr = IXMLDOMDocument2_loadXML(doc, _bstr_(szExampleXML), &b);
@ -7012,7 +7050,6 @@ static void test_XSLPattern(void)
IXMLDOMDocument2_Release(doc);
doc = create_document(&IID_IXMLDOMDocument2);
if (!doc) return;
hr = IXMLDOMDocument2_loadXML(doc, _bstr_(szNodeTypesXML), &b);
EXPECT_HR(hr, S_OK);
@ -7060,7 +7097,6 @@ static void test_splitText(void)
HRESULT hr;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
hr = IXMLDOMDocument_loadXML(doc, _bstr_("<root></root>"), &success);
ok(hr == S_OK, "got 0x%08x\n", hr);
@ -7205,7 +7241,6 @@ static void test_getQualifiedItem(void)
LONG len;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
hr = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b );
EXPECT_HR(hr, S_OK);
@ -7306,7 +7341,6 @@ static void test_removeQualifiedItem(void)
HRESULT hr;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
hr = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b );
ok( hr == S_OK, "loadXML failed\n");
@ -7443,14 +7477,11 @@ static void test_get_ownerDocument(void)
VARIANT_BOOL b;
VARIANT var;
if (!is_clsid_supported(&CLSID_DOMDocument2, &IID_IXMLDOMDocument2)) return;
if (!is_clsid_supported(&CLSID_XMLSchemaCache, &IID_IXMLDOMSchemaCollection)) return;
doc = create_document(&IID_IXMLDOMDocument2);
cache = create_cache(&IID_IXMLDOMSchemaCollection);
if (!doc || !cache)
{
if (doc) IXMLDOMDocument2_Release(doc);
if (cache) IXMLDOMSchemaCollection_Release(cache);
return;
}
VariantInit(&var);
@ -7518,7 +7549,6 @@ static void test_setAttributeNode(void)
ULONG ref1, ref2;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
hr = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b );
ok( hr == S_OK, "loadXML failed\n");
@ -7664,7 +7694,6 @@ static void test_createNode(void)
ULONG ref;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
EXPECT_REF(doc, 1);
@ -7754,7 +7783,6 @@ static void test_get_prefix(void)
BSTR str;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
/* nodes that can't support prefix */
/* 1. document */
@ -7866,7 +7894,6 @@ static void test_selectSingleNode(void)
LONG len;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
hr = IXMLDOMDocument_selectSingleNode(doc, NULL, NULL);
ok(hr == E_INVALIDARG, "got 0x%08x\n", hr);
@ -7931,7 +7958,6 @@ static void test_events(void)
IDispatch *event;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
hr = IXMLDOMDocument_QueryInterface(doc, &IID_IConnectionPointContainer, (void**)&conn);
ok(hr == S_OK, "got 0x%08x\n", hr);
@ -8000,7 +8026,6 @@ static void test_createProcessingInstruction(void)
HRESULT hr;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
/* test for BSTR handling, pass broken BSTR */
memcpy(&buff[2], bodyW, sizeof(bodyW));
@ -8028,7 +8053,6 @@ static void test_put_nodeTypedValue(void)
BSTR str;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
hr = IXMLDOMDocument_createElement(doc, _bstr_("Element"), &elem);
EXPECT_HR(hr, S_OK);
@ -8216,7 +8240,6 @@ static void test_get_xml(void)
HRESULT hr;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
b = VARIANT_TRUE;
hr = IXMLDOMDocument_loadXML( doc, _bstr_("<a>test</a>"), &b );
@ -8325,8 +8348,8 @@ static void test_xsltemplate(void)
ULONG ref1, ref2;
VARIANT v;
if (!is_clsid_supported(&CLSID_XSLTemplate, &IID_IXSLTemplate)) return;
template = create_xsltemplate(&IID_IXSLTemplate);
if (!template) return;
/* works as reset */
hr = IXSLTemplate_putref_stylesheet(template, NULL);
@ -8354,14 +8377,15 @@ static void test_xsltemplate(void)
IXMLDOMDocument_Release(doc);
hr = CoCreateInstance(&CLSID_FreeThreadedDOMDocument, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument, (void**)&doc);
if (hr != S_OK)
if (!is_clsid_supported(&CLSID_FreeThreadedDOMDocument, &IID_IXMLDOMDocument))
{
win_skip("failed to create free threaded document instance: 0x%08x\n", hr);
IXSLTemplate_Release(template);
return;
}
hr = CoCreateInstance(&CLSID_FreeThreadedDOMDocument, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument, (void**)&doc);
ok(hr == S_OK, "got 0x%08x\n", hr);
b = VARIANT_TRUE;
hr = IXMLDOMDocument_loadXML( doc, _bstr_(szTransformSSXML), &b );
ok(hr == S_OK, "got 0x%08x\n", hr);
@ -10642,8 +10666,9 @@ static void test_parseerror(void)
IXMLDOMParseError_Release(error);
IXMLDOMDocument_Release(doc);
if (!is_clsid_supported(&CLSID_DOMDocument60, &IID_IXMLDOMDocument)) return;
doc = create_document_version(60, &IID_IXMLDOMDocument);
if (!doc) return;
hr = IXMLDOMDocument_get_parseError(doc, &error);
EXPECT_HR(hr, S_OK);
hr = IXMLDOMParseError_QueryInterface(error, &IID_IXMLDOMParseError2, (void**)&error2);
@ -10739,8 +10764,8 @@ static void test_supporterrorinfo(void)
void *dummy;
HRESULT hr;
if (!is_clsid_supported(&CLSID_DOMDocument60, &IID_IXMLDOMDocument3)) return;
doc = create_document_version(60, &IID_IXMLDOMDocument3);
if (!doc) return;
EXPECT_REF(doc, 1);
hr = IXMLDOMDocument_QueryInterface(doc, &IID_ISupportErrorInfo, (void**)&errorinfo);
@ -10901,7 +10926,6 @@ static void test_nodeValue(void)
HRESULT hr;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
while (ptr->type != NODE_INVALID)
{
@ -10949,7 +10973,6 @@ static void test_xmlns_attribute(void)
HRESULT hr;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
hr = IXMLDOMDocument_createElement(doc, _bstr_("Testing"), &root);
EXPECT_HR(hr, S_OK);
@ -11031,8 +11054,8 @@ static void test_get_namespaces(void)
LONG len;
BSTR s;
if (!is_clsid_supported(&CLSID_DOMDocument2, &IID_IXMLDOMDocument2)) return;
doc = create_document(&IID_IXMLDOMDocument2);
if (!doc) return;
/* null pointer */
hr = IXMLDOMDocument2_get_namespaces(doc, NULL);
@ -11154,8 +11177,8 @@ static void test_get_namespaces(void)
IXMLDOMDocument2_Release(doc);
/* now with CLSID_DOMDocument60 */
if (!is_clsid_supported(&CLSID_DOMDocument60, &IID_IXMLDOMDocument2)) return;
doc = create_document_version(60, &IID_IXMLDOMDocument2);
if (!doc) return;
/* null pointer */
hr = IXMLDOMDocument2_get_namespaces(doc, NULL);
@ -11281,7 +11304,6 @@ static void test_put_data(void)
HRESULT hr;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
memcpy(&buff[2], test_data, sizeof(test_data));
/* just a big length */
@ -11408,8 +11430,10 @@ static void test_putref_schemas(void)
VARIANT schema;
HRESULT hr;
if (!is_clsid_supported(&CLSID_DOMDocument2, &IID_IXMLDOMDocument2)) return;
if (!is_clsid_supported(&CLSID_XMLSchemaCache, &IID_IXMLDOMSchemaCollection)) return;
doc = create_document(&IID_IXMLDOMDocument2);
if (!doc) return;
cache = create_cache(&IID_IXMLDOMSchemaCollection);
/* set to NULL iface when no schema is set */
@ -11602,8 +11626,6 @@ static void test_xsltext(void)
BSTR ret;
doc = create_document(&IID_IXMLDOMDocument);
if (!doc) return;
doc2 = create_document(&IID_IXMLDOMDocument);
hr = IXMLDOMDocument_loadXML(doc, _bstr_(xsltext_xsl), &b);
@ -11717,23 +11739,20 @@ static void test_create_attribute(void)
START_TEST(domdoc)
{
IXMLDOMDocument *doc;
IUnknown *unk;
HRESULT hr;
hr = CoInitialize( NULL );
ok( hr == S_OK, "failed to init com\n");
if (hr != S_OK) return;
hr = CoCreateInstance( &CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument, (void**)&doc );
if (hr != S_OK)
get_class_support_data(domdoc_support_data);
if (!is_clsid_supported(&CLSID_DOMDocument2, &IID_IXMLDOMDocument))
{
win_skip("IXMLDOMDocument is not available (0x%08x)\n", hr);
win_skip("DOMDocument2 is not supported. Skipping all tests.\n");
CoUninitialize();
return;
}
IXMLDOMDocument_Release(doc);
test_domdoc();
test_persiststreaminit();
test_domnode();
@ -11800,17 +11819,11 @@ START_TEST(domdoc)
test_xsltemplate();
test_xsltext();
hr = CoCreateInstance(&CLSID_MXNamespaceManager40, NULL, CLSCTX_INPROC_SERVER,
&IID_IMXNamespaceManager, (void**)&unk);
if (hr == S_OK)
if (is_clsid_supported(&CLSID_MXNamespaceManager40, &IID_IMXNamespaceManager))
{
test_mxnamespacemanager();
test_mxnamespacemanager_override();
IUnknown_Release(unk);
}
else
win_skip("MXNamespaceManager is not available\n");
CoUninitialize();
}