[PATCH] msxml3/tests: Add IXMLDOMNode::selectSingleNode() test for an XML with multiple namespaces.

Dmitry Timoshkov dmitry at baikal.ru
Sun Oct 6 21:59:50 CDT 2019


Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
---
 dlls/msxml3/tests/domdoc.c | 80 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 80 insertions(+)

diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
index c4337ab191..eee29add38 100644
--- a/dlls/msxml3/tests/domdoc.c
+++ b/dlls/msxml3/tests/domdoc.c
@@ -12998,6 +12998,85 @@ static void test_namespaces_as_attributes(void)
     free_bstrs();
 }
 
+static const char ticket[] =
+"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+"<psf:PrintTicket xmlns:psf=\"http://a\" xmlns:xsi=\"http://b\" xmlns:xsd=\"http://c\" xmlns:psk=\"http://d\">"
+"  <psf:Feature name=\"psk:PageMediaSize\">"
+"    <psf:Option name=\"psk:ISOA4\">"
+"      <psf:ScoredProperty name=\"psk:MediaSizeWidth\">"
+"        <psf:Value xsi:type=\"xsd:integer\">210000</psf:Value>"
+"      </psf:ScoredProperty>"
+"      <psf:ScoredProperty name=\"psk:MediaSizeHeight\">"
+"        <psf:Value xsi:type=\"xsd:integer\">297000</psf:Value>"
+"      </psf:ScoredProperty>"
+"    </psf:Option>"
+"  </psf:Feature>"
+"</psf:PrintTicket>";
+
+static void test_selectSingleNode_ns(void)
+{
+    IXMLDOMDocument *doc;
+    IXMLDOMNode *node, *option, *child, *val;
+    VARIANT_BOOL b;
+    VARIANT var;
+    HRESULT hr;
+
+    doc = create_document(&IID_IXMLDOMDocument);
+
+    b = VARIANT_FALSE;
+    hr = IXMLDOMDocument_loadXML(doc, _bstr_(ticket), &b);
+    ok(hr == S_OK, "got %#x\n", hr );
+    ok(b == VARIANT_TRUE, "got %d\n", b);
+
+    hr = IXMLDOMDocument_selectSingleNode(doc, _bstr_("psf:PrintTicket/psf:Feature[@name='psk:PageMediaSize']"), &node);
+    ok(hr == S_OK, "got %#x\n", hr );
+
+    hr = IXMLDOMNode_selectSingleNode(node, _bstr_("./psf:Option"), &option);
+    ok(hr == S_OK, "got %#x\n", hr );
+
+    hr = IXMLDOMNode_selectSingleNode(option, _bstr_("./psf:ScoredProperty[@name='psk:MediaSizeWidth']"), &child);
+    ok(hr == S_OK, "got %#x\n", hr );
+
+    hr = IXMLDOMNode_selectSingleNode(child, _bstr_("./psf:Value[@xsi:type='xsd:integer']"), &val);
+todo_wine
+    ok(hr == S_OK, "got %#x\n", hr );
+    if (hr == S_OK)
+    {
+        VariantInit(&var);
+        hr = IXMLDOMNode_get_nodeTypedValue(val, &var);
+        ok(hr == S_OK, "got %#x\n", hr );
+        ok(V_VT(&var) == VT_BSTR, "got %d\n", V_VT(&var));
+        ok(!wcscmp(V_BSTR(&var), L"210000"), "got %s\n", wine_dbgstr_w(V_BSTR(&var)));
+        VariantClear(&var);
+
+        IXMLDOMNode_Release(val);
+    }
+    IXMLDOMNode_Release(child);
+
+    hr = IXMLDOMNode_selectSingleNode(option, _bstr_("./psf:ScoredProperty[@name='psk:MediaSizeHeight']"), &child);
+    ok(hr == S_OK, "got %#x\n", hr );
+
+    hr = IXMLDOMNode_selectSingleNode(child, _bstr_("./psf:Value[@xsi:type='xsd:integer']"), &val);
+todo_wine
+    ok(hr == S_OK, "got %#x\n", hr );
+    if (hr == S_OK)
+    {
+        VariantInit(&var);
+        hr = IXMLDOMNode_get_nodeTypedValue(val, &var);
+        ok(hr == S_OK, "got %#x\n", hr );
+        ok(V_VT(&var) == VT_BSTR, "got %d\n", V_VT(&var));
+        ok(!wcscmp(V_BSTR(&var), L"297000"), "got %s\n", wine_dbgstr_w(V_BSTR(&var)));
+        VariantClear(&var);
+
+        IXMLDOMNode_Release(val);
+    }
+    IXMLDOMNode_Release(child);
+
+    IXMLDOMNode_Release(option);
+    IXMLDOMNode_Release(node);
+    IXMLDOMDocument_Release(doc);
+}
+
 START_TEST(domdoc)
 {
     HRESULT hr;
@@ -13014,6 +13093,7 @@ START_TEST(domdoc)
         return;
     }
 
+    test_selectSingleNode_ns();
     test_domdoc();
     test_persiststream();
     test_domnode();
-- 
2.20.1




More information about the wine-devel mailing list