Nikolay Sivov : msxml3: More tests for <?xml ?> attributes.

Alexandre Julliard julliard at winehq.org
Mon Mar 28 14:22:01 CDT 2011


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Sun Mar 27 00:16:17 2011 +0300

msxml3: More tests for <?xml ?> attributes.

---

 dlls/msxml3/tests/domdoc.c |  155 +++++++++++++++++++++++++++++++++++++-------
 1 files changed, 131 insertions(+), 24 deletions(-)

diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
index 1f297ab..cdba14b 100644
--- a/dlls/msxml3/tests/domdoc.c
+++ b/dlls/msxml3/tests/domdoc.c
@@ -3901,52 +3901,77 @@ static void test_get_text(void)
 
 static void test_get_childNodes(void)
 {
-    HRESULT r;
     BSTR str;
     VARIANT_BOOL b;
     IXMLDOMDocument *doc;
     IXMLDOMElement *element;
     IXMLDOMNode *node, *node2;
     IXMLDOMNodeList *node_list, *node_list2;
+    HRESULT hr;
     LONG len;
 
     doc = create_document(&IID_IXMLDOMDocument);
     if (!doc) return;
 
     str = SysAllocString( szComplete4 );
-    r = IXMLDOMDocument_loadXML( doc, str, &b );
-    ok( r == S_OK, "loadXML failed\n");
+    hr = IXMLDOMDocument_loadXML( doc, str, &b );
+    EXPECT_HR(hr, S_OK);
     ok( b == VARIANT_TRUE, "failed to load XML string\n");
     SysFreeString( str );
 
-    r = IXMLDOMDocument_get_documentElement( doc, &element );
-    ok( r == S_OK, "ret %08x\n", r);
+    hr = IXMLDOMDocument_get_documentElement( doc, &element );
+    EXPECT_HR(hr, S_OK);
 
-    r = IXMLDOMElement_get_childNodes( element, &node_list );
-    ok( r == S_OK, "ret %08x\n", r);
+    hr = IXMLDOMElement_get_childNodes( element, &node_list );
+    EXPECT_HR(hr, S_OK);
 
-    r = IXMLDOMNodeList_get_length( node_list, &len );
-    ok( r == S_OK, "ret %08x\n", r);
+    hr = IXMLDOMNodeList_get_length( node_list, &len );
+    EXPECT_HR(hr, S_OK);
     ok( len == 4, "len %d\n", len);
 
-    r = IXMLDOMNodeList_get_item( node_list, 2, &node );
-    ok( r == S_OK, "ret %08x\n", r);
+    hr = IXMLDOMNodeList_get_item( node_list, 2, &node );
+    EXPECT_HR(hr, S_OK);
 
-    r = IXMLDOMNode_get_childNodes( node, &node_list2 );
-    ok( r == S_OK, "ret %08x\n", r);
+    hr = IXMLDOMNode_get_childNodes( node, &node_list2 );
+    EXPECT_HR(hr, S_OK);
 
-    r = IXMLDOMNodeList_get_length( node_list2, &len );
-    ok( r == S_OK, "ret %08x\n", r);
+    hr = IXMLDOMNodeList_get_length( node_list2, &len );
+    EXPECT_HR(hr, S_OK);
     ok( len == 0, "len %d\n", len);
 
-    r = IXMLDOMNodeList_get_item( node_list2, 0, &node2);
-    ok( r == S_FALSE, "ret %08x\n", r);
+    hr = IXMLDOMNodeList_get_item( node_list2, 0, &node2);
+    EXPECT_HR(hr, S_FALSE);
 
     IXMLDOMNodeList_Release( node_list2 );
     IXMLDOMNode_Release( node );
     IXMLDOMNodeList_Release( node_list );
     IXMLDOMElement_Release( element );
+
+    /* test for children of <?xml ..?> node */
+    hr = IXMLDOMDocument_get_firstChild(doc, &node);
+    EXPECT_HR(hr, S_OK);
+
+    str = NULL;
+    hr = IXMLDOMNode_get_nodeName(node, &str);
+    EXPECT_HR(hr, S_OK);
+    ok(!lstrcmpW(str, _bstr_("xml")), "got %s\n", wine_dbgstr_w(str));
+    SysFreeString(str);
+
+    /* it returns empty but valid node list */
+    node_list = (void*)0xdeadbeef;
+    hr = IXMLDOMNode_get_childNodes(node, &node_list);
+    EXPECT_HR(hr, S_OK);
+
+    len = -1;
+    hr = IXMLDOMNodeList_get_length(node_list, &len);
+    EXPECT_HR(hr, S_OK);
+    ok(len == 0, "got %d\n", len);
+
+    IXMLDOMNodeList_Release( node_list );
+    IXMLDOMNode_Release(node);
+
     IXMLDOMDocument_Release( doc );
+    free_bstrs();
 }
 
 static void test_get_firstChild(void)
@@ -3973,7 +3998,7 @@ static void test_get_firstChild(void)
     r = IXMLDOMNode_get_nodeName( node, &str );
     ok( r == S_OK, "ret %08x\n", r);
 
-    ok(memcmp(str, xmlW, sizeof(xmlW)) == 0, "expected \"xml\" node name\n");
+    ok(!lstrcmpW(str, xmlW), "expected \"xml\" node name, got %s\n", wine_dbgstr_w(str));
 
     SysFreeString(str);
     IXMLDOMNode_Release( node );
@@ -9693,19 +9718,101 @@ static void test_get_attributes(void)
 
     if (hr == S_OK)
     {
-        IXMLDOMNode_Release(node);
+        IXMLDOMAttribute *attr;
+        DOMNodeType type;
+        VARIANT v;
 
-        node = NULL;
-        hr = IXMLDOMNamedNodeMap_get_item(map, 0, &node);
+        node2 = NULL;
+        hr = IXMLDOMNamedNodeMap_get_item(map, 0, &node2);
+        EXPECT_HR(hr, S_OK);
+        ok(node != NULL, "got %p\n", node2);
+
+        hr = IXMLDOMNode_get_nodeName(node2, &str);
+        EXPECT_HR(hr, S_OK);
+        ok(!lstrcmpW(str, _bstr_("version")), "got %s\n", wine_dbgstr_w(str));
+        SysFreeString(str);
+
+        length = -1;
+        hr = IXMLDOMNamedNodeMap_get_length(map, &length);
+        EXPECT_HR(hr, S_OK);
+        ok(length == 1, "got %d\n", length);
+
+        type = -1;
+        hr = IXMLDOMNode_get_nodeType(node2, &type);
+        EXPECT_HR(hr, S_OK);
+        ok(type == NODE_ATTRIBUTE, "got %d\n", type);
+
+        hr = IXMLDOMNode_get_xml(node, &str);
+        EXPECT_HR(hr, S_OK);
+        ok(!lstrcmpW(str, _bstr_("<?xml version=\"1.0\"?>")), "got %s\n", wine_dbgstr_w(str));
+        SysFreeString(str);
+
+        hr = IXMLDOMNode_get_text(node, &str);
+        EXPECT_HR(hr, S_OK);
+        ok(!lstrcmpW(str, _bstr_("version=\"1.0\"")), "got %s\n", wine_dbgstr_w(str));
+        SysFreeString(str);
+
+        hr = IXMLDOMNamedNodeMap_removeNamedItem(map, _bstr_("version"), NULL);
+        EXPECT_HR(hr, S_OK);
+
+        length = -1;
+        hr = IXMLDOMNamedNodeMap_get_length(map, &length);
+        EXPECT_HR(hr, S_OK);
+        ok(length == 0, "got %d\n", length);
+
+        hr = IXMLDOMNode_get_xml(node, &str);
+        EXPECT_HR(hr, S_OK);
+        ok(!lstrcmpW(str, _bstr_("<?xml version=\"1.0\"?>")), "got %s\n", wine_dbgstr_w(str));
+        SysFreeString(str);
+
+        hr = IXMLDOMNode_get_text(node, &str);
+        EXPECT_HR(hr, S_OK);
+        ok(!lstrcmpW(str, _bstr_("")), "got %s\n", wine_dbgstr_w(str));
+        SysFreeString(str);
+
+        IXMLDOMNamedNodeMap_Release(map);
+
+        hr = IXMLDOMNode_get_attributes(node, &map);
         ok(hr == S_OK, "got %08x\n", hr);
-        ok(node != NULL, "got %p\n", node);
 
-        hr = IXMLDOMNode_get_nodeName(node, &str);
+        length = -1;
+        hr = IXMLDOMNamedNodeMap_get_length(map, &length);
+        EXPECT_HR(hr, S_OK);
+        ok(length == 0, "got %d\n", length);
+
+        hr = IXMLDOMDocument_createAttribute(doc, _bstr_("encoding"), &attr);
+        EXPECT_HR(hr, S_OK);
+
+        V_VT(&v) = VT_BSTR;
+        V_BSTR(&v) = _bstr_("UTF-8");
+        hr = IXMLDOMAttribute_put_nodeValue(attr, v);
+        EXPECT_HR(hr, S_OK);
+
+        EXPECT_REF(attr, 2);
+        hr = IXMLDOMNamedNodeMap_setNamedItem(map, (IXMLDOMNode*)attr, NULL);
+        EXPECT_HR(hr, S_OK);
+        EXPECT_REF(attr, 2);
+
+        hr = IXMLDOMNode_get_attributes(node, &map);
         ok(hr == S_OK, "got %08x\n", hr);
-        ok(!lstrcmpW(str, _bstr_("version")), "got %s\n", wine_dbgstr_w(str));
+
+        length = -1;
+        hr = IXMLDOMNamedNodeMap_get_length(map, &length);
+        EXPECT_HR(hr, S_OK);
+        ok(length == 1, "got %d\n", length);
+
+        hr = IXMLDOMNode_get_xml(node, &str);
+        EXPECT_HR(hr, S_OK);
+        ok(!lstrcmpW(str, _bstr_("<?xml version=\"1.0\"?>")), "got %s\n", wine_dbgstr_w(str));
+        SysFreeString(str);
+
+        hr = IXMLDOMNode_get_text(node, &str);
+        EXPECT_HR(hr, S_OK);
+        ok(!lstrcmpW(str, _bstr_("encoding=\"UTF-8\"")), "got %s\n", wine_dbgstr_w(str));
         SysFreeString(str);
 
         IXMLDOMNamedNodeMap_Release(map);
+        IXMLDOMNode_Release(node2);
     }
 
     IXMLDOMNode_Release(node);




More information about the wine-cvs mailing list