[PATCH 0/1] MR10470: msxml3/tests: Add a test for reloading document with outstanding references.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10470
From: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> --- dlls/msxml3/tests/domdoc.c | 102 +++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index 4eb7be7b0f5..4dd1516f3a6 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -16177,6 +16177,107 @@ static void test_cdata(void) IXMLDOMDocument_Release(doc); } +static void test_document_reload(void) +{ + IXMLDOMElement *element, *element2; + IXMLDOMDocument2 *doc, *doc2; + IXMLDOMDocument *owner; + VARIANT_BOOL b; + VARIANT var; + HRESULT hr; + BSTR str; + + doc = create_document(&IID_IXMLDOMDocument2); + + hr = IXMLDOMDocument2_getProperty(doc, _bstr_("SelectionLanguage"), &var); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!wcscmp(V_BSTR(&var), L"XSLPattern"), "Unexpected value %s.\n", debugstr_w(V_BSTR(&var))); + VariantClear(&var); + + hr = IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionLanguage"), _variantbstr_("XPath")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + /* Load document */ + hr = IXMLDOMDocument2_loadXML(doc, _bstr_("<a>text</a>"), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMDocument2_getProperty(doc, _bstr_("SelectionLanguage"), &var); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!wcscmp(V_BSTR(&var), L"XPath"), "Unexpected value %s.\n", debugstr_w(V_BSTR(&var))); + VariantClear(&var); + + /* Get a node, reload document. */ + hr = IXMLDOMDocument2_get_documentElement(doc, &element); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMDocument2_get_xml(doc, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!wcscmp(str, L"<a>text</a>\r\n"), "Unexpected xml %s.\n", debugstr_w(str)); + SysFreeString(str); + + hr = IXMLDOMDocument2_getProperty(doc, _bstr_("SelectionLanguage"), &var); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!wcscmp(V_BSTR(&var), L"XPath"), "Unexpected value %s.\n", debugstr_w(V_BSTR(&var))); + VariantClear(&var); + + hr = IXMLDOMDocument2_loadXML(doc, _bstr_("<b>text</b>"), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMDocument2_getProperty(doc, _bstr_("SelectionLanguage"), &var); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!wcscmp(V_BSTR(&var), L"XPath"), "Unexpected value %s.\n", debugstr_w(V_BSTR(&var))); + VariantClear(&var); + + hr = IXMLDOMDocument2_getProperty(doc, _bstr_("SelectionLanguage"), &var); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!wcscmp(V_BSTR(&var), L"XPath"), "Unexpected value %s.\n", debugstr_w(V_BSTR(&var))); + VariantClear(&var); + + hr = IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionLanguage"), _variantbstr_("XSLPattern")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMDocument2_get_xml(doc, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!wcscmp(str, L"<b>text</b>\r\n"), "Unexpected xml %s.\n", debugstr_w(str)); + SysFreeString(str); + + hr = IXMLDOMElement_get_ownerDocument(element, &owner); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument_get_xml(owner, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + todo_wine + ok(!wcscmp(str, L"<b>text</b>\r\n"), "Unexpected xml %s.\n", debugstr_w(str)); + hr = IXMLDOMDocument_get_documentElement(owner, &element2); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMElement_get_xml(element2, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + todo_wine + ok(!wcscmp(str, L"<b>text</b>"), "Unexpected xml %s.\n", debugstr_w(str)); + SysFreeString(str); + IXMLDOMElement_Release(element2); + SysFreeString(str); + + hr = IXMLDOMElement_get_xml(element, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!wcscmp(str, L"<a>text</a>"), "Unexpected xml %s.\n", debugstr_w(str)); + SysFreeString(str); + + hr = IXMLDOMDocument_QueryInterface(owner, &IID_IXMLDOMDocument2, (void **)&doc2); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + IXMLDOMDocument_Release(owner); + + hr = IXMLDOMDocument2_getProperty(doc2, _bstr_("SelectionLanguage"), &var); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + todo_wine + ok(!wcscmp(V_BSTR(&var), L"XSLPattern"), "Unexpected value %s.\n", debugstr_w(V_BSTR(&var))); + VariantClear(&var); + + IXMLDOMElement_Release(element); + IXMLDOMDocument2_Release(doc2); + IXMLDOMDocument2_Release(doc); + free_bstrs(); +} + START_TEST(domdoc) { HRESULT hr; @@ -16279,6 +16380,7 @@ START_TEST(domdoc) test_xmldecl_attributes(); test_loadXML(); test_cdata(); + test_document_reload(); if (is_clsid_supported(&CLSID_MXNamespaceManager40, &IID_IMXNamespaceManager)) { -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10470
participants (2)
-
Nikolay Sivov -
Nikolay Sivov (@nsivov)