Commit 710b643b authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

msxml3: Some get_attributes() tests.

parent 5488ea14
......@@ -315,14 +315,32 @@ static HRESULT WINAPI dom_pi_get_nextSibling(
static HRESULT WINAPI dom_pi_get_attributes(
IXMLDOMProcessingInstruction *iface,
IXMLDOMNamedNodeMap** attributeMap)
IXMLDOMNamedNodeMap** map)
{
dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
static const WCHAR xmlW[] = {'x','m','l',0};
HRESULT hr;
BSTR name;
TRACE("(%p)->(%p)\n", This, attributeMap);
TRACE("(%p)->(%p)\n", This, map);
*attributeMap = create_nodemap((IXMLDOMNode*)&This->IXMLDOMProcessingInstruction_iface);
return S_OK;
if (!map) return E_INVALIDARG;
*map = NULL;
hr = node_get_nodeName(&This->node, &name);
if (hr != S_OK) return hr;
if (!strcmpW(name, xmlW))
{
FIXME("not implemented for <?xml..?> declaration\n");
SysFreeString(name);
return E_NOTIMPL;
}
SysFreeString(name);
return S_FALSE;
}
static HRESULT WINAPI dom_pi_insertBefore(
......
......@@ -1089,8 +1089,6 @@ if (0)
SysFreeString( str );
if(nodetext)
{
IXMLDOMNamedNodeMap *pAttribs;
r = IXMLDOMText_QueryInterface(nodetext, &IID_IXMLDOMElement, (void**)&element);
ok(r == E_NOINTERFACE, "ret %08x\n", r );
......@@ -1103,15 +1101,6 @@ if (0)
ok(r == S_FALSE, "ret %08x\n", r );
ok(nodeChild == NULL, "nodeChild not NULL\n");
/* test get_attributes */
r = IXMLDOMText_get_attributes( nodetext, NULL );
ok( r == E_INVALIDARG, "get_attributes returned wrong code\n");
pAttribs = (IXMLDOMNamedNodeMap*)0x1;
r = IXMLDOMText_get_attributes( nodetext, &pAttribs);
ok(r == S_FALSE, "ret %08x\n", r );
ok( pAttribs == NULL, "pAttribs not NULL\n");
/* test length property */
r = IXMLDOMText_get_length(nodetext, NULL);
ok(r == E_INVALIDARG, "ret %08x\n", r );
......@@ -4258,15 +4247,6 @@ static void test_xmlTypes(void)
ok(hr == S_FALSE, "ret %08x\n", hr );
ok(pNextChild == NULL, "pNextChild not NULL\n");
/* test get_attributes */
hr = IXMLDOMDocument_get_attributes( doc, NULL );
ok( hr == E_INVALIDARG, "get_attributes returned wrong code\n");
pAttribs = (void*)0xdeadbeef;
hr = IXMLDOMDocument_get_attributes( doc, &pAttribs);
ok(hr == S_FALSE, "ret %08x\n", hr );
ok( pAttribs == NULL, "pAttribs not NULL\n");
/* test get_dataType */
V_VT(&v) = VT_EMPTY;
hr = IXMLDOMDocument_get_dataType(doc, &v);
......@@ -4352,15 +4332,6 @@ static void test_xmlTypes(void)
ok(hr == S_OK, "ret %08x\n", hr );
if(hr == S_OK)
{
/* test get_attributes */
hr = IXMLDOMComment_get_attributes( pComment, NULL );
ok( hr == E_INVALIDARG, "get_attributes returned wrong code\n");
pAttribs = (IXMLDOMNamedNodeMap*)0x1;
hr = IXMLDOMComment_get_attributes( pComment, &pAttribs);
ok(hr == S_FALSE, "ret %08x\n", hr );
ok( pAttribs == NULL, "pAttribs not NULL\n");
hr = IXMLDOMElement_appendChild(pRoot, (IXMLDOMNode*)pComment, NULL);
ok(hr == S_OK, "ret %08x\n", hr );
......@@ -4710,15 +4681,6 @@ static void test_xmlTypes(void)
ok(hr == S_FALSE, "ret %08x\n", hr );
ok(pNextChild == NULL, "pNextChild not NULL\n");
/* test get_attributes */
hr = IXMLDOMAttribute_get_attributes( pAttribute, NULL );
ok( hr == E_INVALIDARG, "get_attributes returned wrong code\n");
pAttribs = (IXMLDOMNamedNodeMap*)0x1;
hr = IXMLDOMAttribute_get_attributes( pAttribute, &pAttribs);
ok(hr == S_FALSE, "ret %08x\n", hr );
ok( pAttribs == NULL, "pAttribs not NULL\n");
hr = IXMLDOMElement_appendChild(pElement, (IXMLDOMNode*)pAttribute, &pNewChild);
ok(hr == E_FAIL, "ret %08x\n", hr );
ok(pNewChild == NULL, "pNewChild not NULL\n");
......@@ -4812,15 +4774,6 @@ static void test_xmlTypes(void)
hr = IXMLDOMElement_appendChild(pRoot, (IXMLDOMNode*)pCDataSec, NULL);
ok(hr == S_OK, "ret %08x\n", hr );
/* get Attribute Tests */
hr = IXMLDOMCDATASection_get_attributes(pCDataSec, NULL);
ok(hr == E_INVALIDARG, "ret %08x\n", hr );
pAttribs = (IXMLDOMNamedNodeMap*)0x1;
hr = IXMLDOMCDATASection_get_attributes(pCDataSec, &pAttribs);
ok(hr == S_FALSE, "ret %08x\n", hr );
ok(pAttribs == NULL, "pAttribs != NULL\n");
hr = IXMLDOMCDATASection_get_nodeName(pCDataSec, &str);
ok(hr == S_OK, "ret %08x\n", hr );
ok( !lstrcmpW( str, szCDataNodeText ), "incorrect cdata node Name\n");
......@@ -5139,15 +5092,6 @@ static void test_xmlTypes(void)
hr = IXMLDOMElement_appendChild(pRoot, (IXMLDOMNode*)pDocFrag, NULL);
ok(hr == S_OK, "ret %08x\n", hr );
/* get Attribute Tests */
hr = IXMLDOMDocumentFragment_get_attributes(pDocFrag, NULL);
ok(hr == E_INVALIDARG, "ret %08x\n", hr );
pAttribs = (IXMLDOMNamedNodeMap*)0x1;
hr = IXMLDOMDocumentFragment_get_attributes(pDocFrag, &pAttribs);
ok(hr == S_FALSE, "ret %08x\n", hr );
ok(pAttribs == NULL, "pAttribs != NULL\n");
hr = IXMLDOMDocumentFragment_get_nodeName(pDocFrag, &str);
ok(hr == S_OK, "ret %08x\n", hr );
ok( !lstrcmpW( str, szDocFragmentText ), "incorrect docfragment node Name\n");
......@@ -5192,15 +5136,6 @@ static void test_xmlTypes(void)
hr = IXMLDOMElement_appendChild(pRoot, (IXMLDOMNode*)pEntityRef, NULL);
ok(hr == S_OK, "ret %08x\n", hr );
/* get Attribute Tests */
hr = IXMLDOMEntityReference_get_attributes(pEntityRef, NULL);
ok(hr == E_INVALIDARG, "ret %08x\n", hr );
pAttribs = (IXMLDOMNamedNodeMap*)0x1;
hr = IXMLDOMEntityReference_get_attributes(pEntityRef, &pAttribs);
ok(hr == S_FALSE, "ret %08x\n", hr );
ok(pAttribs == NULL, "pAttribs != NULL\n");
/* test get_xml*/
hr = IXMLDOMEntityReference_get_xml(pEntityRef, &str);
ok(hr == S_OK, "ret %08x\n", hr );
......@@ -8364,8 +8299,8 @@ static const get_node_typestring_t get_node_typestring[] = {
static void test_get_nodeTypeString(void)
{
IXMLDOMDocument *doc;
const get_node_typestring_t *entry = get_node_typestring;
IXMLDOMDocument *doc;
HRESULT hr;
BSTR str;
......@@ -8402,6 +8337,99 @@ static void test_get_nodeTypeString(void)
free_bstrs();
}
typedef struct _get_attributes_t {
DOMNodeType type;
HRESULT hr;
} get_attributes_t;
static const get_attributes_t get_attributes[] = {
{ NODE_ATTRIBUTE, S_FALSE },
{ NODE_TEXT, S_FALSE },
{ NODE_CDATA_SECTION , S_FALSE },
{ NODE_ENTITY_REFERENCE, S_FALSE },
{ NODE_PROCESSING_INSTRUCTION, S_FALSE },
{ NODE_COMMENT, S_FALSE },
{ NODE_DOCUMENT_FRAGMENT, S_FALSE },
{ 0 }
};
static void test_get_attributes(void)
{
const get_attributes_t *entry = get_attributes;
IXMLDOMNamedNodeMap *map;
IXMLDOMDocument *doc;
IXMLDOMNode *node;
VARIANT_BOOL b;
HRESULT hr;
BSTR str;
doc = create_document(&IID_IXMLDOMDocument);
str = SysAllocString( szComplete3 );
hr = IXMLDOMDocument_loadXML(doc, str, &b);
SysFreeString(str);
hr = IXMLDOMDocument_get_attributes(doc, NULL);
ok(hr == E_INVALIDARG, "got %08x\n", hr);
map = (void*)0xdeadbeef;
hr = IXMLDOMDocument_get_attributes(doc, &map);
ok(hr == S_FALSE, "got %08x\n", hr);
ok(map == NULL, "got %p\n", map);
/* first child is <?xml ?> */
hr = IXMLDOMDocument_get_firstChild(doc, &node);
ok(hr == S_OK, "got %08x\n", hr);
hr = IXMLDOMNode_get_attributes(node, &map);
todo_wine ok(hr == S_OK, "got %08x\n", hr);
if (hr == S_OK)
{
IXMLDOMNode_Release(node);
node = NULL;
hr = IXMLDOMNamedNodeMap_get_item(map, 0, &node);
ok(hr == S_OK, "got %08x\n", hr);
ok(node != NULL, "got %p\n", node);
hr = IXMLDOMNode_get_nodeName(node, &str);
ok(hr == S_OK, "got %08x\n", hr);
ok(!lstrcmpW(str, _bstr_("version")), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
IXMLDOMNamedNodeMap_Release(map);
}
IXMLDOMNode_Release(node);
while (entry->type)
{
VARIANT var;
node = NULL;
V_VT(&var) = VT_I4;
V_I4(&var) = entry->type;
hr = IXMLDOMDocument_createNode(doc, var, _bstr_("node"), NULL, &node);
ok(hr == S_OK, "failed to create node, type %d\n", entry->type);
hr = IXMLDOMNode_get_attributes(node, NULL);
ok(hr == E_INVALIDARG, "got 0x%08x\n", hr);
map = (void*)0xdeadbeef;
hr = IXMLDOMNode_get_attributes(node, &map);
ok(hr == entry->hr, "got 0x%08x, expected 0x%08x. node type %d\n",
hr, entry->hr, entry->type);
ok(map == NULL, "got %p\n", map);
entry++;
}
IXMLDOMDocument_Release(doc);
free_bstrs();
}
START_TEST(domdoc)
{
IXMLDOMDocument *doc;
......@@ -8472,6 +8500,7 @@ START_TEST(domdoc)
test_get_tagName();
test_get_dataType();
test_get_nodeTypeString();
test_get_attributes();
test_xsltemplate();
CoUninitialize();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment