Piotr Caban : msxml3: Implemented xmlnode_get_nodeTypedValue 'number' data type handling.

Alexandre Julliard julliard at winehq.org
Wed Nov 18 09:40:43 CST 2009


Module: wine
Branch: master
Commit: 0a6d3a70ca1e8811efbc0d41a23ff1ba90a62858
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=0a6d3a70ca1e8811efbc0d41a23ff1ba90a62858

Author: Piotr Caban <piotr.caban at 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);




More information about the wine-cvs mailing list