[MSXML3_WINETEST] Sync with Wine Staging 1.7.55. CORE-10536

svn path=/trunk/; revision=70050
This commit is contained in:
Amine Khaldi 2015-11-23 09:12:39 +00:00
parent 36c9923227
commit b566b3691c
3 changed files with 177 additions and 1 deletions

View file

@ -7505,6 +7505,19 @@ static void test_get_ownerDocument(void)
IXMLDOMSchemaCollection *cache;
VARIANT_BOOL b;
VARIANT var;
IXMLDOMElement *element;
IXMLDOMNodeList *node_list;
IXMLDOMAttribute *attr;
LONG i, len;
HRESULT hr;
const CHAR nodeXML[] =
"<root id='0'>"
" <!-- comment node 0 -->"
" text node 0"
" <x attr='val'></x>"
" <?foo value='PI for x'?>"
" <![CDATA[ cdata ]]>"
"</root>";
if (!is_clsid_supported(&CLSID_DOMDocument2, &IID_IXMLDOMDocument2)) return;
if (!is_clsid_supported(&CLSID_XMLSchemaCache, &IID_IXMLDOMSchemaCollection)) return;
@ -7557,6 +7570,47 @@ static void test_get_ownerDocument(void)
check_default_props(doc_owner);
check_default_props(doc);
/* NULL check */
hr = IXMLDOMDocument_loadXML(doc1, _bstr_(nodeXML), &b);
EXPECT_HR(hr, S_OK);
ok(b == VARIANT_TRUE, "failed to load XML string\n");
hr = IXMLDOMDocument_get_documentElement(doc1, &element);
EXPECT_HR(hr, S_OK);
hr = IXMLDOMElement_get_childNodes(element, &node_list);
EXPECT_HR(hr, S_OK);
hr = IXMLDOMNodeList_get_length(node_list, &len);
EXPECT_HR(hr, S_OK);
for(i = 0; i < len; i++) {
hr = IXMLDOMNodeList_get_item(node_list, i, &node);
EXPECT_HR(hr, S_OK);
hr = IXMLDOMNode_get_ownerDocument(node, NULL);
EXPECT_HR(hr, E_INVALIDARG);
IXMLDOMNode_Release(node);
}
IXMLDOMElement_Release(element);
/* Test Attribute Node */
hr = IXMLDOMNodeList_get_item(node_list, 2, &node);
EXPECT_HR(hr, S_OK);
hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMElement, (void**)&element);
EXPECT_HR(hr, S_OK);
IXMLDOMNode_Release(node);
hr = IXMLDOMElement_getAttributeNode(element, _bstr_("attr"), &attr);
EXPECT_HR(hr, S_OK);
ok(attr != NULL, "attr == NULL\n");
IXMLDOMElement_Release(element);
hr = IXMLDOMAttribute_get_ownerDocument(attr, NULL);
EXPECT_HR(hr, E_INVALIDARG);
IXMLDOMAttribute_Release(attr);
IXMLDOMNodeList_Release(node_list);
IXMLDOMSchemaCollection_Release(cache);
IXMLDOMDocument_Release(doc1);
IXMLDOMDocument_Release(doc2);
@ -8961,6 +9015,7 @@ static void test_get_doctype(void)
ok(doctype == NULL, "got %p\n", doctype);
hr = IXMLDOMDocument_loadXML(doc, _bstr_(szEmailXML), &b);
ok(hr == S_OK, "got 0x%08x\n", hr);
ok(b == VARIANT_TRUE, "failed to load XML string\n");
doctype = NULL;
@ -10866,6 +10921,56 @@ static void test_getAttributeNode(void)
free_bstrs();
}
static void test_getAttribute(void)
{
IXMLDOMDocument *doc;
IXMLDOMElement *elem;
VARIANT_BOOL v;
VARIANT var;
HRESULT hr;
doc = create_document(&IID_IXMLDOMDocument);
hr = IXMLDOMDocument_loadXML(doc, _bstr_(szExampleXML), &v);
EXPECT_HR(hr, S_OK);
hr = IXMLDOMDocument_get_documentElement(doc, &elem);
EXPECT_HR(hr, S_OK);
VariantInit(&var);
hr = IXMLDOMElement_getAttribute( elem, _bstr_("xmlns:foo"), &var );
EXPECT_HR(hr, S_OK);
ok( V_VT(&var) == VT_BSTR, "vt = %x\n", V_VT(&var));
ok( !lstrcmpW(V_BSTR(&var), _bstr_("urn:uuid:86B2F87F-ACB6-45cd-8B77-9BDB92A01A29")), "wrong attr value: %s\n", wine_dbgstr_w(V_BSTR(&var)));
VariantClear(&var);
hr = IXMLDOMElement_getAttribute( elem, _bstr_("a"), &var );
EXPECT_HR(hr, S_OK);
ok( V_VT(&var) == VT_BSTR, "vt = %x\n", V_VT(&var));
ok( !lstrcmpW(V_BSTR(&var), _bstr_("attr a")), "wrong attr value: %s\n", wine_dbgstr_w(V_BSTR(&var)));
VariantClear(&var);
hr = IXMLDOMElement_getAttribute( elem, _bstr_("foo:b"), &var );
EXPECT_HR(hr, S_OK);
ok( V_VT(&var) == VT_BSTR, "vt = %x\n", V_VT(&var));
ok( !lstrcmpW(V_BSTR(&var), _bstr_("attr b")), "wrong attr value: %s\n", wine_dbgstr_w(V_BSTR(&var)));
VariantClear(&var);
hr = IXMLDOMElement_getAttribute( elem, _bstr_("b"), &var );
EXPECT_HR(hr, S_FALSE);
ok( V_VT(&var) == VT_NULL, "vt = %x\n", V_VT(&var));
VariantClear(&var);
hr = IXMLDOMElement_getAttribute( elem, _bstr_("non-existent"), &var );
EXPECT_HR(hr, S_FALSE);
ok( V_VT(&var) == VT_NULL, "vt = %x\n", V_VT(&var));
VariantClear(&var);
IXMLDOMElement_Release(elem);
IXMLDOMDocument_Release(doc);
free_bstrs();
}
typedef struct {
DOMNodeType type;
const char *name;
@ -11919,6 +12024,71 @@ static void test_url(void)
IXMLDOMDocument_Release(doc);
}
static void test_merging_text(void)
{
IXMLDOMText *nodetext;
IXMLDOMText *newtext;
IXMLDOMElement *root;
IXMLDOMDocument *doc;
IXMLDOMNode *first;
HRESULT hr;
VARIANT v;
BSTR str;
int i;
doc = create_document(&IID_IXMLDOMDocument);
hr = IXMLDOMDocument_createElement(doc, _bstr_("Testing"), &root);
EXPECT_HR(hr, S_OK);
hr = IXMLDOMDocument_appendChild(doc, (IXMLDOMNode*)root, NULL);
EXPECT_HR(hr, S_OK);
/* test xmlAddChild */
for (i = 0; i < 10; i++)
{
str = SysAllocString(szstr1);
hr = IXMLDOMDocument_createTextNode(doc, str, &nodetext);
SysFreeString(str);
EXPECT_HR(hr, S_OK);
newtext = NULL;
hr = IXMLDOMElement_appendChild(root, (IXMLDOMNode*)nodetext, (IXMLDOMNode**)&newtext);
EXPECT_HR(hr, S_OK);
ok(nodetext == newtext, "expected %p, got %p\n", nodetext, newtext);
IXMLDOMText_Release(newtext);
IXMLDOMText_Release(nodetext);
}
/* test xmlAddPrevSibling */
hr = IXMLDOMElement_get_firstChild(root, &first);
EXPECT_HR(hr, S_OK);
V_VT(&v) = VT_UNKNOWN;
V_UNKNOWN(&v) = (IUnknown*)first;
for (i = 0; i < 10; i++)
{
str = SysAllocString(szstr2);
hr = IXMLDOMDocument_createTextNode(doc, str, &nodetext);
SysFreeString(str);
EXPECT_HR(hr, S_OK);
newtext = NULL;
hr = IXMLDOMElement_insertBefore(root, (IXMLDOMNode*)nodetext, v, (IXMLDOMNode**)&newtext);
EXPECT_HR(hr, S_OK);
ok(nodetext == newtext, "expected %p, got %p\n", nodetext, newtext);
IXMLDOMText_Release(newtext);
IXMLDOMText_Release(nodetext);
}
IXMLDOMNode_Release(first);
IXMLDOMElement_Release(root);
IXMLDOMDocument_Release(doc);
free_bstrs();
}
START_TEST(domdoc)
{
HRESULT hr;
@ -11990,6 +12160,7 @@ START_TEST(domdoc)
test_dispex();
test_parseerror();
test_getAttributeNode();
test_getAttribute();
test_supporterrorinfo();
test_nodeValue();
test_get_namespaces();
@ -11998,6 +12169,7 @@ START_TEST(domdoc)
test_namedmap_newenum();
test_xmlns_attribute();
test_url();
test_merging_text();
test_xsltemplate();
test_xsltext();

View file

@ -2395,6 +2395,7 @@ static void test_saxreader(void)
hr = ISAXXMLReader_parse(reader, var);
EXPECT_HR(hr, S_OK);
ok_sequence(sequences, CONTENT_HANDLER_INDEX, test_seq, "content test attributes", TRUE);
IStream_Release(stream);
hr = ISAXXMLReader_putFeature(reader, _bstr_("http://xml.org/sax/features/namespaces"), VARIANT_TRUE);
EXPECT_HR(hr, S_OK);
@ -2418,6 +2419,7 @@ static void test_saxreader(void)
hr = ISAXXMLReader_parse(reader, var);
EXPECT_HR(hr, S_OK);
ok_sequence(sequences, CONTENT_HANDLER_INDEX, test_seq, "content test attributes", FALSE);
IStream_Release(stream);
hr = ISAXXMLReader_putFeature(reader, _bstr_("http://xml.org/sax/features/namespace-prefixes"), VARIANT_TRUE);
EXPECT_HR(hr, S_OK);

View file

@ -16,6 +16,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#pragma makedep header
import "unknwn.idl";
import "objidl.idl";
import "oaidl.idl";
@ -254,7 +256,7 @@ typedef struct _XML_NODE_INFO
]
library XMLPSR
{
importlib("stdole32.tlb");
/* importlib("stdole32.tlb"); */
importlib("stdole2.tlb");
[