return buf;
}
-#define expect_node(node, expstr) { char str[4096]; node_to_string(node, str); ok(strcmp(str, expstr)==0, "Invalid node: %s, exptected %s\n", str, expstr); }
-#define expect_list_and_release(list, expstr) { char *str = list_to_string(list); ok(strcmp(str, expstr)==0, "Invalid node list: %s, exptected %s\n", str, expstr); if (list) IXMLDOMNodeList_Release(list); }
+#define expect_node(node, expstr) { char str[4096]; node_to_string(node, str); ok(strcmp(str, expstr)==0, "Invalid node: %s, expected %s\n", str, expstr); }
+#define expect_list_and_release(list, expstr) { char *str = list_to_string(list); ok(strcmp(str, expstr)==0, "Invalid node list: %s, expected %s\n", str, expstr); if (list) IXMLDOMNodeList_Release(list); }
static void test_domdoc( void )
{
ok( !lstrcmpW( str, _bstr_("Begin This &is a Middle; test <>\\Append End") ), "incorrect get_text string\n");
SysFreeString(str);
+ /* delete data */
+ /* invalid arguments */
+ r = IXMLDOMText_deleteData(nodetext, -1, 1);
+ ok(r == E_INVALIDARG, "ret %08x\n", r );
+
+ r = IXMLDOMText_deleteData(nodetext, 0, 0);
+ ok(r == S_OK, "ret %08x\n", r );
+
+ r = IXMLDOMText_deleteData(nodetext, 0, -1);
+ ok(r == E_INVALIDARG, "ret %08x\n", r );
+
+ r = IXMLDOMText_get_length(nodetext, &nLength);
+ ok(r == S_OK, "ret %08x\n", r );
+ ok(nLength == 43, "expected 43 got %d\n", nLength);
+
+ r = IXMLDOMText_deleteData(nodetext, nLength, 1);
+ ok(r == S_OK, "ret %08x\n", r );
+
+ r = IXMLDOMText_deleteData(nodetext, nLength+1, 1);
+ ok(r == E_INVALIDARG, "ret %08x\n", r );
+
+ /* delete from start */
+ r = IXMLDOMText_deleteData(nodetext, 0, 5);
+ ok(r == S_OK, "ret %08x\n", r );
+
+ r = IXMLDOMText_get_length(nodetext, &nLength);
+ ok(r == S_OK, "ret %08x\n", r );
+ ok(nLength == 38, "expected 38 got %d\n", nLength);
+
+ r = IXMLDOMText_get_text(nodetext, &str);
+ ok(r == S_OK, "ret %08x\n", r );
+ /* whitespace preserving needs to be handled here */
+ todo_wine ok( !lstrcmpW( str, _bstr_("This &is a Middle; test <>\\Append End") ), "incorrect get_text string\n");
+ SysFreeString(str);
+
+ /* delete from end */
+ r = IXMLDOMText_deleteData(nodetext, 35, 3);
+ ok(r == S_OK, "ret %08x\n", r );
+
+ r = IXMLDOMText_get_length(nodetext, &nLength);
+ ok(r == S_OK, "ret %08x\n", r );
+ ok(nLength == 35, "expected 35 got %d\n", nLength);
+
+ r = IXMLDOMText_get_text(nodetext, &str);
+ ok(r == S_OK, "ret %08x\n", r );
+ todo_wine ok( !lstrcmpW( str, _bstr_("This &is a Middle; test <>\\Append") ), "incorrect get_text string\n");
+ SysFreeString(str);
+
+ /* delete from inside */
+ r = IXMLDOMText_deleteData(nodetext, 1, 33);
+ ok(r == S_OK, "ret %08x\n", r );
+
+ r = IXMLDOMText_get_length(nodetext, &nLength);
+ ok(r == S_OK, "ret %08x\n", r );
+ ok(nLength == 2, "expected 2 got %d\n", nLength);
+
+ r = IXMLDOMText_get_text(nodetext, &str);
+ ok(r == S_OK, "ret %08x\n", r );
+ todo_wine ok( !lstrcmpW( str, _bstr_("") ), "incorrect get_text string\n");
+ SysFreeString(str);
+
+ /* delete whole data ... */
+ r = IXMLDOMText_get_length(nodetext, &nLength);
+ ok(r == S_OK, "ret %08x\n", r );
+
+ r = IXMLDOMText_deleteData(nodetext, 0, nLength);
+ ok(r == S_OK, "ret %08x\n", r );
+ /* ... and try again with empty string */
+ r = IXMLDOMText_deleteData(nodetext, 0, nLength);
+ ok(r == S_OK, "ret %08x\n", r );
+
/* test put_data */
V_VT(&var) = VT_BSTR;
V_BSTR(&var) = SysAllocString(szstr1);
r = IXMLDOMNode_get_ownerDocument( element, &owner );
ok( r == S_OK, "get_ownerDocument return code\n");
ok( owner != doc, "get_ownerDocument return\n");
+ IXMLDOMDocument_Release(owner);
type = NODE_INVALID;
r = IXMLDOMNode_get_nodeType( element, &type);
ok( !lstrcmpW( str, _bstr_("Begin This &is a Middle; test <>\\Append End") ), "incorrect get_text string\n");
SysFreeString(str);
+ /* delete data */
+ /* invalid arguments */
+ hr = IXMLDOMComment_deleteData(pComment, -1, 1);
+ ok(hr == E_INVALIDARG, "ret %08x\n", hr );
+
+ hr = IXMLDOMComment_deleteData(pComment, 0, 0);
+ ok(hr == S_OK, "ret %08x\n", hr );
+
+ hr = IXMLDOMComment_deleteData(pComment, 0, -1);
+ ok(hr == E_INVALIDARG, "ret %08x\n", hr );
+
+ hr = IXMLDOMComment_get_length(pComment, &len);
+ ok(hr == S_OK, "ret %08x\n", hr );
+ ok(len == 43, "expected 43 got %d\n", len);
+
+ hr = IXMLDOMComment_deleteData(pComment, len, 1);
+ ok(hr == S_OK, "ret %08x\n", hr );
+
+ hr = IXMLDOMComment_deleteData(pComment, len+1, 1);
+ ok(hr == E_INVALIDARG, "ret %08x\n", hr );
+
+ /* delete from start */
+ hr = IXMLDOMComment_deleteData(pComment, 0, 5);
+ ok(hr == S_OK, "ret %08x\n", hr );
+
+ hr = IXMLDOMComment_get_length(pComment, &len);
+ ok(hr == S_OK, "ret %08x\n", hr );
+ ok(len == 38, "expected 38 got %d\n", len);
+
+ hr = IXMLDOMComment_get_text(pComment, &str);
+ ok(hr == S_OK, "ret %08x\n", hr );
+ ok( !lstrcmpW( str, _bstr_(" This &is a Middle; test <>\\Append End") ), "incorrect get_text string\n");
+ SysFreeString(str);
+
+ /* delete from end */
+ hr = IXMLDOMComment_deleteData(pComment, 35, 3);
+ ok(hr == S_OK, "ret %08x\n", hr );
+
+ hr = IXMLDOMComment_get_length(pComment, &len);
+ ok(hr == S_OK, "ret %08x\n", hr );
+ ok(len == 35, "expected 35 got %d\n", len);
+
+ hr = IXMLDOMComment_get_text(pComment, &str);
+ ok(hr == S_OK, "ret %08x\n", hr );
+ ok( !lstrcmpW( str, _bstr_(" This &is a Middle; test <>\\Append ") ), "incorrect get_text string\n");
+ SysFreeString(str);
+
+ /* delete from inside */
+ hr = IXMLDOMComment_deleteData(pComment, 1, 33);
+ ok(hr == S_OK, "ret %08x\n", hr );
+
+ hr = IXMLDOMComment_get_length(pComment, &len);
+ ok(hr == S_OK, "ret %08x\n", hr );
+ ok(len == 2, "expected 2 got %d\n", len);
+
+ hr = IXMLDOMComment_get_text(pComment, &str);
+ ok(hr == S_OK, "ret %08x\n", hr );
+ ok( !lstrcmpW( str, _bstr_(" ") ), "incorrect get_text string\n");
+ SysFreeString(str);
+
+ /* delete whole data ... */
+ hr = IXMLDOMComment_get_length(pComment, &len);
+ ok(hr == S_OK, "ret %08x\n", hr );
+
+ hr = IXMLDOMComment_deleteData(pComment, 0, len);
+ ok(hr == S_OK, "ret %08x\n", hr );
+ /* ... and try again with empty string */
+ hr = IXMLDOMComment_deleteData(pComment, 0, len);
+ ok(hr == S_OK, "ret %08x\n", hr );
+
IXMLDOMComment_Release(pComment);
}
IXMLDOMNode *pNextChild = (IXMLDOMNode *)0x1;
VARIANT var;
+ VariantInit(&var);
+
hr = IXMLDOMCDATASection_QueryInterface(pCDataSec, &IID_IXMLDOMElement, (LPVOID*)&pElement);
ok(hr == E_NOINTERFACE, "ret %08x\n", hr);
/* test get nodeValue */
hr = IXMLDOMCDATASection_get_nodeValue(pCDataSec, &var);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("This &is a ; test <>\\") ), "incorrect text string\n");
+ ok(V_VT(&var) == VT_BSTR, "got vt %04x\n", V_VT(&var));
+ ok( !lstrcmpW( V_BSTR(&var), _bstr_("This &is a ; test <>\\") ), "incorrect text string\n");
VariantClear(&var);
/* test get data */
ok( !lstrcmpW( str, _bstr_("Begin This &is a Middle; test <>\\Append End") ), "incorrect get_text string\n");
SysFreeString(str);
+ /* delete data */
+ /* invalid arguments */
+ hr = IXMLDOMCDATASection_deleteData(pCDataSec, -1, 1);
+ ok(hr == E_INVALIDARG, "ret %08x\n", hr );
+
+ hr = IXMLDOMCDATASection_deleteData(pCDataSec, 0, 0);
+ ok(hr == S_OK, "ret %08x\n", hr );
+
+ hr = IXMLDOMCDATASection_deleteData(pCDataSec, 0, -1);
+ ok(hr == E_INVALIDARG, "ret %08x\n", hr );
+
+ hr = IXMLDOMCDATASection_get_length(pCDataSec, &len);
+ ok(hr == S_OK, "ret %08x\n", hr );
+ ok(len == 43, "expected 43 got %d\n", len);
+
+ hr = IXMLDOMCDATASection_deleteData(pCDataSec, len, 1);
+ ok(hr == S_OK, "ret %08x\n", hr );
+
+ hr = IXMLDOMCDATASection_deleteData(pCDataSec, len+1, 1);
+ ok(hr == E_INVALIDARG, "ret %08x\n", hr );
+
+ /* delete from start */
+ hr = IXMLDOMCDATASection_deleteData(pCDataSec, 0, 5);
+ ok(hr == S_OK, "ret %08x\n", hr );
+
+ hr = IXMLDOMCDATASection_get_length(pCDataSec, &len);
+ ok(hr == S_OK, "ret %08x\n", hr );
+ ok(len == 38, "expected 38 got %d\n", len);
+
+ hr = IXMLDOMCDATASection_get_text(pCDataSec, &str);
+ ok(hr == S_OK, "ret %08x\n", hr );
+ ok( !lstrcmpW( str, _bstr_(" This &is a Middle; test <>\\Append End") ), "incorrect get_text string\n");
+ SysFreeString(str);
+
+ /* delete from end */
+ hr = IXMLDOMCDATASection_deleteData(pCDataSec, 35, 3);
+ ok(hr == S_OK, "ret %08x\n", hr );
+
+ hr = IXMLDOMCDATASection_get_length(pCDataSec, &len);
+ ok(hr == S_OK, "ret %08x\n", hr );
+ ok(len == 35, "expected 35 got %d\n", len);
+
+ hr = IXMLDOMCDATASection_get_text(pCDataSec, &str);
+ ok(hr == S_OK, "ret %08x\n", hr );
+ ok( !lstrcmpW( str, _bstr_(" This &is a Middle; test <>\\Append ") ), "incorrect get_text string\n");
+ SysFreeString(str);
+
+ /* delete from inside */
+ hr = IXMLDOMCDATASection_deleteData(pCDataSec, 1, 33);
+ ok(hr == S_OK, "ret %08x\n", hr );
+
+ hr = IXMLDOMCDATASection_get_length(pCDataSec, &len);
+ ok(hr == S_OK, "ret %08x\n", hr );
+ ok(len == 2, "expected 2 got %d\n", len);
+
+ hr = IXMLDOMCDATASection_get_text(pCDataSec, &str);
+ ok(hr == S_OK, "ret %08x\n", hr );
+ ok( !lstrcmpW( str, _bstr_(" ") ), "incorrect get_text string\n");
+ SysFreeString(str);
+
+ /* delete whole data ... */
+ hr = IXMLDOMCDATASection_get_length(pCDataSec, &len);
+ ok(hr == S_OK, "ret %08x\n", hr );
+
+ hr = IXMLDOMCDATASection_deleteData(pCDataSec, 0, len);
+ ok(hr == S_OK, "ret %08x\n", hr );
+
+ /* ... and try again with empty string */
+ hr = IXMLDOMCDATASection_deleteData(pCDataSec, 0, len);
+ ok(hr == S_OK, "ret %08x\n", hr );
+
IXMLDOMCDATASection_Release(pCDataSec);
}