[PATCH v2 0/4] MR10618: msxml3/tests: Add some more tests for getNamedItem().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> -- v2: msxml3/tests: Add another test for subtree serialization with default namespaces. msxml3: Remove duplicated SafeArrayUnaccessData() in load(). msxml3: Do not try to convert NULL strings when creating libxml2 document representation. msxml3/tests: Add some more tests for getNamedItem(). https://gitlab.winehq.org/wine/wine/-/merge_requests/10618
From: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> --- dlls/msxml3/tests/domdoc.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index f9dfef94b81..ab83974a020 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -10649,6 +10649,22 @@ static void test_get_attributes(void) IXMLDOMNode_Release(node2); } + hr = IXMLDOMNamedNodeMap_getNamedItem(map, _bstr_("xmlns:foaf"), &node2); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNode_get_xml(node2, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!wcscmp(str, L"xmlns:foaf=\"http://xmlns.com/foaf/0.1/\""), "Unexpected xml %s.\n", debugstr_w(str)); + SysFreeString(str); + IXMLDOMNode_Release(node2); + + hr = IXMLDOMNamedNodeMap_getNamedItem(map, _bstr_("dcterms:created"), &node2); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNode_get_xml(node2, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!wcscmp(str, L"dcterms:created=\"2025\""), "Unexpected xml %s.\n", debugstr_w(str)); + SysFreeString(str); + IXMLDOMNode_Release(node2); + IXMLDOMNamedNodeMap_Release(map); IXMLDOMElement_Release(elem); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10618
From: Nikolay Sivov <nsivov@codeweavers.com> Converting NULLs will propagate wctomb last error to application, and sometimes it's not expected. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=59632 Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> --- dlls/msxml3/node.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c index d75590a31bc..1f2c7a52daa 100644 --- a/dlls/msxml3/node.c +++ b/dlls/msxml3/node.c @@ -4225,8 +4225,8 @@ static xmlNodePtr create_xmlnode_from_domnode(struct xmldoc_context *context, st struct domnode *n; xmlDtdPtr dtd; - name = xmlchar_from_wchar(node->name); - data = xmlchar_from_wchar(node->data); + name = node->name ? xmlchar_from_wchar(node->name) : NULL; + data = node->data ? xmlchar_from_wchar(node->data) : NULL; switch (node->type) { -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10618
From: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> --- dlls/msxml3/domdoc.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c index c19bcde03ab..b3a01f477ed 100644 --- a/dlls/msxml3/domdoc.c +++ b/dlls/msxml3/domdoc.c @@ -1312,8 +1312,6 @@ static HRESULT WINAPI domdoc_load(IXMLDOMDocument3 *iface, VARIANT source, VARIA TRACE("failed to parse document\n"); } - SafeArrayUnaccessData(psa); - return doc->error == S_OK ? S_OK : S_FALSE; default: FIXME("unhandled SAFEARRAY dim: %d\n", dim); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10618
From: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> --- dlls/msxml3/tests/domdoc.c | 56 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index ab83974a020..f049f741f11 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -16786,6 +16786,61 @@ static void test_createElement(void) free_bstrs(); } +static void test_default_namespace(void) +{ + IXMLDOMElement *element, *element2; + IXMLDOMDocument *doc; + IXMLDOMNode *node; + HRESULT hr; + VARIANT v; + BSTR str; + + doc = create_document(&IID_IXMLDOMDocument); + + V_VT(&v) = VT_I1; + V_I1(&v) = NODE_ELEMENT; + hr = IXMLDOMDocument_createNode(doc, v, _bstr_("e1"), _bstr_("default-uri"), &node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMNode_get_xml(node, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!wcscmp(str, L"<e1 xmlns=\"default-uri\"/>"), "Unexpected xml %s.\n", debugstr_w(str)); + SysFreeString(str); + + hr = IXMLDOMDocument_createElement(doc, _bstr_("e2"), &element); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument_createElement(doc, _bstr_("e3"), &element2); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMNode_appendChild(node, (IXMLDOMNode *)element, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMNode_get_xml(node, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + todo_wine + ok(!wcscmp(str, L"<e1 xmlns=\"default-uri\"><e2 xmlns=\"\"/></e1>"), "Unexpected xml %s.\n", debugstr_w(str)); + SysFreeString(str); + + hr = IXMLDOMElement_get_namespaceURI(element, &str); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMElement_appendChild(element, (IXMLDOMNode *)element2, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMNode_get_xml(node, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + todo_wine + ok(!wcscmp(str, L"<e1 xmlns=\"default-uri\"><e2 xmlns=\"\"><e3/></e2></e1>"), "Unexpected xml %s.\n", debugstr_w(str)); + SysFreeString(str); + + IXMLDOMNode_Release(node); + + IXMLDOMElement_Release(element2); + IXMLDOMElement_Release(element); + IXMLDOMDocument_Release(doc); + free_bstrs(); +} + START_TEST(domdoc) { HRESULT hr; @@ -16890,6 +16945,7 @@ START_TEST(domdoc) test_document_reload(); test_setAttribute(); test_createElement(); + test_default_namespace(); if (is_clsid_supported(&CLSID_MXNamespaceManager40, &IID_IMXNamespaceManager)) { -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10618
participants (2)
-
Nikolay Sivov -
Nikolay Sivov (@nsivov)