33#define XML_E_INVALIDATROOTLEVEL 0xc00ce556
37 DWORD dwNumberOfBytesWritten;
41 static const char data[] =
42 "<?xml version=\"1.0\" ?>\n"
43 "<!DOCTYPE BankAccount>\n"
45 " <Number>1234</Number>\n"
46 " <Name>Captain Ahab</Name>\n"
85 IXMLDocument *doc =
NULL;
96 &IID_IXMLDocument, (
void**)&doc);
104 hr = IDispatch_GetTypeInfo(disp, 0, 0, &ti);
112 ITypeInfo_Release(ti);
113 IDispatch_Release(disp);
115 hr = IXMLDocument_QueryInterface(doc, &IID_IXMLDOMDocument, (
void**)&disp);
124 ok(psi !=
NULL,
"Expected non-NULL psi\n");
126 hr = IXMLDocument_get_root(doc, &
element);
130 hr = IPersistStreamInit_Load(psi,
stream);
138 hr = IXMLDocument_get_version(doc,
NULL);
142 hr = IXMLDocument_get_version(doc, &
name);
148 hr = IXMLDocument_get_doctype(doc,
NULL);
151 hr = IXMLDocument_get_doctype(doc, &
name);
156 hr = IXMLDocument_get_root(doc, &
element);
161 hr = IXMLDocument_get_root(doc, &
child);
165 IXMLElement_Release(
child);
169 ok(
type == XMLELEMTYPE_ELEMENT,
"Unexpected type %ld.\n",
type);
180 hr = IXMLElementCollection_get_length(
collection, &num_child);
182 ok(num_child == 2,
"Unexpected length %ld.\n", num_child);
194 ok(
type == XMLELEMTYPE_ELEMENT,
"Unexpected type %ld.\n",
type);
201 hr = IXMLElement_get_children(
child, &inner);
203 ok(inner !=
NULL,
"Expected non-NULL inner\n");
205 hr = IXMLElementCollection_get_length(inner, &num_child);
207 ok(num_child == 1,
"Unexpected length %ld.\n", num_child);
209 hr = IXMLElementCollection_item(inner, vIndex, vName, (
IDispatch **)&
value);
215 ok(
type == XMLELEMTYPE_TEXT,
"Unexpected type %ld.\n",
type);
222 IXMLElementCollection_Release(inner);
224 inner = (IXMLElementCollection *)0xdeadbeef;
225 hr = IXMLElement_get_children(
value, &inner);
227 ok(inner ==
NULL,
"Expected NULL inner, got %p\n", inner);
229 IXMLElement_Release(
value);
230 IXMLElement_Release(
child);
241 ok(
type == XMLELEMTYPE_ELEMENT,
"Unexpected type %ld.\n",
type);
248 hr = IXMLElement_get_children(
child, &inner);
250 ok(inner !=
NULL,
"Expected non-NULL inner\n");
252 hr = IXMLElementCollection_get_length(inner, &num_child);
254 ok(num_child == 1,
"Unexpected length %ld.\n", num_child);
257 hr = IXMLElementCollection_item(inner, vIndex, vName, (
IDispatch **)&
value);
263 ok(
type == XMLELEMTYPE_TEXT,
"Unexpected type %ld.\n",
type);
270 IXMLElementCollection_Release(inner);
272 inner = (IXMLElementCollection *)0xdeadbeef;
273 hr = IXMLElement_get_children(
value, &inner);
275 ok(inner ==
NULL,
"Expected NULL inner, got %p\n", inner);
277 IXMLElement_Release(
value);
278 IXMLElement_Release(
child);
283 IPersistStreamInit_Release(psi);
284 IXMLDocument_Release(doc);
292 IXMLDocument *doc =
NULL;
298 &IID_IXMLDocument, (
LPVOID*)&doc);
304 element = (IXMLElement *)0xdeadbeef;
305 hr = IXMLDocument_createElement(doc, vType, vName, &
element);
313 hr = IXMLDocument_createElement(doc, vType, vName, &
element);
323 ok(
type == XMLELEMTYPE_OTHER ||
type == XMLELEMTYPE_ELEMENT,
"Unexpected type %ld.\n",
type);
336 V_I4(&vType) = XMLELEMTYPE_ELEMENT;
338 hr = IXMLDocument_createElement(doc, vType, vName, &
element);
344 ok(
type == XMLELEMTYPE_ELEMENT,
"Unexpected type %ld.\n",
type);
350 V_I4(&vType) = XMLELEMTYPE_ELEMENT;
352 hr = IXMLDocument_createElement(doc, vType, vName,
NULL);
355 root = (IXMLElement *)0xdeadbeef;
356 hr = IXMLDocument_get_root(doc, &
root);
361 V_I4(&vType) = XMLELEMTYPE_ELEMENT;
363 hr = IXMLDocument_createElement(doc, vType, vName, &
element);
368 root = (IXMLElement *)0xdeadbeef;
369 hr = IXMLDocument_get_root(doc, &
root);
374 IXMLDocument_Release(doc);
379 IXMLDocument *doc =
NULL;
391 &IID_IXMLDocument, (
LPVOID*)&doc);
396 ok(psi !=
NULL,
"Expected non-NULL psi\n");
399 hr = IPersistStreamInit_GetSizeMax(psi,
NULL);
402 hr = IPersistStreamInit_Load(psi,
NULL);
408 hr = IPersistStreamInit_GetClassID(psi,
NULL);
411 hr = IPersistStreamInit_IsDirty(psi);
420 hr = IPersistStreamInit_GetSizeMax(psi, &
size);
422 ok(
size.QuadPart == 0,
"Expected 0\n");
424 hr = IPersistStreamInit_Load(psi,
stream);
430 hr = IPersistStreamInit_IsDirty(psi);
440 stat.cbSize.QuadPart = 0;
447 hr = IXMLDocument_get_root(doc, &
element);
454 hr = IPersistStreamInit_IsDirty(psi);
458 hr = IPersistStreamInit_Load(psi,
stream);
462 hr = IPersistStreamInit_IsDirty(psi);
466 hr = IPersistStreamInit_InitNew(psi);
469 hr = IPersistStreamInit_IsDirty(psi);
479 stat.cbSize.QuadPart = 0;
485 memset(&
id, 0,
sizeof(
id));
486 hr = IPersistStreamInit_GetClassID(psi, &
id);
491 IPersistStreamInit_Release(psi);
492 IXMLDocument_Release(doc);
498 IXMLDocument *doc =
NULL;
502 &IID_IXMLDocument, (
LPVOID*)&doc);
505 win_skip(
"Failed to create XMLDocument instance\n");
509 IXMLDocument_Release(doc);
515 IXMLDocument *doc =
NULL;
523 &IID_IXMLDocument, (
LPVOID*)&doc);
527 V_I4(&vType) = XMLELEMTYPE_ELEMENT;
529 hr = IXMLDocument_createElement(doc, vType, vName, &
element);
534 V_I4(&vType) = XMLELEMTYPE_TEXT;
536 hr = IXMLDocument_createElement(doc, vType, vName, &
child);
541 V_I4(&vType) = XMLELEMTYPE_TEXT;
543 hr = IXMLDocument_createElement(doc, vType, vName, &child2);
545 ok(child2 !=
NULL,
"Expected non-NULL child\n");
569 refcount = IXMLElement_AddRef(
child);
570 ok(refcount == 2,
"Unexpected refcount %ld.\n", refcount);
571 IXMLElement_Release(
child);
574 refcount = IXMLElement_AddRef(
child);
575 ok(refcount == 2,
"Unexpected refcount %ld.\n", refcount);
576 IXMLElement_Release(
child);
577 hr = IXMLElement_addChild(
element, child2, 0, -1);
584 refcount = IXMLElement_AddRef(
child);
585 ok(refcount == 2,
"Unexpected refcount %ld.\n", refcount);
586 IXMLElement_Release(
child);
593 IXMLElement_Release(child2);
604 ok(child2 !=
NULL,
"Expected not NULL child\n");
606 IXMLElement_Release(child2);
610 V_I4(&vType) = XMLELEMTYPE_TEXT;
612 hr = IXMLDocument_createElement(doc, vType, vName, &child2);
614 ok(child2 !=
NULL,
"Expected non-NULL child\n");
616 hr = IXMLElement_addChild(
child, child2, 0, -1);
619 hr = IXMLElement_removeChild(
element, child2);
622 hr = IXMLElement_removeChild(
child, child2);
629 IXMLElement_Release(
child);
630 IXMLElement_Release(child2);
631 IXMLDocument_Release(doc);
638 IXMLDocument *doc =
NULL;
650 &IID_IXMLDocument, (
LPVOID*)&doc);
658 hr = IXMLDocument_put_URL(doc,
url);
665 hr = IXMLDocument_get_root(doc, &
element);
705 hr = IXMLElementCollection_QueryInterface(
collection, &IID_IEnumVARIANT, (
LPVOID *)&enumVar);
707 ok(enumVar !=
NULL,
"Expected non-NULL enumVar\n");
708 IEnumVARIANT_Release(enumVar);
710 hr = IXMLElementCollection_get__newEnum(
collection, &unk);
712 ok(unk !=
NULL,
"Expected non-NULL unk\n");
714 enumVar = (
void *)0xdeadbeef;
715 hr = IUnknown_QueryInterface(unk, &IID_IXMLElementCollection, (
LPVOID *)&enumVar);
717 ok(enumVar ==
NULL ||
broken(enumVar == (
void *)0xdeadbeef) ,
"Expected NULL, got %p\n", enumVar);
719 hr = IUnknown_QueryInterface(unk, &IID_IEnumVARIANT, (
LPVOID *)&enumVar);
721 ok(enumVar !=
NULL,
"Expected non-NULL enumVar\n");
722 IUnknown_Release(unk);
725 hr = IEnumVARIANT_Next(enumVar, 1, &
var[0], &num_vars);
728 ok(num_vars == 1,
"Unexpected count %ld.\n", num_vars);
738 ok(
type == XMLELEMTYPE_ELEMENT,
"Unexpected type %ld.\n",
type);
744 IXMLElement_Release(
child);
747 hr = IEnumVARIANT_Next(enumVar, 1, &
var[0], &num_vars);
750 ok(num_vars == 1,
"Unexpected count %ld.\n", num_vars);
756 hr = IEnumVARIANT_Next(enumVar, 1, &
dummy, &num_vars);
759 ok(!num_vars,
"Unexpected count %ld.\n", num_vars);
766 hr = IEnumVARIANT_Reset(enumVar);
770 hr = IEnumVARIANT_Next(enumVar, 2,
var, &num_vars);
774 ok(num_vars == 2,
"Unexpected count %ld.\n", num_vars);
777 hr = IEnumVARIANT_Next(enumVar, 1, &
dummy, &num_vars);
780 ok(!num_vars,
"Unexpected count %ld.\n", num_vars);
782 hr = IEnumVARIANT_Reset(enumVar);
791 hr = IEnumVARIANT_Next(enumVar, 4,
var, &num_vars);
797 ok(num_vars == 2,
"Unexpected count %ld.\n", num_vars);
811 ok(
type == XMLELEMTYPE_ELEMENT,
"Unexpected type %ld.\n",
type);
817 IXMLElement_Release(
child);
833 ok(
type == XMLELEMTYPE_ELEMENT,
"Unexpected type %ld.\n",
type);
839 IXMLElement_Release(
child);
852 ok(
type == XMLELEMTYPE_ELEMENT,
"Unexpected type %ld.\n",
type);
858 IXMLElement_Release(
child);
866 child = (IXMLElement *)0xdeadbeef;
871 IEnumVARIANT_Release(enumVar);
875 IXMLDocument_Release(doc);
882 IXMLDocument *doc =
NULL;
884 IXMLElement *
child, *child2;
885 IXMLElementCollection *children;
894 &IID_IXMLDocument, (
LPVOID*)&doc);
898 V_I4(&vType) = XMLELEMTYPE_ELEMENT;
900 hr = IXMLDocument_createElement(doc, vType, vName, &
element);
909 hr = IDispatch_GetTypeInfo(disp, 0, 0, &ti);
917 ITypeInfo_Release(ti);
918 IDispatch_Release(disp);
925 parent = (IXMLElement *)0xdeadbeef;
983 children = (IXMLElementCollection *)0xdeadbeef;
984 hr = IXMLElement_get_children(
element, &children);
986 ok(children ==
NULL,
"Expected NULL collection\n");
990 ok(
type == XMLELEMTYPE_ELEMENT,
"Unexpected type %ld.\n",
type);
994 ok(
str && !*
str,
"Expected empty text\n");
1004 V_I4(&vType) = XMLELEMTYPE_TEXT;
1006 hr = IXMLDocument_createElement(doc, vType, vName, &
child);
1018 parent = (IXMLElement *)0xdeadbeef;
1025 ok(
type == XMLELEMTYPE_ELEMENT,
"Unexpected type %ld.\n",
type);
1027 children = (IXMLElementCollection *)0xdeadbeef;
1028 hr = IXMLElement_get_children(
element, &children);
1030 ok(children !=
NULL,
"Expected non-NULL collection\n");
1032 hr = IXMLElementCollection_get_length(children, &num_child);
1034 ok(num_child == 1,
"Unexpected length %ld.\n", num_child);
1040 hr = IXMLElementCollection_item(children, vIndex, vName, (
IDispatch **)&child2);
1042 ok(child2 !=
NULL,
"Expected non-NULL child\n");
1044 hr = IXMLElement_get_type(child2, &
type);
1046 ok(
type == XMLELEMTYPE_TEXT,
"Unexpected type %ld.\n",
type);
1053 hr = IXMLElement_get_text(child2, &
str);
1065 hr = IXMLElement_put_text(child2,
str);
1074 IXMLElement_Release(child2);
1075 IXMLElementCollection_Release(children);
1076 IXMLElement_Release(
parent);
1077 IXMLElement_Release(
child);
1079 IXMLDocument_Release(doc);
1087 ok(
hr ==
S_OK,
"failed to init com\n");
#define ReadFile(a, b, c, d, e)
#define INVALID_HANDLE_VALUE
#define CreateFileA(a, b, c, d, e, f, g)
#define FILE_ATTRIBUTE_NORMAL
#define MultiByteToWideChar
static void cleanup(void)
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
DWORD WINAPI GetFullPathNameA(IN LPCSTR lpFileName, IN DWORD nBufferLength, OUT LPSTR lpBuffer, OUT LPSTR *lpFilePart)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
HRESULT WINAPI CreateStreamOnHGlobal(HGLOBAL hGlobal, BOOL fDeleteOnRelease, LPSTREAM *ppstm)
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLuint GLsizei GLsizei * length
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
static ERESOURCE GlobalLock
static void create_stream_on_file(IStream **stream, LPCSTR path)
static void test_xmlelem_collection(void)
static void test_xmlelem_children(void)
static void test_xmldoc(void)
static void create_xml_file(LPCSTR filename)
static void test_createElement(void)
static BOOL test_try_xmldoc(void)
static void test_xmlelem(void)
#define XML_E_INVALIDATROOTLEVEL
static void test_persiststreaminit(void)
static ICollection collection
#define DISPID_XMLELEMENT_TAGNAME
#define DISPID_XMLDOCUMENT_ROOT
const struct _GUID CLSID_XMLDocument
BSTR WINAPI SysAllocString(LPCOLESTR str)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
const GUID IID_IPersistStreamInit
#define IsEqualCLSID(rclsid1, rclsid2)
static unsigned int file_size
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
#define DISP_E_PARAMNOTFOUND