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);
808 ok(
type == XMLELEMTYPE_ELEMENT,
"Unexpected type %ld.\n",
type);
814 IXMLElement_Release(
child);
827 ok(
type == XMLELEMTYPE_ELEMENT,
"Unexpected type %ld.\n",
type);
833 IXMLElement_Release(
child);
846 ok(
type == XMLELEMTYPE_ELEMENT,
"Unexpected type %ld.\n",
type);
852 IXMLElement_Release(
child);
860 child = (IXMLElement *)0xdeadbeef;
865 IEnumVARIANT_Release(enumVar);
869 IXMLDocument_Release(doc);
876 IXMLDocument *doc =
NULL;
878 IXMLElement *
child, *child2;
879 IXMLElementCollection *children;
888 &IID_IXMLDocument, (
LPVOID*)&doc);
892 V_I4(&vType) = XMLELEMTYPE_ELEMENT;
894 hr = IXMLDocument_createElement(doc, vType, vName, &
element);
903 hr = IDispatch_GetTypeInfo(disp, 0, 0, &ti);
911 ITypeInfo_Release(ti);
912 IDispatch_Release(disp);
919 parent = (IXMLElement *)0xdeadbeef;
977 children = (IXMLElementCollection *)0xdeadbeef;
978 hr = IXMLElement_get_children(
element, &children);
980 ok(children ==
NULL,
"Expected NULL collection\n");
984 ok(
type == XMLELEMTYPE_ELEMENT,
"Unexpected type %ld.\n",
type);
988 ok(
str && !*
str,
"Expected empty text\n");
998 V_I4(&vType) = XMLELEMTYPE_TEXT;
1000 hr = IXMLDocument_createElement(doc, vType, vName, &
child);
1012 parent = (IXMLElement *)0xdeadbeef;
1019 ok(
type == XMLELEMTYPE_ELEMENT,
"Unexpected type %ld.\n",
type);
1021 children = (IXMLElementCollection *)0xdeadbeef;
1022 hr = IXMLElement_get_children(
element, &children);
1024 ok(children !=
NULL,
"Expected non-NULL collection\n");
1026 hr = IXMLElementCollection_get_length(children, &num_child);
1028 ok(num_child == 1,
"Unexpected length %ld.\n", num_child);
1034 hr = IXMLElementCollection_item(children, vIndex, vName, (
IDispatch **)&child2);
1036 ok(child2 !=
NULL,
"Expected non-NULL child\n");
1038 hr = IXMLElement_get_type(child2, &
type);
1040 ok(
type == XMLELEMTYPE_TEXT,
"Unexpected type %ld.\n",
type);
1047 hr = IXMLElement_get_text(child2, &
str);
1059 hr = IXMLElement_put_text(child2,
str);
1068 IXMLElement_Release(child2);
1069 IXMLElementCollection_Release(children);
1070 IXMLElement_Release(
parent);
1071 IXMLElement_Release(
child);
1073 IXMLDocument_Release(doc);
1081 ok(
hr ==
S_OK,
"failed to init com\n");
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
HRESULT WINAPI CreateStreamOnHGlobal(HGLOBAL hGlobal, BOOL delete_on_release, IStream **stream)
#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_reads_bytes_opt_(nNumberOfBytesToWrite) LPCVOID lpBuffer, _In_ DWORD nNumberOfBytesToWrite, _Out_opt_ LPDWORD lpNumberOfBytesWritten, _Inout_opt_ LPOVERLAPPED lpOverlapped)
DWORD WINAPI GetFullPathNameA(IN LPCSTR lpFileName, IN DWORD nBufferLength, OUT LPSTR lpBuffer, OUT LPSTR *lpFilePart)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
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