Alistair Leslie-Hughes : msxml3: previousSibling not supported for Attribute, Document and Document Fragment Nodes.
Alexandre Julliard
julliard at winehq.org
Wed Jan 9 07:02:09 CST 2008
Module: wine
Branch: master
Commit: 2896c462450a144ad122953e6ac76b25de0c4bfd
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2896c462450a144ad122953e6ac76b25de0c4bfd
Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date: Tue Jan 8 11:34:29 2008 +1100
msxml3: previousSibling not supported for Attribute, Document and Document Fragment Nodes.
---
dlls/msxml3/node.c | 18 +++++++++++++++++-
dlls/msxml3/tests/domdoc.c | 18 ++++++++++++++++++
2 files changed, 35 insertions(+), 1 deletions(-)
diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c
index dae9130..03d96f5 100644
--- a/dlls/msxml3/node.c
+++ b/dlls/msxml3/node.c
@@ -359,7 +359,23 @@ static HRESULT WINAPI xmlnode_get_previousSibling(
IXMLDOMNode** previousSibling)
{
xmlnode *This = impl_from_IXMLDOMNode( iface );
- return get_node( This, "previous", This->node->prev, previousSibling );
+
+ TRACE("%p\n", This );
+
+ if (!previousSibling)
+ return E_INVALIDARG;
+
+ switch( This->node->type )
+ {
+ /* Attribute, Document and Document Fragment Nodes do not support previousSibling */
+ case XML_DOCUMENT_NODE:
+ case XML_DOCUMENT_FRAG_NODE:
+ case XML_ATTRIBUTE_NODE:
+ *previousSibling = NULL;
+ return S_FALSE;
+ default:
+ return get_node( This, "previous", This->node->prev, previousSibling );
+ }
}
static HRESULT WINAPI xmlnode_get_nextSibling(
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
index 910c044..3418ebb 100644
--- a/dlls/msxml3/tests/domdoc.c
+++ b/dlls/msxml3/tests/domdoc.c
@@ -1829,6 +1829,15 @@ static void test_xmlTypes(void)
ok(hr == S_FALSE, "ret %08x\n", hr );
ok(pNextChild == NULL, "pDocChild not NULL\n");
+ /* test previous Sibling */
+ hr = IXMLDOMDocument_get_previousSibling(doc, NULL);
+ ok(hr == E_INVALIDARG, "ret %08x\n", hr );
+
+ pNextChild = (IXMLDOMNode *)0x1;
+ hr = IXMLDOMDocument_get_previousSibling(doc, &pNextChild);
+ ok(hr == S_FALSE, "ret %08x\n", hr );
+ ok(pNextChild == NULL, "pNextChild not NULL\n");
+
hr = IXMLDOMDocument_createElement(doc, _bstr_("Testing"), &pRoot);
ok(hr == S_OK, "ret %08x\n", hr );
if(hr == S_OK)
@@ -1891,6 +1900,15 @@ static void test_xmlTypes(void)
ok(hr == S_FALSE, "ret %08x\n", hr );
ok(pNextChild == NULL, "pNextChild not NULL\n");
+ /* test Previous Sibling*/
+ hr = IXMLDOMAttribute_get_previousSibling(pAttrubute, NULL);
+ ok(hr == E_INVALIDARG, "ret %08x\n", hr );
+
+ pNextChild = (IXMLDOMNode *)0x1;
+ hr = IXMLDOMAttribute_get_previousSibling(pAttrubute, &pNextChild);
+ ok(hr == S_FALSE, "ret %08x\n", hr );
+ ok(pNextChild == NULL, "pNextChild not NULL\n");
+
hr = IXMLDOMElement_appendChild(pElement, (IXMLDOMNode*)pAttrubute, &pNewChild);
ok(hr == E_FAIL, "ret %08x\n", hr );
ok(pNewChild == NULL, "pNewChild not NULL\n");
More information about the wine-cvs
mailing list