Alistair Leslie-Hughes : msxml3: Implement get_nodeTypeString.
Alexandre Julliard
julliard at winehq.org
Wed Jan 16 07:09:33 CST 2008
Module: wine
Branch: master
Commit: 055b5e44fe616a83f46e8503286870ba34d4fe77
URL: http://source.winehq.org/git/wine.git/?a=commit;h=055b5e44fe616a83f46e8503286870ba34d4fe77
Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date: Wed Jan 16 16:47:19 2008 +1100
msxml3: Implement get_nodeTypeString.
---
dlls/msxml3/node.c | 59 ++++++++++++++++++++++++++++++++++++++++++-
dlls/msxml3/tests/domdoc.c | 45 ++++++++++++++++++++++++++++++++-
2 files changed, 101 insertions(+), 3 deletions(-)
diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c
index e354081..2fb6f86 100644
--- a/dlls/msxml3/node.c
+++ b/dlls/msxml3/node.c
@@ -646,8 +646,63 @@ static HRESULT WINAPI xmlnode_get_nodeTypeString(
IXMLDOMNode *iface,
BSTR* xmlnodeType)
{
- FIXME("\n");
- return E_NOTIMPL;
+ xmlnode *This = impl_from_IXMLDOMNode( iface );
+ const xmlChar *str;
+
+ TRACE("%p\n", This );
+
+ if (!xmlnodeType)
+ return E_INVALIDARG;
+
+ if ( !This->node )
+ return E_FAIL;
+
+ switch( This->node->type )
+ {
+ case XML_ATTRIBUTE_NODE:
+ str = (const xmlChar*) "attribute";
+ break;
+ case XML_CDATA_SECTION_NODE:
+ str = (const xmlChar*) "cdatasection";
+ break;
+ case XML_COMMENT_NODE:
+ str = (const xmlChar*) "comment";
+ break;
+ case XML_DOCUMENT_NODE:
+ str = (const xmlChar*) "document";
+ break;
+ case XML_DOCUMENT_FRAG_NODE:
+ str = (const xmlChar*) "documentfragment";
+ break;
+ case XML_ELEMENT_NODE:
+ str = (const xmlChar*) "element";
+ break;
+ case XML_ENTITY_NODE:
+ str = (const xmlChar*) "entity";
+ break;
+ case XML_ENTITY_REF_NODE:
+ str = (const xmlChar*) "entityreference";
+ break;
+ case XML_NOTATION_NODE:
+ str = (const xmlChar*) "notation";
+ break;
+ case XML_PI_NODE:
+ str = (const xmlChar*) "processinginstruction";
+ break;
+ case XML_TEXT_NODE:
+ str = (const xmlChar*) "text";
+ break;
+ default:
+ FIXME("nodeName not mapped correctly (%d)\n", This->node->type);
+ str = This->node->name;
+ break;
+ }
+
+ *xmlnodeType = bstr_from_xmlChar( str );
+ if (!*xmlnodeType)
+ return S_FALSE;
+
+ return S_OK;
}
static HRESULT WINAPI xmlnode_get_text(
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
index 1637e7c..ca913cb 100644
--- a/dlls/msxml3/tests/domdoc.c
+++ b/dlls/msxml3/tests/domdoc.c
@@ -550,6 +550,12 @@ static void test_domdoc( void )
ok( V_VT(&var) == VT_NULL, "incorrect dataType type\n");
VariantClear(&var);
+ /* test nodeTypeString */
+ r = IXMLDOMText_get_nodeTypeString(nodetext, &str);
+ ok(r == S_OK, "ret %08x\n", r );
+ ok( !lstrcmpW( str, _bstr_("text") ), "incorrect nodeTypeString string\n");
+ SysFreeString(str);
+
IXMLDOMText_Release( nodetext );
}
SysFreeString( str );
@@ -569,7 +575,8 @@ static void test_domdoc( void )
r = IXMLDOMComment_get_lastChild(node_comment, &nodeChild);
ok(r == S_FALSE, "ret %08x\n", r );
ok(nodeChild == NULL, "pLastChild not NULL\n");
- IXMLDOMText_Release( node_comment );
+
+ IXMLDOMComment_Release( node_comment );
}
/* test Create Attribute */
@@ -607,6 +614,12 @@ static void test_domdoc( void )
ok( V_VT(&var) == VT_NULL, "incorrect dataType type\n");
VariantClear(&var);
+ /* test nodeTypeString */
+ r = IXMLDOMProcessingInstruction_get_nodeTypeString(nodePI, &str);
+ ok(r == S_OK, "ret %08x\n", r );
+ ok( !lstrcmpW( str, _bstr_("processinginstruction") ), "incorrect nodeTypeString string\n");
+ SysFreeString(str);
+
IXMLDOMProcessingInstruction_Release(nodePI);
}
@@ -1898,6 +1911,12 @@ static void test_xmlTypes(void)
ok( V_VT(&v) == VT_NULL, "incorrect dataType type\n");
VariantClear(&v);
+ /* test nodeTypeString */
+ hr = IXMLDOMDocument_get_nodeTypeString(doc, &str);
+ ok(hr == S_OK, "ret %08x\n", hr );
+ ok( !lstrcmpW( str, _bstr_("document") ), "incorrect nodeTypeString string\n");
+ SysFreeString(str);
+
hr = IXMLDOMDocument_createElement(doc, _bstr_("Testing"), &pRoot);
ok(hr == S_OK, "ret %08x\n", hr );
if(hr == S_OK)
@@ -1920,6 +1939,12 @@ static void test_xmlTypes(void)
ok(hr == S_FALSE, "ret %08x\n", hr );
ok( pAttribs == NULL, "pAttribs not NULL\n");
+ /* test nodeTypeString */
+ hr = IXMLDOMComment_get_nodeTypeString(pComment, &str);
+ ok(hr == S_OK, "ret %08x\n", hr );
+ ok( !lstrcmpW( str, _bstr_("comment") ), "incorrect nodeTypeString string\n");
+ SysFreeString(str);
+
hr = IXMLDOMElement_appendChild(pRoot, (IXMLDOMNode*)pComment, NULL);
ok(hr == S_OK, "ret %08x\n", hr );
@@ -1949,6 +1974,12 @@ static void test_xmlTypes(void)
hr = IXMLDOMElement_appendChild(pRoot, (IXMLDOMNode*)pElement, NULL);
ok(hr == S_OK, "ret %08x\n", hr );
+ /* test nodeTypeString */
+ hr = IXMLDOMDocument_get_nodeTypeString(pElement, &str);
+ ok(hr == S_OK, "ret %08x\n", hr );
+ ok( !lstrcmpW( str, _bstr_("element") ), "incorrect nodeTypeString string\n");
+ SysFreeString(str);
+
hr = IXMLDOMElement_get_nodeName(pElement, &str);
ok(hr == S_OK, "ret %08x\n", hr );
ok( !lstrcmpW( str, szElement ), "incorrect element node Name\n");
@@ -2016,6 +2047,12 @@ static void test_xmlTypes(void)
ok( !lstrcmpW( str, szAttribute ), "incorrect attribute node Name\n");
SysFreeString(str);
+ /* test nodeTypeString */
+ hr = IXMLDOMAttribute_get_nodeTypeString(pAttrubute, &str);
+ ok(hr == S_OK, "ret %08x\n", hr );
+ ok( !lstrcmpW( str, _bstr_("attribute") ), "incorrect nodeTypeString string\n");
+ SysFreeString(str);
+
hr = IXMLDOMAttribute_get_xml(pAttrubute, &str);
ok(hr == S_OK, "ret %08x\n", hr );
ok( !lstrcmpW( str, szAttributeXML ), "incorrect attribute xml\n");
@@ -2092,6 +2129,12 @@ static void test_xmlTypes(void)
ok( V_VT(&v) == VT_NULL, "incorrect dataType type\n");
VariantClear(&v);
+ /* test nodeTypeString */
+ hr = IXMLDOMCDATASection_get_nodeTypeString(pCDataSec, &str);
+ ok(hr == S_OK, "ret %08x\n", hr );
+ ok( !lstrcmpW( str, _bstr_("cdatasection") ), "incorrect nodeTypeString string\n");
+ SysFreeString(str);
+
IXMLDOMCDATASection_Release(pCDataSec);
}
More information about the wine-cvs
mailing list