88 IXMLDocument *doc =
NULL;
98 static const WCHAR szBankAccount[] = {
'B',
'A',
'N',
'K',
'A',
'C',
'C',
'O',
'U',
'N',
'T',0};
99 static const WCHAR szNumber[] = {
'N',
'U',
'M',
'B',
'E',
'R',0};
100 static const WCHAR szNumVal[] = {
'1',
'2',
'3',
'4',0};
102 static const WCHAR szNameVal[] = {
'C',
'a',
'p',
't',
'a',
'i',
'n',
' ',
'A',
'h',
'a',
'b',0};
104 static const WCHAR rootW[] = {
'r',
'o',
'o',
't',0};
107 &IID_IXMLDocument, (
void**)&doc);
115 hr = IDispatch_GetTypeInfo(disp, 0, 0, &ti);
123 ITypeInfo_Release(ti);
124 IDispatch_Release(disp);
126 hr = IXMLDocument_QueryInterface(doc, &IID_IXMLDOMDocument, (
void**)&disp);
134 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
135 ok(psi !=
NULL,
"Expected non-NULL psi\n");
137 hr = IXMLDocument_get_root(doc, &
element);
141 hr = IPersistStreamInit_Load(psi,
stream);
149 hr = IXMLDocument_get_version(doc,
NULL);
153 hr = IXMLDocument_get_version(doc, &
name);
154 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
159 hr = IXMLDocument_get_doctype(doc,
NULL);
162 hr = IXMLDocument_get_doctype(doc, &
name);
163 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
167 hr = IXMLDocument_get_root(doc, &
element);
168 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
172 hr = IXMLDocument_get_root(doc, &
child);
173 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
176 IXMLElement_Release(
child);
179 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
180 ok(
type == XMLELEMTYPE_ELEMENT,
"Expected XMLELEMTYPE_ELEMENT, got %d\n",
type);
183 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
188 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
191 hr = IXMLElementCollection_get_length(
collection, &num_child);
192 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
193 ok(num_child == 2,
"Expected 2, got %d\n", num_child);
200 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
204 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
205 ok(
type == XMLELEMTYPE_ELEMENT,
"Expected XMLELEMTYPE_ELEMENT, got %d\n",
type);
208 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
212 hr = IXMLElement_get_children(
child, &inner);
213 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
214 ok(inner !=
NULL,
"Expected non-NULL inner\n");
216 hr = IXMLElementCollection_get_length(inner, &num_child);
217 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
218 ok(num_child == 1,
"Expected 1, got %d\n", num_child);
220 hr = IXMLElementCollection_item(inner, vIndex, vName, (
IDispatch **)&
value);
221 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
225 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
229 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
233 IXMLElementCollection_Release(inner);
235 inner = (IXMLElementCollection *)0xdeadbeef;
236 hr = IXMLElement_get_children(
value, &inner);
237 ok(
hr == 1,
"Expected 1, got %08x\n",
hr);
238 ok(inner ==
NULL,
"Expected NULL inner, got %p\n", inner);
240 IXMLElement_Release(
value);
241 IXMLElement_Release(
child);
247 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
251 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
252 ok(
type == XMLELEMTYPE_ELEMENT,
"Expected XMLELEMTYPE_ELEMENT, got %d\n",
type);
255 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
259 hr = IXMLElement_get_children(
child, &inner);
260 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
261 ok(inner !=
NULL,
"Expected non-NULL inner\n");
263 hr = IXMLElementCollection_get_length(inner, &num_child);
264 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
265 ok(num_child == 1,
"Expected 1, got %d\n", num_child);
268 hr = IXMLElementCollection_item(inner, vIndex, vName, (
IDispatch **)&
value);
269 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
273 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
277 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
281 IXMLElementCollection_Release(inner);
283 inner = (IXMLElementCollection *)0xdeadbeef;
284 hr = IXMLElement_get_children(
value, &inner);
285 ok(
hr == 1,
"Expected 1, got %08x\n",
hr);
286 ok(inner ==
NULL,
"Expected NULL inner, got %p\n", inner);
288 IXMLElement_Release(
value);
289 IXMLElement_Release(
child);
294 IPersistStreamInit_Release(psi);
295 IXMLDocument_Release(doc);
static const WCHAR szName[]
char * wine_dbgstr_w(const wchar_t *wstr)
static const WCHAR rootW[]
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
static void create_stream_on_file(IStream **stream, LPCSTR path)
#define DISP_E_PARAMNOTFOUND
DWORD WINAPI GetFullPathNameA(IN LPCSTR lpFileName, IN DWORD nBufferLength, OUT LPSTR lpBuffer, OUT LPSTR *lpFilePart)
#define XML_E_INVALIDATROOTLEVEL
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
static void create_xml_file(LPCSTR filename)
const struct _GUID CLSID_XMLDocument
#define EXPECT_HR(hr, hr_exp)
const GUID IID_IPersistStreamInit
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
static ICollection collection
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
char * cleanup(char *str)
MSXML::enum XMLELEMTYPE_TEXT
GLuint GLuint GLsizei GLenum type
#define DISPID_XMLDOCUMENT_ROOT
GLuint const GLchar * name