From: Dmitry Timoshkov Subject: [PATCH] msxml3/tests: Add IXMLDOMNode::selectSingleNode() test for an XML with multiple namespaces. Message-Id: <20191007105950.3e9321430cd4520d95fb60d6@baikal.ru> Date: Mon, 7 Oct 2019 10:59:50 +0800 Signed-off-by: Dmitry Timoshkov --- 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[] = +"" +"" +" " +" " +" " +" 210000" +" " +" " +" 297000" +" " +" " +" " +""; + +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