Module: wine Branch: master Commit: 0a6d3a70ca1e8811efbc0d41a23ff1ba90a62858 URL: http://source.winehq.org/git/wine.git/?a=commit;h=0a6d3a70ca1e8811efbc0d41a2... Author: Piotr Caban <piotr.caban(a)gmail.com> Date: Wed Nov 18 00:51:11 2009 +0100 msxml3: Implemented xmlnode_get_nodeTypedValue 'number' data type handling. --- dlls/msxml3/node.c | 3 ++- dlls/msxml3/tests/domdoc.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletions(-) diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c index 1f4dc32..56a8578 100644 --- a/dlls/msxml3/node.c +++ b/dlls/msxml3/node.c @@ -948,7 +948,8 @@ static HRESULT WINAPI xmlnode_get_dataType(IXMLDOMNode*, VARIANT*); inline HRESULT VARIANT_from_xmlChar(xmlChar *str, VARIANT *v, BSTR type) { - if(!type || !lstrcmpiW(type, szString)) + if(!type || !lstrcmpiW(type, szString) || + !lstrcmpiW(type, szNumber)) { V_VT(v) = VT_BSTR; V_BSTR(v) = bstr_from_xmlChar(str); diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index b946970..2f34a24 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -151,6 +151,8 @@ static const CHAR szTypeValueXML[] = "<root xmlns:dt=\"urn:schemas-microsoft-com:datatypes\">\n" " <string>Wine</string>\n" " <string2 dt:dt=\"string\">String</string2>\n" +" <number dt:dt=\"number\">12.44</number>\n" +" <number2 dt:dt=\"NUMbEr\">-3.71e3</number2>\n" "</root>"; static const CHAR szBasicTransformSSXMLPart1[] = @@ -4009,6 +4011,32 @@ static void test_NodeTypeValue(void) IXMLDOMNode_Release(pNode); } + + hr = IXMLDOMDocument2_selectSingleNode(doc, _bstr_("root/number"), &pNode); + ok(hr == S_OK, "ret %08x\n", hr ); + if(hr == S_OK) + { + hr = IXMLDOMNode_get_nodeTypedValue(pNode, &v); + ok(hr == S_OK, "ret %08x\n", hr ); + ok(V_VT(&v) == VT_BSTR, "incorrect type\n"); + ok(!lstrcmpW( V_BSTR(&v), _bstr_("12.44") ), "incorrect value\n"); + VariantClear( &v ); + + IXMLDOMNode_Release(pNode); + } + + hr = IXMLDOMDocument2_selectSingleNode(doc, _bstr_("root/number2"), &pNode); + ok(hr == S_OK, "ret %08x\n", hr ); + if(hr == S_OK) + { + hr = IXMLDOMNode_get_nodeTypedValue(pNode, &v); + ok(hr == S_OK, "ret %08x\n", hr ); + ok(V_VT(&v) == VT_BSTR, "incorrect type\n"); + ok(!lstrcmpW( V_BSTR(&v), _bstr_("-3.71e3") ), "incorrect value\n"); + VariantClear( &v ); + + IXMLDOMNode_Release(pNode); + } } IXMLDOMDocument2_Release(doc);