From 4999df33bf711ecf9c8df04243ef6c2c8380d5b5 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Wed, 26 Nov 2025 19:20:54 +0200 Subject: [PATCH] [MSXML3_WINETEST] Sync to wine-10.0 --- .../rostests/winetests/msxml3/CMakeLists.txt | 3 +- modules/rostests/winetests/msxml3/domdoc.c | 6688 ++++++++++------- modules/rostests/winetests/msxml3/httpreq.c | 233 +- modules/rostests/winetests/msxml3/saxreader.c | 1681 +++-- modules/rostests/winetests/msxml3/schema.c | 1191 ++- modules/rostests/winetests/msxml3/xmldoc.c | 527 +- modules/rostests/winetests/msxml3/xmlparser.c | 24 +- modules/rostests/winetests/msxml3/xmlview.c | 52 +- 8 files changed, 5794 insertions(+), 4605 deletions(-) diff --git a/modules/rostests/winetests/msxml3/CMakeLists.txt b/modules/rostests/winetests/msxml3/CMakeLists.txt index f08c274cdbc..0af4843b2a8 100644 --- a/modules/rostests/winetests/msxml3/CMakeLists.txt +++ b/modules/rostests/winetests/msxml3/CMakeLists.txt @@ -1,5 +1,4 @@ -add_definitions(-D__ROS_LONG64__) add_definitions( -DUSE_WINE_TODOS -DWINETEST_USE_DBGSTR_LONGLONG) @@ -25,7 +24,7 @@ add_executable(msxml3_winetest add_idl_headers(xmlparser_idlheader_test xmlparser.idl) add_dependencies(msxml3_winetest xmlparser_idlheader_test) set_module_type(msxml3_winetest win32cui) -add_importlibs(msxml3_winetest user32 ole32 oleaut32 msvcrt kernel32) +add_importlibs(msxml3_winetest shlwapi user32 ole32 oleaut32 msvcrt kernel32) if(MSVC) add_importlibs(msxml3_winetest ntdll) diff --git a/modules/rostests/winetests/msxml3/domdoc.c b/modules/rostests/winetests/msxml3/domdoc.c index fbd0f8edef6..76f0c827c2a 100644 --- a/modules/rostests/winetests/msxml3/domdoc.c +++ b/modules/rostests/winetests/msxml3/domdoc.c @@ -37,18 +37,37 @@ #include "dispex.h" #include "objsafe.h" #include "mshtml.h" +#include "docobj.h" +#include "xmlparser.h" #include "initguid.h" #include "asptlb.h" +#include "shlwapi.h" -#include "wine/heap.h" #include "wine/test.h" +#define XML_E_UNEXPECTED_ATTRIBUTE 0xC00CE56C + /* undef the #define in msxml2 so that we can access all versions */ #undef CLSID_DOMDocument DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0); DEFINE_GUID(IID_transformdest_unknown,0xf5078f3a,0xc551,0x11d3,0x89,0xb9,0x00,0x00,0xf8,0x1f,0xe2,0x21); +#define check_interface(a, b, c) check_interface_(__LINE__, a, b, c) +static void check_interface_(unsigned int line, void *iface_ptr, REFIID iid, BOOL supported) +{ + IUnknown *iface = iface_ptr; + HRESULT hr, expected_hr; + IUnknown *unk; + + expected_hr = supported ? S_OK : E_NOINTERFACE; + + hr = IUnknown_QueryInterface(iface, iid, (void **)&unk); + ok_(__FILE__, line)(hr == expected_hr, "Got hr %#lx, expected %#lx.\n", hr, expected_hr); + if (SUCCEEDED(hr)) + IUnknown_Release(unk); +} + static int g_unexpectedcall, g_expectedcall; struct msxmlsupported_data_t @@ -173,7 +192,7 @@ static ULONG WINAPI dispevent_Release(IDispatch *iface) ULONG ref = InterlockedDecrement( &This->ref ); if (ref == 0) - heap_free(This); + free(This); return ref; } @@ -203,8 +222,8 @@ static HRESULT WINAPI dispevent_Invoke(IDispatch *iface, DISPID member, REFIID r LCID lcid, WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *excepInfo, UINT *argErr) { - ok(member == 0, "expected 0 member, got %d\n", member); - ok(lcid == LOCALE_SYSTEM_DEFAULT, "expected LOCALE_SYSTEM_DEFAULT, got lcid %x\n", lcid); + ok(member == 0, "expected 0 member, got %ld\n", member); + ok(lcid == LOCALE_SYSTEM_DEFAULT, "expected LOCALE_SYSTEM_DEFAULT, got lcid %lx\n", lcid); ok(flags == DISPATCH_METHOD, "expected DISPATCH_METHOD, got %d\n", flags); ok(params->cArgs == 0, "got %d\n", params->cArgs); @@ -233,12 +252,12 @@ static const IDispatchVtbl dispeventVtbl = static IDispatch* create_dispevent(void) { - dispevent *event = heap_alloc(sizeof(*event)); + dispevent *event = malloc(sizeof(*event)); event->IDispatch_iface.lpVtbl = &dispeventVtbl; event->ref = 1; - return (IDispatch*)&event->IDispatch_iface; + return &event->IDispatch_iface; } /* IStream */ @@ -501,13 +520,13 @@ static HRESULT WINAPI response_BinaryWrite(IResponse *iface, VARIANT input) bound = 1; hr = SafeArrayGetLBound(V_ARRAY(&input), 1, &bound); - ok(hr == S_OK, "got %#x\n", hr); - ok(bound == 0, "wrong array low bound %d\n", bound); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(bound == 0, "wrong array low bound %ld\n", bound); bound = 0; hr = SafeArrayGetUBound(V_ARRAY(&input), 1, &bound); - ok(hr == S_OK, "got %#x\n", hr); - ok(bound > 0, "wrong array high bound %d\n", bound); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(bound > 0, "wrong array high bound %ld\n", bound); return E_NOTIMPL; } @@ -660,7 +679,7 @@ static void _expect_children(IXMLDOMNode *node, int line) b = VARIANT_FALSE; hr = IXMLDOMNode_hasChildNodes(node, &b); - ok_(__FILE__,line)(hr == S_OK, "hasChildNodes() failed, 0x%08x\n", hr); + ok_(__FILE__,line)(hr == S_OK, "hasChildNodes() failed, %#lx.\n", hr); ok_(__FILE__,line)(b == VARIANT_TRUE, "no children, %d\n", b); } @@ -672,7 +691,7 @@ static void _expect_no_children(IXMLDOMNode *node, int line) b = VARIANT_TRUE; hr = IXMLDOMNode_hasChildNodes(node, &b); - ok_(__FILE__,line)(hr == S_FALSE, "hasChildNodes() failed, 0x%08x\n", hr); + ok_(__FILE__,line)(hr == S_FALSE, "hasChildNodes() failed, %#lx.\n", hr); ok_(__FILE__,line)(b == VARIANT_FALSE, "no children, %d\n", b); } @@ -682,7 +701,7 @@ static void _expect_ref(IUnknown* obj, ULONG ref, int line) ULONG rc; IUnknown_AddRef(obj); rc = IUnknown_Release(obj); - ok_(__FILE__,line)(rc == ref, "expected refcount %d, got %d\n", ref, rc); + ok_(__FILE__,line)(rc == ref, "expected refcount %ld, got %ld\n", ref, rc); } #define EXPECT_LIST_LEN(list,len) _expect_list_len(list, len, __LINE__) @@ -693,33 +712,41 @@ static void _expect_list_len(IXMLDOMNodeList *list, LONG len, int line) length = 0; hr = IXMLDOMNodeList_get_length(list, &length); - ok_(__FILE__,line)(hr == S_OK, "got 0x%08x\n", hr); - ok_(__FILE__,line)(length == len, "got %d, expected %d\n", length, len); + ok_(__FILE__,line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok_(__FILE__,line)(length == len, "got %ld, expected %ld\n", length, len); } -#define EXPECT_HR(hr,hr_exp) \ - ok(hr == hr_exp, "got 0x%08x, expected 0x%08x\n", hr, hr_exp) +#define EXPECT_PARSE_ERROR(doc, hr_exp, hr_todo) _expect_parse_error(doc, hr_exp, hr_todo, __LINE__) +static void _expect_parse_error(IXMLDOMDocument *doc, HRESULT hr_exp, BOOL hr_todo, int line) +{ + IXMLDOMParseError *error; + HRESULT hr; + LONG code; -#ifdef __REACTOS__ -#define EXPECT_NOT_HR(hr,hr_exp) \ - ok(hr != hr_exp, "got 0x%08x, expected not 0x%08x\n", hr, hr_exp) -#endif + error = NULL; + hr = IXMLDOMDocument_get_parseError(doc, &error); + ok_(__FILE__,line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok_(__FILE__,line)(!!error, "got NULL parseError\n"); -static const WCHAR szEmpty[] = { 0 }; -static const WCHAR szIncomplete[] = { - '<','?','x','m','l',' ', - 'v','e','r','s','i','o','n','=','\'','1','.','0','\'','?','>','\n',0 -}; -static const WCHAR szComplete1[] = { - '<','?','x','m','l',' ', - 'v','e','r','s','i','o','n','=','\'','1','.','0','\'','?','>','\n', - '<','o','p','e','n','>','<','/','o','p','e','n','>','\n',0 -}; -static const WCHAR szComplete2[] = { - '<','?','x','m','l',' ', - 'v','e','r','s','i','o','n','=','\'','1','.','0','\'','?','>','\n', - '<','a','>','<','/','a','>','\n',0 -}; + code = 0xdeadbeef; + hr = IXMLDOMParseError_get_errorCode(error, &code); + if (FAILED(hr_exp)) + { + ok_(__FILE__,line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok_(__FILE__,line)(FAILED(code), "expected failure HRESULT\n"); + todo_wine_if(hr_todo) + ok_(__FILE__,line)(hr_exp == code, "expected %#lx, unexpected hr %#lx.\n", hr_exp, code); + } + else + { + ok_(__FILE__,line)(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + ok_(__FILE__,line)(SUCCEEDED(code), "expected successful HRESULT\n"); + } + + IXMLDOMParseError_Release(error); +} + +static const WCHAR szComplete1[] = L"\n\n"; static const char complete4A[] = "\n" "\n" @@ -737,25 +764,9 @@ static const char complete4A[] = "\n" "\n"; -static const WCHAR szComplete5[] = { - '<','S',':','s','e','a','r','c','h',' ','x','m','l','n','s',':','D','=','"','D','A','V',':','"',' ', - 'x','m','l','n','s',':','C','=','"','u','r','n',':','s','c','h','e','m','a','s','-','m','i','c','r','o','s','o','f','t','-','c','o','m',':','o','f','f','i','c','e',':','c','l','i','p','g','a','l','l','e','r','y','"', - ' ','x','m','l','n','s',':','S','=','"','u','r','n',':','s','c','h','e','m','a','s','-','m','i','c','r','o','s','o','f','t','-','c','o','m',':','o','f','f','i','c','e',':','c','l','i','p','g','a','l','l','e','r','y',':','s','e','a','r','c','h','"','>', - '<','S',':','s','c','o','p','e','>', - '<','S',':','d','e','e','p','>','/','<','/','S',':','d','e','e','p','>', - '<','/','S',':','s','c','o','p','e','>', - '<','S',':','c','o','n','t','e','n','t','f','r','e','e','t','e','x','t','>', - '<','C',':','t','e','x','t','o','r','p','r','o','p','e','r','t','y','/','>', - 'c','o','m','p','u','t','e','r', - '<','/','S',':','c','o','n','t','e','n','t','f','r','e','e','t','e','x','t','>', - '<','/','S',':','s','e','a','r','c','h','>',0 -}; - -static const WCHAR szComplete6[] = { - '<','?','x','m','l',' ','v','e','r','s','i','o','n','=','\'','1','.','0','\'',' ', - 'e','n','c','o','d','i','n','g','=','\'','W','i','n','d','o','w','s','-','1','2','5','2','\'','?','>','\n', - '<','o','p','e','n','>','<','/','o','p','e','n','>','\n',0 -}; +static const WCHAR szComplete5[] = + L"" + "/computer"; static const char complete7[] = { "\n\t" @@ -766,6 +777,27 @@ static const char complete7[] = { "" }; +#define DECL_GBK \ +"" + +static const char gbkxml[] = +DECL_GBK +""; + +#define DECL_ISO8859_1 \ +"" + +static const char iso8859_1_xml[] = +DECL_ISO8859_1 +""; + +#define DECL_WIN_936 \ +"" + +static const char win936xml[] = +DECL_WIN_936 +""; + #define DECL_WIN_1252 \ "" @@ -881,7 +913,11 @@ static const CHAR szTypeValueXML[] = "\n" "\n" " Wine\n" -" String\n" +" String \n" +" Wine Wine \n" +" \nWine Wine\t\n" +" \n" +" s1 \ns2 s2\t\n" " 12.44\n" " -3.71e3\n" " -13\n" @@ -1144,52 +1180,9 @@ static const char attributes_map[] = { "" }; -static const WCHAR nonexistent_fileW[] = { - 'c', ':', '\\', 'N', 'o', 'n', 'e', 'x', 'i', 's', 't', 'e', 'n', 't', '.', 'x', 'm', 'l', 0 -}; -static const WCHAR nonexistent_attrW[] = { - 'n','o','n','E','x','i','s','i','t','i','n','g','A','t','t','r','i','b','u','t','e',0 -}; -static const WCHAR szDocument[] = { - '#', 'd', 'o', 'c', 'u', 'm', 'e', 'n', 't', 0 -}; +static const WCHAR nonexistent_fileW[] = L"c:\\Nonexistent.xml"; -static const WCHAR szOpen[] = { 'o','p','e','n',0 }; -static const WCHAR szdl[] = { 'd','l',0 }; -static const WCHAR szvr[] = { 'v','r',0 }; -static const WCHAR szlc[] = { 'l','c',0 }; -static const WCHAR szbs[] = { 'b','s',0 }; -static const WCHAR szstr1[] = { 's','t','r','1',0 }; -static const WCHAR szstr2[] = { 's','t','r','2',0 }; -static const WCHAR szstar[] = { '*',0 }; -static const WCHAR szfn1_txt[] = {'f','n','1','.','t','x','t',0}; - -static const WCHAR szComment[] = {'A',' ','C','o','m','m','e','n','t',0 }; -static const WCHAR szCommentXML[] = {'<','!','-','-','A',' ','C','o','m','m','e','n','t','-','-','>',0 }; -static const WCHAR szCommentNodeText[] = {'#','c','o','m','m','e','n','t',0 }; - -static WCHAR szElement[] = {'E','l','e','T','e','s','t', 0 }; -static const WCHAR szElementXML[] = {'<','E','l','e','T','e','s','t','/','>',0 }; -static const WCHAR szElementXML2[] = {'<','E','l','e','T','e','s','t',' ','A','t','t','r','=','"','"','/','>',0 }; -static const WCHAR szElementXML3[] = {'<','E','l','e','T','e','s','t',' ','A','t','t','r','=','"','"','>', - 'T','e','s','t','i','n','g','N','o','d','e','<','/','E','l','e','T','e','s','t','>',0 }; -static const WCHAR szElementXML4[] = {'<','E','l','e','T','e','s','t',' ','A','t','t','r','=','"','"','>', - '&','a','m','p',';','x',' ',0x2103,'<','/','E','l','e','T','e','s','t','>',0 }; - -static const WCHAR szAttribute[] = {'A','t','t','r',0 }; -static const WCHAR szAttributeXML[] = {'A','t','t','r','=','"','"',0 }; - -static const WCHAR szCData[] = {'[','1',']','*','2','=','3',';',' ','&','g','e','e',' ','t','h','a','t','s', - ' ','n','o','t',' ','r','i','g','h','t','!', 0}; -static const WCHAR szCDataXML[] = {'<','!','[','C','D','A','T','A','[','[','1',']','*','2','=','3',';',' ','&', - 'g','e','e',' ','t','h','a','t','s',' ','n','o','t',' ','r','i','g','h','t', - '!',']',']','>',0}; -static const WCHAR szCDataNodeText[] = {'#','c','d','a','t','a','-','s','e','c','t','i','o','n',0 }; -static const WCHAR szDocFragmentText[] = {'#','d','o','c','u','m','e','n','t','-','f','r','a','g','m','e','n','t',0 }; - -static const WCHAR szEntityRef[] = {'e','n','t','i','t','y','r','e','f',0 }; -static const WCHAR szEntityRefXML[] = {'&','e','n','t','i','t','y','r','e','f',';',0 }; -static const WCHAR szStrangeChars[] = {'&','x',' ',0x2103, 0}; +static const WCHAR szStrangeChars[] = L"&x \x2103"; #define expect_bstr_eq_and_free(bstr, expect) { \ BSTR bstrExp = alloc_str_from_narrow(expect); \ @@ -1200,11 +1193,6 @@ static const WCHAR szStrangeChars[] = {'&','x',' ',0x2103, 0}; #define expect_eq(expr, value, type, format) { type ret = (expr); ok((value) == ret, #expr " expected " format " got " format "\n", value, ret); } -#define ole_check(expr) { \ - HRESULT r = expr; \ - ok(r == S_OK, #expr " returned %x\n", r); \ -} - #define ole_expect(expr, expect) { \ HRESULT r = expr; \ ok(r == (expect), #expr " returned %x, expected %x\n", r, expect); \ @@ -1218,7 +1206,7 @@ static void* _create_object(const GUID *clsid, const char *name, const IID *iid, HRESULT hr; hr = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, iid, &obj); - ok(hr == S_OK, "failed to create %s instance: 0x%08x\n", name, hr); + ok(hr == S_OK, "failed to create %s instance: hr %#lx.\n", name, hr); return obj; } @@ -1325,7 +1313,7 @@ static int get_node_position(IXMLDOMNode *node) static void node_to_string(IXMLDOMNode *node, char *buf) { - HRESULT r = S_OK; + HRESULT hr = S_OK; DOMNodeType type; if (node == NULL) @@ -1335,37 +1323,39 @@ static void node_to_string(IXMLDOMNode *node, char *buf) } IXMLDOMNode_AddRef(node); - while (r == S_OK) + while (hr == S_OK) { IXMLDOMNode *new_node; - ole_check(IXMLDOMNode_get_nodeType(node, &type)); + hr = IXMLDOMNode_get_nodeType(node, &type); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); get_str_for_type(type, buf); buf+=strlen(buf); if (type == NODE_ATTRIBUTE) { BSTR bstr; - ole_check(IXMLDOMNode_get_nodeName(node, &bstr)); + hr = IXMLDOMNode_get_nodeName(node, &bstr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); *(buf++) = '\''; wsprintfA(buf, "%ws", bstr); buf += strlen(buf); *(buf++) = '\''; SysFreeString(bstr); - r = IXMLDOMNode_selectSingleNode(node, _bstr_(".."), &new_node); + hr = IXMLDOMNode_selectSingleNode(node, _bstr_(".."), &new_node); } else { - r = IXMLDOMNode_get_parentNode(node, &new_node); + hr = IXMLDOMNode_get_parentNode(node, &new_node); sprintf(buf, "%d", get_node_position(node)); buf += strlen(buf); } - ok(SUCCEEDED(r), "get_parentNode failed (%08x)\n", r); + ok(SUCCEEDED(hr), "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(node); node = new_node; - if (r == S_OK) + if (hr == S_OK) *(buf++) = '.'; } @@ -1386,13 +1376,14 @@ static char *list_to_string(IXMLDOMNodeList *list) return buf; } hr = IXMLDOMNodeList_get_length(list, &len); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); for (i = 0; i < len; i++) { IXMLDOMNode *node; if (i > 0) *(pos++) = ' '; - ole_check(IXMLDOMNodeList_nextNode(list, &node)); + hr = IXMLDOMNodeList_nextNode(list, &node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); node_to_string(node, pos); pos += strlen(pos); IXMLDOMNode_Release(node); @@ -1438,7 +1429,6 @@ static const char* leading_spaces_xmldata[] = { static void test_domdoc( void ) { - HRESULT r, hr; IXMLDOMDocument *doc; IXMLDOMParseError *error; IXMLDOMElement *element = NULL; @@ -1457,6 +1447,7 @@ static void test_domdoc( void ) LONG nLength = 0; WCHAR buff[100]; char path[MAX_PATH]; + HRESULT hr; int index; GetTempPathA(MAX_PATH, path); @@ -1492,7 +1483,7 @@ static void test_domdoc( void ) HANDLE file; file = CreateFileA(path, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ); - ok(file != INVALID_HANDLE_VALUE, "can't create file %s: %u\n", path, GetLastError()); + ok(file != INVALID_HANDLE_VALUE, "can't create file %s: %lu\n", path, GetLastError()); WriteFile(file, data, lstrlenW(data)*sizeof(WCHAR), &written, NULL); CloseHandle(file); @@ -1501,14 +1492,14 @@ static void test_domdoc( void ) V_VT(&var) = VT_BSTR; V_BSTR(&var) = _bstr_(path); hr = IXMLDOMDocument_load(doc, var, &b); - EXPECT_HR(hr, class_ptr->ret[0].hr); + ok(hr == class_ptr->ret[0].hr, "Unexpected hr %#lx.\n", hr); ok(b == class_ptr->ret[0].b, "%d:%d, got %d, expected %d\n", index, i, b, class_ptr->ret[0].b); DeleteFileA(path); b = 0xc; hr = IXMLDOMDocument_loadXML(doc, data, &b); - EXPECT_HR(hr, class_ptr->ret[1].hr); + ok(hr == class_ptr->ret[1].hr, "Unexpected hr %#lx.\n", hr); ok(b == class_ptr->ret[1].b, "%d:%d, got %d, expected %d\n", index, i, b, class_ptr->ret[1].b); data_ptr++; @@ -1523,6 +1514,14 @@ static void test_domdoc( void ) doc = create_document(&IID_IXMLDOMDocument); if (!doc) return; + check_interface(doc, &IID_IXMLDOMDocument, TRUE); + check_interface(doc, &IID_IPersistStreamInit, TRUE); + check_interface(doc, &IID_IObjectWithSite, TRUE); + check_interface(doc, &IID_IObjectSafety, TRUE); + check_interface(doc, &IID_IConnectionPointContainer, TRUE); + check_interface(doc, &IID_IDispatch, TRUE); + check_interface(doc, &IID_IDispatchEx, TRUE); + if (0) { /* crashes on native */ @@ -1531,11 +1530,11 @@ if (0) /* try some stupid things */ hr = IXMLDOMDocument_loadXML( doc, NULL, NULL ); - EXPECT_HR(hr, S_FALSE); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); b = VARIANT_TRUE; hr = IXMLDOMDocument_loadXML( doc, NULL, &b ); - EXPECT_HR(hr, S_FALSE); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok( b == VARIANT_FALSE, "failed to load XML string\n"); /* try to load a document from a nonexistent file */ @@ -1545,51 +1544,51 @@ if (0) V_VT(&var) = VT_BSTR; V_BSTR(&var) = str; - r = IXMLDOMDocument_load( doc, var, &b); - ok( r == S_FALSE, "loadXML succeeded\n"); + hr = IXMLDOMDocument_load( doc, var, &b); + ok(hr == S_FALSE, "loadXML succeeded\n"); ok( b == VARIANT_FALSE, "succeeded in loading XML string\n"); SysFreeString( str ); str = (void *)0xdeadbeef; hr = IXMLDOMDocument_get_url(doc, &str); - ok(hr == S_FALSE, "got 0x%08x\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(str == NULL, "got %p\n", str); /* try load an empty document */ b = VARIANT_TRUE; - str = SysAllocString( szEmpty ); - r = IXMLDOMDocument_loadXML( doc, str, &b ); - ok( r == S_FALSE, "loadXML succeeded\n"); + str = SysAllocString( L"" ); + hr = IXMLDOMDocument_loadXML( doc, str, &b ); + ok(hr == S_FALSE, "loadXML succeeded\n"); ok( b == VARIANT_FALSE, "succeeded in loading XML string\n"); SysFreeString( str ); - r = IXMLDOMDocument_get_async( doc, &b ); - ok( r == S_OK, "get_async failed (%08x)\n", r); + hr = IXMLDOMDocument_get_async( doc, &b ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( b == VARIANT_TRUE, "Wrong default value\n"); /* check that there's no document element */ element = NULL; - r = IXMLDOMDocument_get_documentElement( doc, &element ); - ok( r == S_FALSE, "should be no document element\n"); + hr = IXMLDOMDocument_get_documentElement( doc, &element ); + ok(hr == S_FALSE, "should be no document element\n"); /* try finding a node */ node = NULL; - str = SysAllocString( szstr1 ); - r = IXMLDOMDocument_selectSingleNode( doc, str, &node ); - ok( r == S_FALSE, "ret %08x\n", r ); + str = SysAllocString( L"str1" ); + hr = IXMLDOMDocument_selectSingleNode( doc, str, &node ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); SysFreeString( str ); b = VARIANT_TRUE; - str = SysAllocString( szIncomplete ); - r = IXMLDOMDocument_loadXML( doc, str, &b ); - ok( r == S_FALSE, "loadXML succeeded\n"); + str = SysAllocString( L"\n" ); + hr = IXMLDOMDocument_loadXML( doc, str, &b ); + ok(hr == S_FALSE, "loadXML succeeded\n"); ok( b == VARIANT_FALSE, "succeeded in loading XML string\n"); SysFreeString( str ); /* check that there's no document element */ element = (IXMLDOMElement*)1; - r = IXMLDOMDocument_get_documentElement( doc, &element ); - ok( r == S_FALSE, "should be no document element\n"); + hr = IXMLDOMDocument_get_documentElement( doc, &element ); + ok(hr == S_FALSE, "should be no document element\n"); ok( element == NULL, "Element should be NULL\n"); /* test for BSTR handling, pass broken BSTR */ @@ -1597,65 +1596,73 @@ if (0) /* just a big length */ *(DWORD*)buff = 0xf0f0; b = VARIANT_FALSE; - r = IXMLDOMDocument_loadXML( doc, &buff[2], &b ); - ok( r == S_OK, "loadXML failed\n"); + hr = IXMLDOMDocument_loadXML( doc, &buff[2], &b ); + ok(hr == S_OK, "loadXML failed\n"); ok( b == VARIANT_TRUE, "failed to load XML string\n"); /* loadXML ignores the encoding attribute and always expects Unicode */ b = VARIANT_FALSE; - str = SysAllocString( szComplete6 ); - r = IXMLDOMDocument_loadXML( doc, str, &b ); - ok( r == S_OK, "loadXML failed\n"); + str = SysAllocString( L"\n\n" ); + hr = IXMLDOMDocument_loadXML( doc, str, &b ); + ok(hr == S_OK, "loadXML failed\n"); ok( b == VARIANT_TRUE, "failed to load XML string\n"); SysFreeString( str ); /* try a BSTR containing a Windows-1252 document */ b = VARIANT_TRUE; str = SysAllocStringByteLen( win1252xml, strlen(win1252xml) ); - r = IXMLDOMDocument_loadXML( doc, str, &b ); - ok( r == S_FALSE, "loadXML succeeded\n"); + hr = IXMLDOMDocument_loadXML( doc, str, &b ); + ok(hr == S_FALSE, "loadXML succeeded\n"); + ok( b == VARIANT_FALSE, "succeeded in loading XML string\n"); + SysFreeString( str ); + + /* try a BSTR containing a ISO8859-1 document */ + b = VARIANT_TRUE; + str = SysAllocStringByteLen( iso8859_1_xml, strlen(iso8859_1_xml) ); + hr = IXMLDOMDocument_loadXML( doc, str, &b ); + ok(hr == S_FALSE, "loadXML succeeded\n"); ok( b == VARIANT_FALSE, "succeeded in loading XML string\n"); SysFreeString( str ); /* try to load something valid */ b = VARIANT_FALSE; str = SysAllocString( szComplete1 ); - r = IXMLDOMDocument_loadXML( doc, str, &b ); - ok( r == S_OK, "loadXML failed\n"); + hr = IXMLDOMDocument_loadXML( doc, str, &b ); + ok(hr == S_OK, "loadXML failed\n"); ok( b == VARIANT_TRUE, "failed to load XML string\n"); SysFreeString( str ); /* check if nodename is correct */ - r = IXMLDOMDocument_get_nodeName( doc, NULL ); - ok ( r == E_INVALIDARG, "get_nodeName (NULL) wrong code\n"); + hr = IXMLDOMDocument_get_nodeName( doc, NULL ); + ok ( hr == E_INVALIDARG, "get_nodeName (NULL) wrong code\n"); str = (void *)0xdeadbeef; - r = IXMLDOMDocument_get_baseName( doc, &str ); - ok ( r == S_FALSE, "got 0x%08x\n", r); + hr = IXMLDOMDocument_get_baseName( doc, &str ); + ok ( hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok (str == NULL, "got %p\n", str); /* content doesn't matter here */ str = NULL; - r = IXMLDOMDocument_get_nodeName( doc, &str ); - ok ( r == S_OK, "get_nodeName wrong code\n"); + hr = IXMLDOMDocument_get_nodeName( doc, &str ); + ok ( hr == S_OK, "get_nodeName wrong code\n"); ok ( str != NULL, "str is null\n"); - ok( !lstrcmpW( str, szDocument ), "incorrect nodeName\n"); + ok( !lstrcmpW( str, L"#document" ), "incorrect nodeName\n"); SysFreeString( str ); /* test put_text */ - r = IXMLDOMDocument_put_text( doc, _bstr_("Should fail") ); - ok( r == E_FAIL, "ret %08x\n", r ); + hr = IXMLDOMDocument_put_text( doc, _bstr_("Should fail") ); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); /* check that there's a document element */ element = NULL; - r = IXMLDOMDocument_get_documentElement( doc, &element ); - ok( r == S_OK, "should be a document element\n"); + hr = IXMLDOMDocument_get_documentElement( doc, &element ); + ok(hr == S_OK, "should be a document element\n"); if( element ) { IObjectIdentity *ident; - r = IXMLDOMElement_QueryInterface( element, &IID_IObjectIdentity, (void**)&ident ); - ok( r == E_NOINTERFACE, "ret %08x\n", r); + hr = IXMLDOMElement_QueryInterface( element, &IID_IObjectIdentity, (void**)&ident ); + ok(hr == E_NOINTERFACE, "Unexpected hr %#lx.\n", hr); IXMLDOMElement_Release( element ); element = NULL; @@ -1663,486 +1670,486 @@ if (0) /* as soon as we call loadXML again, the document element will disappear */ b = 2; - r = IXMLDOMDocument_loadXML( doc, NULL, NULL ); - ok( r == S_FALSE, "loadXML failed\n"); + hr = IXMLDOMDocument_loadXML( doc, NULL, NULL ); + ok(hr == S_FALSE, "loadXML failed\n"); ok( b == 2, "variant modified\n"); - r = IXMLDOMDocument_get_documentElement( doc, &element ); - ok( r == S_FALSE, "should be no document element\n"); + hr = IXMLDOMDocument_get_documentElement( doc, &element ); + ok(hr == S_FALSE, "should be no document element\n"); /* try to load something else simple and valid */ b = VARIANT_FALSE; - str = SysAllocString( szComplete2 ); - r = IXMLDOMDocument_loadXML( doc, str, &b ); - ok( r == S_OK, "loadXML failed\n"); + str = SysAllocString( L"\n\n" ); + hr = IXMLDOMDocument_loadXML( doc, str, &b ); + ok(hr == S_OK, "loadXML failed\n"); ok( b == VARIANT_TRUE, "failed to load XML string\n"); SysFreeString( str ); /* try something a little more complicated */ b = FALSE; - r = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b ); - ok( r == S_OK, "loadXML failed\n"); + hr = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b ); + ok(hr == S_OK, "loadXML failed\n"); ok( b == VARIANT_TRUE, "failed to load XML string\n"); - r = IXMLDOMDocument_get_parseError( doc, &error ); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMDocument_get_parseError( doc, &error ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMParseError_get_errorCode( error, &code ); - ok( r == S_FALSE, "returns %08x\n", r ); - ok( code == 0, "code %d\n", code ); + hr = IXMLDOMParseError_get_errorCode( error, &code ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + ok( code == 0, "code %ld\n", code ); IXMLDOMParseError_Release( error ); /* test createTextNode */ - r = IXMLDOMDocument_createTextNode(doc, _bstr_(""), &nodetext); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMDocument_createTextNode(doc, _bstr_(""), &nodetext); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMText_Release(nodetext); - str = SysAllocString( szOpen ); - r = IXMLDOMDocument_createTextNode(doc, str, NULL); - ok( r == E_INVALIDARG, "returns %08x\n", r ); - r = IXMLDOMDocument_createTextNode(doc, str, &nodetext); - ok( r == S_OK, "returns %08x\n", r ); + str = SysAllocString( L"open" ); + hr = IXMLDOMDocument_createTextNode(doc, str, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument_createTextNode(doc, str, &nodetext); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); SysFreeString( str ); if(nodetext) { - r = IXMLDOMText_QueryInterface(nodetext, &IID_IXMLDOMElement, (void**)&element); - ok(r == E_NOINTERFACE, "ret %08x\n", r ); + hr = IXMLDOMText_QueryInterface(nodetext, &IID_IXMLDOMElement, (void**)&element); + ok(hr == E_NOINTERFACE, "Unexpected hr %#lx.\n", hr); /* Text Last Child Checks */ - r = IXMLDOMText_get_lastChild(nodetext, NULL); - ok(r == E_INVALIDARG, "ret %08x\n", r ); + hr = IXMLDOMText_get_lastChild(nodetext, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); nodeChild = (IXMLDOMNode*)0x1; - r = IXMLDOMText_get_lastChild(nodetext, &nodeChild); - ok(r == S_FALSE, "ret %08x\n", r ); + hr = IXMLDOMText_get_lastChild(nodetext, &nodeChild); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(nodeChild == NULL, "nodeChild not NULL\n"); /* test length property */ - r = IXMLDOMText_get_length(nodetext, NULL); - ok(r == E_INVALIDARG, "ret %08x\n", r ); + hr = IXMLDOMText_get_length(nodetext, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMText_get_length(nodetext, &nLength); - ok(r == S_OK, "ret %08x\n", r ); - ok(nLength == 4, "expected 4 got %d\n", nLength); + hr = IXMLDOMText_get_length(nodetext, &nLength); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(nLength == 4, "expected 4 got %ld\n", nLength); /* put data Tests */ - r = IXMLDOMText_put_data(nodetext, _bstr_("This &is a ; test <>\\")); - ok(r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMText_put_data(nodetext, _bstr_("This &is a ; test <>\\")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* get data Tests */ - r = IXMLDOMText_get_data(nodetext, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, _bstr_("This &is a ; test <>\\") ), "incorrect put_data string\n"); + hr = IXMLDOMText_get_data(nodetext, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"This &is a ; test <>\\"), "incorrect put_data string\n"); SysFreeString(str); /* Confirm XML text is good */ - r = IXMLDOMText_get_xml(nodetext, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, _bstr_("This &is a ; test <>\\") ), "incorrect xml string\n"); + hr = IXMLDOMText_get_xml(nodetext, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"This &is a ; test <>\\"), "incorrect xml string\n"); SysFreeString(str); /* Confirm we get the put_data Text back */ - r = IXMLDOMText_get_text(nodetext, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, _bstr_("This &is a ; test <>\\") ), "incorrect xml string\n"); + hr = IXMLDOMText_get_text(nodetext, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"This &is a ; test <>\\"), "incorrect xml string\n"); SysFreeString(str); /* test substringData */ - r = IXMLDOMText_substringData(nodetext, 0, 4, NULL); - ok(r == E_INVALIDARG, "ret %08x\n", r ); + hr = IXMLDOMText_substringData(nodetext, 0, 4, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); /* test substringData - Invalid offset */ str = (void *)0xdeadbeef; - r = IXMLDOMText_substringData(nodetext, -1, 4, &str); - ok(r == E_INVALIDARG, "ret %08x\n", r ); + hr = IXMLDOMText_substringData(nodetext, -1, 4, &str); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok( str == NULL, "incorrect string\n"); /* test substringData - Invalid offset */ str = (void *)0xdeadbeef; - r = IXMLDOMText_substringData(nodetext, 30, 0, &str); - ok(r == S_FALSE, "ret %08x\n", r ); + hr = IXMLDOMText_substringData(nodetext, 30, 0, &str); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok( str == NULL, "incorrect string\n"); /* test substringData - Invalid size */ str = (void *)0xdeadbeef; - r = IXMLDOMText_substringData(nodetext, 0, -1, &str); - ok(r == E_INVALIDARG, "ret %08x\n", r ); + hr = IXMLDOMText_substringData(nodetext, 0, -1, &str); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok( str == NULL, "incorrect string\n"); /* test substringData - Invalid size */ str = (void *)0xdeadbeef; - r = IXMLDOMText_substringData(nodetext, 2, 0, &str); - ok(r == S_FALSE, "ret %08x\n", r ); + hr = IXMLDOMText_substringData(nodetext, 2, 0, &str); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok( str == NULL, "incorrect string\n"); /* test substringData - Start of string */ - r = IXMLDOMText_substringData(nodetext, 0, 4, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, _bstr_("This") ), "incorrect substringData string\n"); + hr = IXMLDOMText_substringData(nodetext, 0, 4, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"This"), "incorrect substringData string\n"); SysFreeString(str); /* test substringData - Middle of string */ - r = IXMLDOMText_substringData(nodetext, 13, 4, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, _bstr_("test") ), "incorrect substringData string\n"); + hr = IXMLDOMText_substringData(nodetext, 13, 4, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"test"), "incorrect substringData string\n"); SysFreeString(str); /* test substringData - End of string */ - r = IXMLDOMText_substringData(nodetext, 20, 4, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, _bstr_("\\") ), "incorrect substringData string\n"); + hr = IXMLDOMText_substringData(nodetext, 20, 4, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"\\"), "incorrect substringData string\n"); SysFreeString(str); /* test appendData */ - r = IXMLDOMText_appendData(nodetext, NULL); - ok(r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMText_appendData(nodetext, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMText_appendData(nodetext, _bstr_("")); - ok(r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMText_appendData(nodetext, _bstr_("")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMText_appendData(nodetext, _bstr_("Append")); - ok(r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMText_appendData(nodetext, _bstr_("Append")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMText_get_text(nodetext, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, _bstr_("This &is a ; test <>\\Append") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + hr = IXMLDOMText_get_text(nodetext, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"This &is a ; test <>\\Append"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* test insertData */ str = SysAllocStringLen(NULL, 0); - r = IXMLDOMText_insertData(nodetext, -1, str); - ok(r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMText_insertData(nodetext, -1, str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMText_insertData(nodetext, -1, NULL); - ok(r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMText_insertData(nodetext, -1, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMText_insertData(nodetext, 1000, str); - ok(r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMText_insertData(nodetext, 1000, str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMText_insertData(nodetext, 1000, NULL); - ok(r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMText_insertData(nodetext, 1000, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMText_insertData(nodetext, 0, NULL); - ok(r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMText_insertData(nodetext, 0, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMText_insertData(nodetext, 0, str); - ok(r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMText_insertData(nodetext, 0, str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); SysFreeString(str); - r = IXMLDOMText_insertData(nodetext, -1, _bstr_("Inserting")); - ok(r == E_INVALIDARG, "ret %08x\n", r ); + hr = IXMLDOMText_insertData(nodetext, -1, _bstr_("Inserting")); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMText_insertData(nodetext, 1000, _bstr_("Inserting")); - ok(r == E_INVALIDARG, "ret %08x\n", r ); + hr = IXMLDOMText_insertData(nodetext, 1000, _bstr_("Inserting")); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMText_insertData(nodetext, 0, _bstr_("Begin ")); - ok(r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMText_insertData(nodetext, 0, _bstr_("Begin ")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMText_insertData(nodetext, 17, _bstr_("Middle")); - ok(r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMText_insertData(nodetext, 17, _bstr_("Middle")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMText_insertData(nodetext, 39, _bstr_(" End")); - ok(r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMText_insertData(nodetext, 39, _bstr_(" End")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMText_get_text(nodetext, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, _bstr_("Begin This &is a Middle; test <>\\Append End") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + hr = IXMLDOMText_get_text(nodetext, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"Begin This &is a Middle; test <>\\Append End"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* delete data */ /* invalid arguments */ - r = IXMLDOMText_deleteData(nodetext, -1, 1); - ok(r == E_INVALIDARG, "ret %08x\n", r ); + hr = IXMLDOMText_deleteData(nodetext, -1, 1); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMText_deleteData(nodetext, 0, 0); - ok(r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMText_deleteData(nodetext, 0, 0); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMText_deleteData(nodetext, 0, -1); - ok(r == E_INVALIDARG, "ret %08x\n", r ); + hr = IXMLDOMText_deleteData(nodetext, 0, -1); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMText_get_length(nodetext, &nLength); - ok(r == S_OK, "ret %08x\n", r ); - ok(nLength == 43, "expected 43 got %d\n", nLength); + hr = IXMLDOMText_get_length(nodetext, &nLength); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(nLength == 43, "expected 43 got %ld\n", nLength); - r = IXMLDOMText_deleteData(nodetext, nLength, 1); - ok(r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMText_deleteData(nodetext, nLength, 1); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMText_deleteData(nodetext, nLength+1, 1); - ok(r == E_INVALIDARG, "ret %08x\n", r ); + hr = IXMLDOMText_deleteData(nodetext, nLength+1, 1); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); /* delete from start */ - r = IXMLDOMText_deleteData(nodetext, 0, 5); - ok(r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMText_deleteData(nodetext, 0, 5); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMText_get_length(nodetext, &nLength); - ok(r == S_OK, "ret %08x\n", r ); - ok(nLength == 38, "expected 38 got %d\n", nLength); + hr = IXMLDOMText_get_length(nodetext, &nLength); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(nLength == 38, "expected 38 got %ld\n", nLength); - r = IXMLDOMText_get_text(nodetext, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, _bstr_("This &is a Middle; test <>\\Append End") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + hr = IXMLDOMText_get_text(nodetext, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"This &is a Middle; test <>\\Append End"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* delete from end */ - r = IXMLDOMText_deleteData(nodetext, 35, 3); - ok(r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMText_deleteData(nodetext, 35, 3); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMText_get_length(nodetext, &nLength); - ok(r == S_OK, "ret %08x\n", r ); - ok(nLength == 35, "expected 35 got %d\n", nLength); + hr = IXMLDOMText_get_length(nodetext, &nLength); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(nLength == 35, "expected 35 got %ld\n", nLength); - r = IXMLDOMText_get_text(nodetext, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, _bstr_("This &is a Middle; test <>\\Append") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + hr = IXMLDOMText_get_text(nodetext, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"This &is a Middle; test <>\\Append"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* delete from inside */ - r = IXMLDOMText_deleteData(nodetext, 1, 33); - ok(r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMText_deleteData(nodetext, 1, 33); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMText_get_length(nodetext, &nLength); - ok(r == S_OK, "ret %08x\n", r ); - ok(nLength == 2, "expected 2 got %d\n", nLength); + hr = IXMLDOMText_get_length(nodetext, &nLength); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(nLength == 2, "expected 2 got %ld\n", nLength); - r = IXMLDOMText_get_text(nodetext, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, _bstr_("") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + hr = IXMLDOMText_get_text(nodetext, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L""), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* delete whole data ... */ - r = IXMLDOMText_get_length(nodetext, &nLength); - ok(r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMText_get_length(nodetext, &nLength); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMText_deleteData(nodetext, 0, nLength); - ok(r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMText_deleteData(nodetext, 0, nLength); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* ... and try again with empty string */ - r = IXMLDOMText_deleteData(nodetext, 0, nLength); - ok(r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMText_deleteData(nodetext, 0, nLength); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* test put_data */ V_VT(&var) = VT_BSTR; - V_BSTR(&var) = SysAllocString(szstr1); - r = IXMLDOMText_put_nodeValue(nodetext, var); - ok(r == S_OK, "ret %08x\n", r ); + V_BSTR(&var) = SysAllocString(L"str1"); + hr = IXMLDOMText_put_nodeValue(nodetext, var); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); VariantClear(&var); - r = IXMLDOMText_get_text(nodetext, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, szstr1 ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + hr = IXMLDOMText_get_text(nodetext, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok( !lstrcmpW( str, L"str1" ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); SysFreeString(str); /* test put_data */ V_VT(&var) = VT_I4; V_I4(&var) = 99; - r = IXMLDOMText_put_nodeValue(nodetext, var); - ok(r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMText_put_nodeValue(nodetext, var); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); VariantClear(&var); - r = IXMLDOMText_get_text(nodetext, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, _bstr_("99") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + hr = IXMLDOMText_get_text(nodetext, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"99"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* ::replaceData() */ V_VT(&var) = VT_BSTR; - V_BSTR(&var) = SysAllocString(szstr1); - r = IXMLDOMText_put_nodeValue(nodetext, var); - ok(r == S_OK, "ret %08x\n", r ); + V_BSTR(&var) = SysAllocString(L"str1"); + hr = IXMLDOMText_put_nodeValue(nodetext, var); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); VariantClear(&var); - r = IXMLDOMText_replaceData(nodetext, 6, 0, NULL); - ok(r == E_INVALIDARG, "ret %08x\n", r ); - r = IXMLDOMText_get_text(nodetext, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, _bstr_("str1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + hr = IXMLDOMText_replaceData(nodetext, 6, 0, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMText_get_text(nodetext, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"str1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); - r = IXMLDOMText_replaceData(nodetext, 0, 0, NULL); - ok(r == S_OK, "ret %08x\n", r ); - r = IXMLDOMText_get_text(nodetext, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, _bstr_("str1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + hr = IXMLDOMText_replaceData(nodetext, 0, 0, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMText_get_text(nodetext, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"str1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* NULL pointer means delete */ - r = IXMLDOMText_replaceData(nodetext, 0, 1, NULL); - ok(r == S_OK, "ret %08x\n", r ); - r = IXMLDOMText_get_text(nodetext, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, _bstr_("tr1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + hr = IXMLDOMText_replaceData(nodetext, 0, 1, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMText_get_text(nodetext, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"tr1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* empty string means delete */ - r = IXMLDOMText_replaceData(nodetext, 0, 1, _bstr_("")); - ok(r == S_OK, "ret %08x\n", r ); - r = IXMLDOMText_get_text(nodetext, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, _bstr_("r1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + hr = IXMLDOMText_replaceData(nodetext, 0, 1, _bstr_("")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMText_get_text(nodetext, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"r1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* zero count means insert */ - r = IXMLDOMText_replaceData(nodetext, 0, 0, _bstr_("a")); - ok(r == S_OK, "ret %08x\n", r ); - r = IXMLDOMText_get_text(nodetext, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, _bstr_("ar1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + hr = IXMLDOMText_replaceData(nodetext, 0, 0, _bstr_("a")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMText_get_text(nodetext, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"ar1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); - r = IXMLDOMText_replaceData(nodetext, 0, 2, NULL); - ok(r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMText_replaceData(nodetext, 0, 2, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMText_insertData(nodetext, 0, _bstr_("m")); - ok(r == S_OK, "ret %08x\n", r ); - r = IXMLDOMText_get_text(nodetext, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, _bstr_("m1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + hr = IXMLDOMText_insertData(nodetext, 0, _bstr_("m")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMText_get_text(nodetext, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"m1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* nonempty string, count greater than its length */ - r = IXMLDOMText_replaceData(nodetext, 0, 2, _bstr_("a1.2")); - ok(r == S_OK, "ret %08x\n", r ); - r = IXMLDOMText_get_text(nodetext, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, _bstr_("a1.2") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + hr = IXMLDOMText_replaceData(nodetext, 0, 2, _bstr_("a1.2")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMText_get_text(nodetext, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"a1.2"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* nonempty string, count less than its length */ - r = IXMLDOMText_replaceData(nodetext, 0, 1, _bstr_("wine")); - ok(r == S_OK, "ret %08x\n", r ); - r = IXMLDOMText_get_text(nodetext, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, _bstr_("wine1.2") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + hr = IXMLDOMText_replaceData(nodetext, 0, 1, _bstr_("wine")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMText_get_text(nodetext, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"wine1.2"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); IXMLDOMText_Release( nodetext ); } /* test Create Comment */ - r = IXMLDOMDocument_createComment(doc, NULL, NULL); - ok( r == E_INVALIDARG, "returns %08x\n", r ); + hr = IXMLDOMDocument_createComment(doc, NULL, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); node_comment = (IXMLDOMComment*)0x1; /* empty comment */ - r = IXMLDOMDocument_createComment(doc, _bstr_(""), &node_comment); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMDocument_createComment(doc, _bstr_(""), &node_comment); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); str = NULL; - r = IXMLDOMComment_get_data(node_comment, &str); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMComment_get_data(node_comment, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( str && SysStringLen(str) == 0, "expected empty string data\n"); IXMLDOMComment_Release(node_comment); SysFreeString(str); - r = IXMLDOMDocument_createComment(doc, NULL, &node_comment); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMDocument_createComment(doc, NULL, &node_comment); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); str = NULL; - r = IXMLDOMComment_get_data(node_comment, &str); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMComment_get_data(node_comment, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( str && (SysStringLen(str) == 0), "expected empty string data\n"); IXMLDOMComment_Release(node_comment); SysFreeString(str); - str = SysAllocString(szComment); - r = IXMLDOMDocument_createComment(doc, str, &node_comment); + str = SysAllocString(L"A Comment"); + hr = IXMLDOMDocument_createComment(doc, str, &node_comment); SysFreeString(str); - ok( r == S_OK, "returns %08x\n", r ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); if(node_comment) { /* Last Child Checks */ - r = IXMLDOMComment_get_lastChild(node_comment, NULL); - ok(r == E_INVALIDARG, "ret %08x\n", r ); + hr = IXMLDOMComment_get_lastChild(node_comment, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); nodeChild = (IXMLDOMNode*)0x1; - r = IXMLDOMComment_get_lastChild(node_comment, &nodeChild); - ok(r == S_FALSE, "ret %08x\n", r ); + hr = IXMLDOMComment_get_lastChild(node_comment, &nodeChild); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(nodeChild == NULL, "pLastChild not NULL\n"); /* baseName */ str = (void *)0xdeadbeef; - r = IXMLDOMComment_get_baseName(node_comment, &str); - ok(r == S_FALSE, "ret %08x\n", r ); + hr = IXMLDOMComment_get_baseName(node_comment, &str); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(str == NULL, "Expected NULL\n"); IXMLDOMComment_Release( node_comment ); } /* test Create Attribute */ - str = SysAllocString(szAttribute); - r = IXMLDOMDocument_createAttribute(doc, NULL, NULL); - ok( r == E_INVALIDARG, "returns %08x\n", r ); - r = IXMLDOMDocument_createAttribute(doc, str, &node_attr); - ok( r == S_OK, "returns %08x\n", r ); + str = SysAllocString(L"Attr"); + hr = IXMLDOMDocument_createAttribute(doc, NULL, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument_createAttribute(doc, str, &node_attr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMAttribute_Release( node_attr); SysFreeString(str); /* test Processing Instruction */ str = SysAllocStringLen(NULL, 0); - r = IXMLDOMDocument_createProcessingInstruction(doc, str, str, NULL); - ok( r == E_INVALIDARG, "returns %08x\n", r ); - r = IXMLDOMDocument_createProcessingInstruction(doc, NULL, str, &nodePI); - ok( r == E_FAIL, "returns %08x\n", r ); - r = IXMLDOMDocument_createProcessingInstruction(doc, str, str, &nodePI); - ok( r == E_FAIL, "returns %08x\n", r ); + hr = IXMLDOMDocument_createProcessingInstruction(doc, str, str, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument_createProcessingInstruction(doc, NULL, str, &nodePI); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument_createProcessingInstruction(doc, str, str, &nodePI); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); SysFreeString(str); - r = IXMLDOMDocument_createProcessingInstruction(doc, _bstr_("xml"), _bstr_("version=\"1.0\""), &nodePI); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMDocument_createProcessingInstruction(doc, _bstr_("xml"), _bstr_("version=\"1.0\""), &nodePI); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); if(nodePI) { /* Last Child Checks */ - r = IXMLDOMProcessingInstruction_get_lastChild(nodePI, NULL); - ok(r == E_INVALIDARG, "ret %08x\n", r ); + hr = IXMLDOMProcessingInstruction_get_lastChild(nodePI, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); nodeChild = (IXMLDOMNode*)0x1; - r = IXMLDOMProcessingInstruction_get_lastChild(nodePI, &nodeChild); - ok(r == S_FALSE, "ret %08x\n", r ); + hr = IXMLDOMProcessingInstruction_get_lastChild(nodePI, &nodeChild); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(nodeChild == NULL, "nodeChild not NULL\n"); /* test nodeName */ - r = IXMLDOMProcessingInstruction_get_nodeName(nodePI, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, _bstr_("xml") ), "incorrect nodeName string\n"); + hr = IXMLDOMProcessingInstruction_get_nodeName(nodePI, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"xml"), "incorrect nodeName string\n"); SysFreeString(str); /* test baseName */ str = NULL; - r = IXMLDOMProcessingInstruction_get_baseName(nodePI, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, _bstr_("xml") ), "incorrect nodeName string\n"); + hr = IXMLDOMProcessingInstruction_get_baseName(nodePI, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"xml"), "incorrect nodeName string\n"); SysFreeString(str); /* test Target */ - r = IXMLDOMProcessingInstruction_get_target(nodePI, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, _bstr_("xml") ), "incorrect target string\n"); + hr = IXMLDOMProcessingInstruction_get_target(nodePI, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"xml"), "incorrect target string\n"); SysFreeString(str); /* test get_data */ - r = IXMLDOMProcessingInstruction_get_data(nodePI, &str); - ok(r == S_OK, "ret %08x\n", r ); - ok( !lstrcmpW( str, _bstr_("version=\"1.0\"") ), "incorrect data string\n"); + hr = IXMLDOMProcessingInstruction_get_data(nodePI, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"version=\"1.0\""), "incorrect data string\n"); SysFreeString(str); /* test put_data */ - r = IXMLDOMProcessingInstruction_put_data(nodePI, _bstr_("version=\"1.0\" encoding=\"UTF-8\"")); - ok(r == E_FAIL, "ret %08x\n", r ); + hr = IXMLDOMProcessingInstruction_put_data(nodePI, _bstr_("version=\"1.0\" encoding=\"UTF-8\"")); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); /* test put_data */ V_VT(&var) = VT_BSTR; - V_BSTR(&var) = SysAllocString(szOpen); /* Doesn't matter what the string is, cannot set an xml node. */ - r = IXMLDOMProcessingInstruction_put_nodeValue(nodePI, var); - ok(r == E_FAIL, "ret %08x\n", r ); + V_BSTR(&var) = SysAllocString(L"open"); /* Doesn't matter what the string is, cannot set an xml node. */ + hr = IXMLDOMProcessingInstruction_put_nodeValue(nodePI, var); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); VariantClear(&var); /* test get nodeName */ - r = IXMLDOMProcessingInstruction_get_nodeName(nodePI, &str); - ok( !lstrcmpW( str, _bstr_("xml") ), "incorrect nodeName string\n"); - ok(r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMProcessingInstruction_get_nodeName(nodePI, &str); + ok(!lstrcmpW(str, L"xml"), "incorrect nodeName string\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); SysFreeString(str); IXMLDOMProcessingInstruction_Release(nodePI); } ref = IXMLDOMDocument_Release( doc ); - ok( ref == 0, "got %d\n", ref); + ok( ref == 0, "got %ld\n", ref); free_bstrs(); } @@ -2153,47 +2160,58 @@ static void test_persiststream(void) IPersistStream *stream; IXMLDOMDocument *doc; ULARGE_INTEGER size; - IPersist *persist; + IStream *istream; HRESULT hr; CLSID clsid; doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_QueryInterface(doc, &IID_IPersistStreamInit, (void**)&streaminit); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IPersistStreamInit_InitNew(streaminit); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IPersistStreamInit_GetSizeMax(streaminit, &size); - ok(hr == E_NOTIMPL, "got 0x%08x\n", hr); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_QueryInterface(doc, &IID_IPersistStream, (void **)&stream); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok((IUnknown *)stream == (IUnknown *)streaminit, "got %p, %p\n", stream, streaminit); - hr = IPersistStream_QueryInterface(stream, &IID_IPersist, (void **)&persist); - ok(hr == E_NOINTERFACE, "got 0x%08x\n", hr); - - hr = IXMLDOMDocument_QueryInterface(doc, &IID_IPersist, (void **)&persist); - ok(hr == E_NOINTERFACE, "got 0x%08x\n", hr); + check_interface(stream, &IID_IPersist, FALSE); + check_interface(doc, &IID_IPersist, FALSE); hr = IPersistStreamInit_GetClassID(streaminit, NULL); - ok(hr == E_POINTER, "got 0x%08x\n", hr); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); memset(&clsid, 0, sizeof(clsid)); hr = IPersistStreamInit_GetClassID(streaminit, &clsid); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(IsEqualGUID(&clsid, &CLSID_DOMDocument2), "wrong clsid %s\n", wine_dbgstr_guid(&clsid)); IPersistStream_Release(stream); + + /* test Load */ + istream = SHCreateMemStream((const BYTE*)complete4A, strlen(complete4A)); + hr = IPersistStreamInit_Load(streaminit, istream); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + IStream_Release(istream); + EXPECT_PARSE_ERROR(doc, S_OK, FALSE); + + istream = SHCreateMemStream((const BYTE*)"", 0); + hr = IPersistStreamInit_Load(streaminit, istream); + todo_wine ok(hr == XML_E_MISSINGROOT, "Unexpected hr %#lx.\n", hr); + ok(FAILED(hr), "got success\n"); + IStream_Release(istream); + EXPECT_PARSE_ERROR(doc, XML_E_MISSINGROOT, TRUE); + IPersistStreamInit_Release(streaminit); IXMLDOMDocument_Release(doc); } static void test_domnode( void ) { - HRESULT r; IXMLDOMDocument *doc, *owner = NULL; IXMLDOMElement *element = NULL; IXMLDOMNamedNodeMap *map = NULL; @@ -2202,6 +2220,7 @@ static void test_domnode( void ) IXMLDOMAttribute *attr = NULL; DOMNodeType type = NODE_INVALID; VARIANT_BOOL b; + HRESULT hr; BSTR str; VARIANT var; LONG count; @@ -2209,95 +2228,97 @@ static void test_domnode( void ) doc = create_document(&IID_IXMLDOMDocument); b = FALSE; - r = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b ); - ok( r == S_OK, "loadXML failed\n"); + hr = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b ); + ok(hr == S_OK, "loadXML failed\n"); ok( b == VARIANT_TRUE, "failed to load XML string\n"); EXPECT_CHILDREN(doc); - r = IXMLDOMDocument_get_documentElement( doc, &element ); - ok( r == S_OK, "should be a document element\n"); + hr = IXMLDOMDocument_get_documentElement( doc, &element ); + ok(hr == S_OK, "should be a document element\n"); ok( element != NULL, "should be an element\n"); VariantInit(&var); ok( V_VT(&var) == VT_EMPTY, "variant init failed\n"); - r = IXMLDOMDocument_get_nodeValue( doc, NULL ); - ok(r == E_INVALIDARG, "get_nodeValue ret %08x\n", r ); + hr = IXMLDOMDocument_get_nodeValue( doc, NULL ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMDocument_get_nodeValue( doc, &var ); - ok( r == S_FALSE, "nextNode returned wrong code\n"); + hr = IXMLDOMDocument_get_nodeValue( doc, &var ); + ok(hr == S_FALSE, "get_nodeValue returned wrong code\n"); ok( V_VT(&var) == VT_NULL, "variant wasn't empty\n"); ok( V_BSTR(&var) == NULL, "variant value wasn't null\n"); if (element) { + IXMLDOMNamedNodeMap *attributes; + owner = NULL; - r = IXMLDOMElement_get_ownerDocument( element, &owner ); - ok( r == S_OK, "get_ownerDocument return code\n"); + hr = IXMLDOMElement_get_ownerDocument( element, &owner ); + ok(hr == S_OK, "get_ownerDocument return code\n"); ok( owner != doc, "get_ownerDocument return\n"); IXMLDOMDocument_Release(owner); type = NODE_INVALID; - r = IXMLDOMElement_get_nodeType( element, &type); - ok( r == S_OK, "got %08x\n", r); + hr = IXMLDOMElement_get_nodeType( element, &type); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( type == NODE_ELEMENT, "node not an element\n"); str = NULL; - r = IXMLDOMElement_get_baseName( element, &str ); - ok( r == S_OK, "get_baseName returned wrong code\n"); - ok( lstrcmpW(str,szlc) == 0, "basename was wrong\n"); + hr = IXMLDOMElement_get_baseName( element, &str ); + ok(hr == S_OK, "get_baseName returned wrong code\n"); + ok( !lstrcmpW(str, L"lc"), "Unexpected basename.\n"); SysFreeString(str); /* check if nodename is correct */ - r = IXMLDOMElement_get_nodeName( element, NULL ); - ok ( r == E_INVALIDARG, "get_nodeName (NULL) wrong code\n"); + hr = IXMLDOMElement_get_nodeName( element, NULL ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); /* content doesn't matter here */ str = NULL; - r = IXMLDOMElement_get_nodeName( element, &str ); - ok ( r == S_OK, "get_nodeName wrong code\n"); + hr = IXMLDOMElement_get_nodeName( element, &str ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok ( str != NULL, "str is null\n"); - ok( !lstrcmpW( str, szlc ), "incorrect nodeName\n"); + ok( !lstrcmpW( str, L"lc" ), "Unexpected nodeName\n"); SysFreeString( str ); str = SysAllocString( nonexistent_fileW ); V_VT(&var) = VT_I4; V_I4(&var) = 0x1234; - r = IXMLDOMElement_getAttribute( element, str, &var ); - ok( r == E_FAIL, "getAttribute ret %08x\n", r ); + hr = IXMLDOMElement_getAttribute( element, str, &var ); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok( V_VT(&var) == VT_NULL || V_VT(&var) == VT_EMPTY, "vt = %x\n", V_VT(&var)); VariantClear(&var); SysFreeString(str); - str = SysAllocString( szdl ); + str = SysAllocString( L"dl" ); V_VT(&var) = VT_I4; V_I4(&var) = 0x1234; - r = IXMLDOMElement_getAttribute( element, str, &var ); - ok( r == S_OK, "getAttribute ret %08x\n", r ); + hr = IXMLDOMElement_getAttribute( element, str, &var ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( V_VT(&var) == VT_BSTR, "vt = %x\n", V_VT(&var)); - ok( !lstrcmpW(V_BSTR(&var), szstr1), "wrong attr value\n"); + ok( !lstrcmpW(V_BSTR(&var), L"str1"), "wrong attr value\n"); VariantClear( &var ); - r = IXMLDOMElement_getAttribute( element, NULL, &var ); - ok( r == E_INVALIDARG, "getAttribute ret %08x\n", r ); + hr = IXMLDOMElement_getAttribute( element, NULL, &var ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMElement_getAttribute( element, str, NULL ); - ok( r == E_INVALIDARG, "getAttribute ret %08x\n", r ); + hr = IXMLDOMElement_getAttribute( element, str, NULL ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); attr = NULL; - r = IXMLDOMElement_getAttributeNode( element, str, &attr); - ok( r == S_OK, "GetAttributeNode ret %08x\n", r ); + hr = IXMLDOMElement_getAttributeNode( element, str, &attr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( attr != NULL, "getAttributeNode returned NULL\n" ); if (attr) { - r = IXMLDOMAttribute_get_parentNode( attr, NULL ); - ok( r == E_INVALIDARG, "Expected E_INVALIDARG, ret %08x\n", r ); + hr = IXMLDOMAttribute_get_parentNode( attr, NULL ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); /* attribute doesn't have a parent in msxml interpretation */ node = (IXMLDOMNode*)0xdeadbeef; - r = IXMLDOMAttribute_get_parentNode( attr, &node ); - ok( r == S_FALSE, "Expected S_FALSE, ret %08x\n", r ); + hr = IXMLDOMAttribute_get_parentNode( attr, &node ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok( node == NULL, "Expected NULL, got %p\n", node ); IXMLDOMAttribute_Release(attr); @@ -2305,88 +2326,111 @@ static void test_domnode( void ) SysFreeString( str ); - r = IXMLDOMElement_get_attributes( element, &map ); - ok( r == S_OK, "get_attributes returned wrong code\n"); + hr = IXMLDOMElement_get_attributes( element, &map ); + ok(hr == S_OK, "get_attributes returned wrong code\n"); ok( map != NULL, "should be attributes\n"); EXPECT_CHILDREN(element); + + hr = IXMLDOMElement_get_childNodes( element, &list ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNodeList_nextNode( list, &node ); /* */ + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + IXMLDOMNode_Release( node ); + hr = IXMLDOMNodeList_nextNode( list, &node ); /* */ + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + IXMLDOMNode_Release( node ); + hr = IXMLDOMNodeList_nextNode( list, &node ); /* */ + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNode_get_attributes( node, &attributes ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + next = (IXMLDOMNode*)0xdeadbeef; + hr = IXMLDOMNamedNodeMap_nextNode( attributes, &next ); + ok(hr == S_FALSE, "Unexpected %#lx.\n", hr); + ok( next == NULL, "Expected NULL, ret %p\n", next ); + IXMLDOMNamedNodeMap_Release( attributes ); + IXMLDOMNode_Release( node ); + node = NULL; + next = NULL; + IXMLDOMNodeList_Release( list ); + list = NULL; } else ok( FALSE, "no element\n"); if (map) { - str = SysAllocString( szdl ); - r = IXMLDOMNamedNodeMap_getNamedItem( map, str, &node ); - ok( r == S_OK, "getNamedItem returned wrong code\n"); + str = SysAllocString( L"dl" ); + hr = IXMLDOMNamedNodeMap_getNamedItem( map, str, &node ); + ok(hr == S_OK, "getNamedItem returned wrong code\n"); ok( node != NULL, "should be attributes\n"); IXMLDOMNode_Release(node); SysFreeString( str ); - str = SysAllocString( szdl ); - r = IXMLDOMNamedNodeMap_getNamedItem( map, str, NULL ); - ok( r == E_INVALIDARG, "getNamedItem should return E_INVALIDARG\n"); + str = SysAllocString( L"dl" ); + hr = IXMLDOMNamedNodeMap_getNamedItem( map, str, NULL ); + ok(hr == E_INVALIDARG, "getNamedItem should return E_INVALIDARG\n"); SysFreeString( str ); /* something that isn't in complete4A */ - str = SysAllocString( szOpen ); + str = SysAllocString( L"open" ); node = (IXMLDOMNode *) 1; - r = IXMLDOMNamedNodeMap_getNamedItem( map, str, &node ); - ok( r == S_FALSE, "getNamedItem found a node that wasn't there\n"); + hr = IXMLDOMNamedNodeMap_getNamedItem( map, str, &node ); + ok(hr == S_FALSE, "getNamedItem found a node that wasn't there\n"); ok( node == NULL, "getNamedItem should have returned NULL\n"); SysFreeString( str ); /* test indexed access of attributes */ - r = IXMLDOMNamedNodeMap_get_length( map, NULL ); - ok ( r == E_INVALIDARG, "get_length should return E_INVALIDARG\n"); + hr = IXMLDOMNamedNodeMap_get_length( map, NULL ); + ok ( hr == E_INVALIDARG, "get_length should return E_INVALIDARG\n"); - r = IXMLDOMNamedNodeMap_get_length( map, &count ); - ok ( r == S_OK, "get_length wrong code\n"); + hr = IXMLDOMNamedNodeMap_get_length( map, &count ); + ok ( hr == S_OK, "get_length wrong code\n"); ok ( count == 1, "get_length != 1\n"); node = NULL; - r = IXMLDOMNamedNodeMap_get_item( map, -1, &node); - ok ( r == S_FALSE, "get_item (-1) wrong code\n"); + hr = IXMLDOMNamedNodeMap_get_item( map, -1, &node); + ok ( hr == S_FALSE, "get_item (-1) wrong code\n"); ok ( node == NULL, "there is no node\n"); node = NULL; - r = IXMLDOMNamedNodeMap_get_item( map, 1, &node); - ok ( r == S_FALSE, "get_item (1) wrong code\n"); + hr = IXMLDOMNamedNodeMap_get_item( map, 1, &node); + ok ( hr == S_FALSE, "get_item (1) wrong code\n"); ok ( node == NULL, "there is no attribute\n"); node = NULL; - r = IXMLDOMNamedNodeMap_get_item( map, 0, &node); - ok ( r == S_OK, "get_item (0) wrong code\n"); + hr = IXMLDOMNamedNodeMap_get_item( map, 0, &node); + ok ( hr == S_OK, "get_item (0) wrong code\n"); ok ( node != NULL, "should be attribute\n"); - r = IXMLDOMNode_get_nodeName( node, NULL ); - ok ( r == E_INVALIDARG, "get_nodeName (NULL) wrong code\n"); + hr = IXMLDOMNode_get_nodeName( node, NULL ); + ok ( hr == E_INVALIDARG, "get_nodeName (NULL) wrong code\n"); /* content doesn't matter here */ str = NULL; - r = IXMLDOMNode_get_nodeName( node, &str ); - ok ( r == S_OK, "get_nodeName wrong code\n"); + hr = IXMLDOMNode_get_nodeName( node, &str ); + ok ( hr == S_OK, "get_nodeName wrong code\n"); ok ( str != NULL, "str is null\n"); - ok( !lstrcmpW( str, szdl ), "incorrect node name\n"); + ok( !lstrcmpW( str, L"dl" ), "incorrect node name\n"); SysFreeString( str ); IXMLDOMNode_Release( node ); /* test sequential access of attributes */ node = NULL; - r = IXMLDOMNamedNodeMap_nextNode( map, &node ); - ok ( r == S_OK, "nextNode (first time) wrong code\n"); + hr = IXMLDOMNamedNodeMap_nextNode( map, &node ); + ok ( hr == S_OK, "nextNode (first time) wrong code\n"); ok ( node != NULL, "nextNode, should be attribute\n"); IXMLDOMNode_Release( node ); - r = IXMLDOMNamedNodeMap_nextNode( map, &node ); - ok ( r != S_OK, "nextNode (second time) wrong code\n"); + hr = IXMLDOMNamedNodeMap_nextNode( map, &node ); + ok ( hr != S_OK, "nextNode (second time) wrong code\n"); ok ( node == NULL, "nextNode, there is no attribute\n"); - r = IXMLDOMNamedNodeMap_reset( map ); - ok ( r == S_OK, "reset should return S_OK\n"); + hr = IXMLDOMNamedNodeMap_reset( map ); + ok ( hr == S_OK, "reset should return S_OK\n"); - r = IXMLDOMNamedNodeMap_nextNode( map, &node ); - ok ( r == S_OK, "nextNode (third time) wrong code\n"); + hr = IXMLDOMNamedNodeMap_nextNode( map, &node ); + ok ( hr == S_OK, "nextNode (third time) wrong code\n"); ok ( node != NULL, "nextNode, should be attribute\n"); } else @@ -2395,30 +2439,30 @@ static void test_domnode( void ) if (node) { type = NODE_INVALID; - r = IXMLDOMNode_get_nodeType( node, &type); - ok( r == S_OK, "getNamedItem returned wrong code\n"); + hr = IXMLDOMNode_get_nodeType( node, &type); + ok(hr == S_OK, "get_nodeType returned wrong code\n"); ok( type == NODE_ATTRIBUTE, "node not an attribute\n"); str = NULL; - r = IXMLDOMNode_get_baseName( node, NULL ); - ok( r == E_INVALIDARG, "get_baseName returned wrong code\n"); + hr = IXMLDOMNode_get_baseName( node, NULL ); + ok(hr == E_INVALIDARG, "get_baseName returned wrong code\n"); str = NULL; - r = IXMLDOMNode_get_baseName( node, &str ); - ok( r == S_OK, "get_baseName returned wrong code\n"); - ok( lstrcmpW(str,szdl) == 0, "basename was wrong\n"); + hr = IXMLDOMNode_get_baseName( node, &str ); + ok(hr == S_OK, "get_baseName returned wrong code\n"); + ok( !lstrcmpW(str, L"dl"), "Unexpected basename.\n"); SysFreeString( str ); - r = IXMLDOMNode_get_childNodes( node, NULL ); - ok( r == E_INVALIDARG, "get_childNodes returned wrong code\n"); + hr = IXMLDOMNode_get_childNodes( node, NULL ); + ok(hr == E_INVALIDARG, "get_childNodes returned wrong code\n"); - r = IXMLDOMNode_get_childNodes( node, &list ); - ok( r == S_OK, "get_childNodes returned wrong code\n"); + hr = IXMLDOMNode_get_childNodes( node, &list ); + ok(hr == S_OK, "get_childNodes returned wrong code\n"); if (list) { - r = IXMLDOMNodeList_nextNode( list, &next ); - ok( r == S_OK, "nextNode returned wrong code\n"); + hr = IXMLDOMNodeList_nextNode( list, &next ); + ok(hr == S_OK, "nextNode returned wrong code\n"); } else ok( FALSE, "no childlist\n"); @@ -2428,13 +2472,13 @@ static void test_domnode( void ) EXPECT_NO_CHILDREN(next); type = NODE_INVALID; - r = IXMLDOMNode_get_nodeType( next, &type); - ok( r == S_OK, "getNamedItem returned wrong code\n"); + hr = IXMLDOMNode_get_nodeType( next, &type); + ok(hr == S_OK, "get_nodeType returned wrong code\n"); ok( type == NODE_TEXT, "node not text\n"); str = (void *)0xdeadbeef; - r = IXMLDOMNode_get_baseName( next, &str ); - ok( r == S_FALSE, "get_baseName returned wrong code\n"); + hr = IXMLDOMNode_get_baseName( next, &str ); + ok(hr == S_FALSE, "get_baseName returned wrong code\n"); ok( str == NULL, "basename was wrong\n"); SysFreeString(str); } @@ -2460,56 +2504,64 @@ static void test_domnode( void ) /* now traverse the tree from the root element */ if (element) { - r = IXMLDOMElement_get_childNodes( element, &list ); - ok( r == S_OK, "get_childNodes returned wrong code\n"); + hr = IXMLDOMElement_get_childNodes( element, &list ); + ok(hr == S_OK, "get_childNodes returned wrong code\n"); /* using get_item for child list doesn't advance the position */ - ole_check(IXMLDOMNodeList_get_item(list, 1, &node)); + hr = IXMLDOMNodeList_get_item(list, 1, &node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); expect_node(node, "E2.E2.D1"); IXMLDOMNode_Release(node); - ole_check(IXMLDOMNodeList_nextNode(list, &node)); + hr = IXMLDOMNodeList_nextNode(list, &node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); expect_node(node, "E1.E2.D1"); IXMLDOMNode_Release(node); - ole_check(IXMLDOMNodeList_reset(list)); + hr = IXMLDOMNodeList_reset(list); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNodeList_AddRef(list); expect_list_and_release(list, "E1.E2.D1 E2.E2.D1 E3.E2.D1 E4.E2.D1"); - ole_check(IXMLDOMNodeList_reset(list)); + hr = IXMLDOMNodeList_reset(list); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); node = (void*)0xdeadbeef; - str = SysAllocString(szdl); - r = IXMLDOMElement_selectSingleNode( element, str, &node ); + str = SysAllocString(L"dl"); + hr = IXMLDOMElement_selectSingleNode( element, str, &node ); SysFreeString(str); - ok( r == S_FALSE, "ret %08x\n", r ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok( node == NULL, "node %p\n", node ); - str = SysAllocString(szbs); - r = IXMLDOMElement_selectSingleNode( element, str, &node ); + node = (void*)0xdeadbeef; + hr = IXMLDOMElement_selectSingleNode( element, _bstr_("In Valid"), &node ); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); + ok( node == NULL, "node %p\n", node ); + + str = SysAllocString(L"bs"); + hr = IXMLDOMElement_selectSingleNode( element, str, &node ); SysFreeString(str); - ok( r == S_OK, "ret %08x\n", r ); - r = IXMLDOMNode_Release( node ); - ok( r == 0, "ret %08x\n", r ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + IXMLDOMNode_Release( node ); } else ok( FALSE, "no element\n"); if (list) { - r = IXMLDOMNodeList_get_item(list, 0, NULL); - ok(r == E_INVALIDARG, "Expected E_INVALIDARG got %08x\n", r); + hr = IXMLDOMNodeList_get_item(list, 0, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNodeList_get_length(list, NULL); - ok(r == E_INVALIDARG, "Expected E_INVALIDARG got %08x\n", r); + hr = IXMLDOMNodeList_get_length(list, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNodeList_get_length( list, &count ); - ok( r == S_OK, "get_length returns %08x\n", r ); - ok( count == 4, "get_length got %d\n", count ); + hr = IXMLDOMNodeList_get_length( list, &count ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok( count == 4, "get_length got %ld\n", count ); - r = IXMLDOMNodeList_nextNode(list, NULL); - ok(r == E_INVALIDARG, "Expected E_INVALIDARG got %08x\n", r); + hr = IXMLDOMNodeList_nextNode(list, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNodeList_nextNode( list, &node ); - ok( r == S_OK, "nextNode returned wrong code\n"); + hr = IXMLDOMNodeList_nextNode( list, &node ); + ok(hr == S_OK, "nextNode returned wrong code\n"); } else ok( FALSE, "no list\n"); @@ -2517,19 +2569,19 @@ static void test_domnode( void ) if (node) { type = NODE_INVALID; - r = IXMLDOMNode_get_nodeType( node, &type); - ok( r == S_OK, "getNamedItem returned wrong code\n"); + hr = IXMLDOMNode_get_nodeType( node, &type); + ok(hr == S_OK, "get_nodeType returned wrong code\n"); ok( type == NODE_ELEMENT, "node not text\n"); - r = IXMLDOMNode_hasChildNodes( node, NULL ); - ok( r == E_INVALIDARG, "hasChildNodes bad return\n"); + hr = IXMLDOMNode_hasChildNodes( node, NULL ); + ok(hr == E_INVALIDARG, "hasChildNodes bad return\n"); EXPECT_CHILDREN(node); str = NULL; - r = IXMLDOMNode_get_baseName( node, &str ); - ok( r == S_OK, "get_baseName returned wrong code\n"); - ok( lstrcmpW(str,szbs) == 0, "basename was wrong\n"); + hr = IXMLDOMNode_get_baseName( node, &str ); + ok(hr == S_OK, "get_baseName returned wrong code\n"); + ok( !lstrcmpW(str, L"bs"), "Unexpected basename.\n"); SysFreeString(str); } else @@ -2544,27 +2596,26 @@ static void test_domnode( void ) b = FALSE; str = SysAllocString( szComplete5 ); - r = IXMLDOMDocument_loadXML( doc, str, &b ); - ok( r == S_OK, "loadXML failed\n"); + hr = IXMLDOMDocument_loadXML( doc, str, &b ); + ok(hr == S_OK, "loadXML failed\n"); ok( b == VARIANT_TRUE, "failed to load XML string\n"); SysFreeString( str ); EXPECT_CHILDREN(doc); - r = IXMLDOMDocument_get_documentElement( doc, &element ); - ok( r == S_OK, "should be a document element\n"); + hr = IXMLDOMDocument_get_documentElement( doc, &element ); + ok(hr == S_OK, "should be a document element\n"); ok( element != NULL, "should be an element\n"); if (element) { - static const WCHAR szSSearch[] = {'S',':','s','e','a','r','c','h',0}; BSTR tag = NULL; /* check if the tag is correct */ - r = IXMLDOMElement_get_tagName( element, &tag ); - ok( r == S_OK, "couldn't get tag name\n"); + hr = IXMLDOMElement_get_tagName( element, &tag ); + ok(hr == S_OK, "couldn't get tag name\n"); ok( tag != NULL, "tag was null\n"); - ok( !lstrcmpW( tag, szSSearch ), "incorrect tag name\n"); + ok( !lstrcmpW( tag, L"S:search" ), "incorrect tag name\n"); SysFreeString( tag ); IXMLDOMElement_Release( element ); @@ -2619,13 +2670,13 @@ static void test_refs(void) EXPECT_REF(doc, 1); hr = IXMLDOMDocument_createNode(doc, type, _bstr_("name"), NULL, &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(doc, 1); EXPECT_REF(node, 1); /* try IDispatch and IUnknown from IXMLDOMNode */ hr = IXMLDOMNode_QueryInterface(node, &IID_IUnknown, (void**)&unk); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(unk, 2); todo_wine { EXPECT_REF(node, 1); @@ -2633,14 +2684,14 @@ todo_wine { } EXPECT_REF(unk, 2); hr = IUnknown_QueryInterface(unk, &IID_IDispatch, (void**)&disp); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine ok(unk != (IUnknown*)disp, "%d: got %p and %p\n", ptr->type, unk, disp); EXPECT_REF(unk, 3); todo_wine EXPECT_REF(disp, 1); EXPECT_REF(unk, 3); hr = IUnknown_QueryInterface(unk, &IID_IDispatch, (void**)&disp2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine ok(disp != disp2, "%d: got %p and %p\n", ptr->type, disp, disp2); EXPECT_REF(unk, 4); todo_wine EXPECT_REF(disp2, 1); @@ -2651,14 +2702,14 @@ todo_wine { /* get IXMLDOMNode from this IUnknown */ EXPECT_REF(unk, 2); hr = IUnknown_QueryInterface(unk, &IID_IXMLDOMNode, (void**)&node2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine ok(unk != (IUnknown*)node2, "%d: got %p and %p\n", ptr->type, unk, node2); EXPECT_REF(unk, 3); todo_wine EXPECT_REF(node2, 1); EXPECT_REF(unk, 3); hr = IUnknown_QueryInterface(unk, &IID_IXMLDOMNode, (void**)&node3); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine ok(node2 != node3, "%d: got %p and %p\n", ptr->type, node2, node3); EXPECT_REF(unk, 4); todo_wine EXPECT_REF(node3, 1); @@ -2669,14 +2720,14 @@ todo_wine { /* try IDispatchEx from IUnknown */ EXPECT_REF(unk, 2); hr = IUnknown_QueryInterface(unk, &IID_IDispatchEx, (void**)&dispex); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(unk != (IUnknown*)dispex, "%d: got %p and %p\n", ptr->type, unk, dispex); EXPECT_REF(unk, 3); todo_wine EXPECT_REF(dispex, 1); EXPECT_REF(unk, 3); hr = IUnknown_QueryInterface(unk, &IID_IDispatchEx, (void**)&dispex2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine ok(dispex != dispex2, "%d: got %p and %p\n", ptr->type, dispex, dispex2); EXPECT_REF(unk, 4); todo_wine EXPECT_REF(dispex2, 1); @@ -2687,10 +2738,10 @@ todo_wine { /* try corresponding IXMLDOM* */ EXPECT_REF(unk, 2); hr = IUnknown_QueryInterface(unk, ptr->iid, (void**)&node_typed); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(unk, 3); hr = IUnknown_QueryInterface(unk, ptr->iid, (void**)&node_typed2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(unk, 4); todo_wine ok(node_typed != node_typed2, "%d: got %p and %p\n", ptr->type, node_typed, node_typed2); IUnknown_Release(node_typed); @@ -2698,19 +2749,19 @@ todo_wine { /* try invalid IXMLDOM* */ hr = IUnknown_QueryInterface(unk, (ptr+1)->iid, (void**)&node_typed); - EXPECT_HR(hr, E_NOINTERFACE); + ok(hr == E_NOINTERFACE, "Unexpected hr %#lx.\n", hr); IUnknown_Release(unk); EXPECT_REF(node, 1); hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMNode, (void**)&node2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(node, 2); ok(node == node2, "%d: got %p and %p\n", ptr->type, node, node2); EXPECT_REF(node, 2); hr = IXMLDOMNode_QueryInterface(node, ptr->iid, (void**)&node_typed); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(node, 3); todo_wine { EXPECT_REF(node_typed, 2); @@ -2726,13 +2777,13 @@ todo_wine { EXPECT_REF(doc, 1); ref = IXMLDOMDocument_Release(doc); - ok( ref == 0, "ref %d\n", ref); + ok( ref == 0, "ref %ld\n", ref); /* check IUnknown after releasing DOM iface */ doc = create_document(&IID_IXMLDOMDocument); EXPECT_REF(doc, 1); hr = IXMLDOMDocument_QueryInterface(doc, &IID_IUnknown, (void**)&unk); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine { EXPECT_REF(unk, 3); EXPECT_REF(doc, 1); @@ -2745,7 +2796,7 @@ todo_wine { EXPECT_REF(doc, 1); hr = IXMLDOMDocument_QueryInterface(doc, &IID_IUnknown, (void**)&unk); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine { EXPECT_REF(unk, 3); EXPECT_REF(doc, 1); @@ -2755,11 +2806,11 @@ todo_wine { /* IXMLDOMImplementation */ EXPECT_REF(doc, 1); hr = IXMLDOMDocument_get_implementation(doc, &impl); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(doc, 1); EXPECT_REF(impl, 1); hr = IXMLDOMDocument_get_implementation(doc, &impl2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(doc, 1); EXPECT_REF(impl2, 1); ok(impl != impl2, "got %p, %p\n", impl, impl2); @@ -2767,7 +2818,7 @@ todo_wine { IXMLDOMImplementation_Release(impl2); hr = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b ); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( b == VARIANT_TRUE, "failed to load XML string\n"); EXPECT_REF(doc, 1); @@ -2781,19 +2832,19 @@ todo_wine { EXPECT_REF(doc, 1); hr = IXMLDOMDocument_QueryInterface(doc, &IID_IUnknown, (void**)&unk); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine { EXPECT_REF(unk, 3); EXPECT_REF(doc, 1); } hr = IXMLDOMDocument_get_documentElement(doc, &element); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine { EXPECT_REF(doc, 1); EXPECT_REF(element, 2); } hr = IXMLDOMDocument_get_documentElement(doc, &elem2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine { EXPECT_REF(doc, 1); @@ -2806,14 +2857,14 @@ todo_wine { /* get IUnknown from a node doesn't touch node instance refcount */ hr = IXMLDOMElement_QueryInterface(element, &IID_IUnknown, (void**)&unk); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(element, 2); todo_wine { EXPECT_REF(unk, 4); EXPECT_REF(elem2, 2); } hr = IXMLDOMElement_QueryInterface(elem2, &IID_IUnknown, (void**)&unk2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine { EXPECT_REF(unk, 5); EXPECT_REF(unk2, 5); @@ -2836,45 +2887,45 @@ todo_wine { IUnknown_Release(unk2); hr = IXMLDOMElement_get_childNodes( element, &node_list ); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine EXPECT_REF(element, 2); EXPECT_REF(node_list, 1); hr = IXMLDOMNodeList_get_item( node_list, 0, &node ); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(node_list, 1); EXPECT_REF(node, 1); hr = IXMLDOMNodeList_get_item( node_list, 0, &node2 ); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(node_list, 1); EXPECT_REF(node2, 1); ref = IXMLDOMNode_Release( node ); - ok( ref == 0, "ref %d\n", ref ); + ok( ref == 0, "ref %ld\n", ref ); ref = IXMLDOMNode_Release( node2 ); - ok( ref == 0, "ref %d\n", ref ); + ok( ref == 0, "ref %ld\n", ref ); ref = IXMLDOMNodeList_Release( node_list ); - ok( ref == 0, "ref %d\n", ref ); + ok( ref == 0, "ref %ld\n", ref ); ok( node != node2, "node %p node2 %p\n", node, node2 ); ref = IXMLDOMDocument_Release( doc ); - todo_wine ok( ref == 0, "ref %d\n", ref ); + todo_wine ok( ref == 0, "ref %ld\n", ref ); todo_wine EXPECT_REF(element, 2); /* IUnknown must be unique however we obtain it */ hr = IXMLDOMElement_QueryInterface(element, &IID_IUnknown, (void**)&unk); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(element, 2); hr = IXMLDOMElement_QueryInterface(element, &IID_IXMLDOMNode, (void**)&node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine EXPECT_REF(element, 2); hr = IXMLDOMNode_QueryInterface(node, &IID_IUnknown, (void**)&unk2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine EXPECT_REF(element, 2); ok(unk == unk2, "unk %p unk2 %p\n", unk, unk2); todo_wine ok(element != (void*)node, "node %p element %p\n", node, element); @@ -2891,9 +2942,6 @@ todo_wine { static void test_create(void) { - static const WCHAR szOne[] = {'1',0}; - static const WCHAR szOneGarbage[] = {'1','G','a','r','b','a','g','e',0}; - HRESULT r; VARIANT var; BSTR str, name; IXMLDOMDocument *doc; @@ -2904,6 +2952,7 @@ static void test_create(void) IXMLDOMNode *root, *node, *child; IXMLDOMNamedNodeMap *attr_map; IUnknown *unk; + HRESULT hr; LONG ref; LONG num; @@ -2915,76 +2964,76 @@ static void test_create(void) V_VT(&var) = VT_I1; V_I1(&var) = NODE_DOCUMENT; node = (IXMLDOMNode*)0x1; - r = IXMLDOMDocument_createNode( doc, var, NULL, NULL, &node ); - ok( r == E_INVALIDARG, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, NULL, NULL, &node ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok( node == (void*)0x1, "expected same ptr, got %p\n", node); V_VT(&var) = VT_I1; V_I1(&var) = NODE_DOCUMENT_TYPE; node = (IXMLDOMNode*)0x1; - r = IXMLDOMDocument_createNode( doc, var, NULL, NULL, &node ); - ok( r == E_INVALIDARG, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, NULL, NULL, &node ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok( node == (void*)0x1, "expected same ptr, got %p\n", node); V_VT(&var) = VT_I1; V_I1(&var) = NODE_ENTITY; node = (IXMLDOMNode*)0x1; - r = IXMLDOMDocument_createNode( doc, var, NULL, NULL, &node ); - ok( r == E_INVALIDARG, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, NULL, NULL, &node ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok( node == (void*)0x1, "expected same ptr, got %p\n", node); V_VT(&var) = VT_I1; V_I1(&var) = NODE_NOTATION; node = (IXMLDOMNode*)0x1; - r = IXMLDOMDocument_createNode( doc, var, NULL, NULL, &node ); - ok( r == E_INVALIDARG, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, NULL, NULL, &node ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok( node == (void*)0x1, "expected same ptr, got %p\n", node); /* NODE_COMMENT */ V_VT(&var) = VT_I1; V_I1(&var) = NODE_COMMENT; node = NULL; - r = IXMLDOMDocument_createNode( doc, var, NULL, NULL, &node ); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, NULL, NULL, &node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( node != NULL, "\n"); - r = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMComment, (void**)&comment); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMComment, (void**)&comment); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(node); str = NULL; - r = IXMLDOMComment_get_data(comment, &str); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMComment_get_data(comment, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( str && SysStringLen(str) == 0, "expected empty comment, %p\n", str); IXMLDOMComment_Release(comment); SysFreeString(str); node = (IXMLDOMNode*)0x1; - r = IXMLDOMDocument_createNode( doc, var, _bstr_(""), NULL, &node ); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, _bstr_(""), NULL, &node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMComment, (void**)&comment); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMComment, (void**)&comment); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(node); str = NULL; - r = IXMLDOMComment_get_data(comment, &str); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMComment_get_data(comment, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( str && SysStringLen(str) == 0, "expected empty comment, %p\n", str); IXMLDOMComment_Release(comment); SysFreeString(str); node = (IXMLDOMNode*)0x1; - r = IXMLDOMDocument_createNode( doc, var, _bstr_("blah"), NULL, &node ); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, _bstr_("blah"), NULL, &node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMComment, (void**)&comment); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMComment, (void**)&comment); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(node); str = NULL; - r = IXMLDOMComment_get_data(comment, &str); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMComment_get_data(comment, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( str && SysStringLen(str) == 0, "expected empty comment, %p\n", str); IXMLDOMComment_Release(comment); SysFreeString(str); @@ -2993,47 +3042,47 @@ static void test_create(void) V_VT(&var) = VT_I1; V_I1(&var) = NODE_TEXT; node = NULL; - r = IXMLDOMDocument_createNode( doc, var, NULL, NULL, &node ); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, NULL, NULL, &node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( node != NULL, "\n"); - r = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMText, (void**)&text); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMText, (void**)&text); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(node); str = NULL; - r = IXMLDOMText_get_data(text, &str); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMText_get_data(text, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( str && SysStringLen(str) == 0, "expected empty comment, %p\n", str); IXMLDOMText_Release(text); SysFreeString(str); node = (IXMLDOMNode*)0x1; - r = IXMLDOMDocument_createNode( doc, var, _bstr_(""), NULL, &node ); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, _bstr_(""), NULL, &node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMText, (void**)&text); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMText, (void**)&text); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(node); str = NULL; - r = IXMLDOMText_get_data(text, &str); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMText_get_data(text, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( str && SysStringLen(str) == 0, "expected empty comment, %p\n", str); IXMLDOMText_Release(text); SysFreeString(str); node = (IXMLDOMNode*)0x1; - r = IXMLDOMDocument_createNode( doc, var, _bstr_("blah"), NULL, &node ); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, _bstr_("blah"), NULL, &node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMText, (void**)&text); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMText, (void**)&text); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(node); str = NULL; - r = IXMLDOMText_get_data(text, &str); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMText_get_data(text, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( str && SysStringLen(str) == 0, "expected empty comment, %p\n", str); IXMLDOMText_Release(text); SysFreeString(str); @@ -3042,47 +3091,47 @@ static void test_create(void) V_VT(&var) = VT_I1; V_I1(&var) = NODE_CDATA_SECTION; node = NULL; - r = IXMLDOMDocument_createNode( doc, var, NULL, NULL, &node ); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, NULL, NULL, &node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( node != NULL, "\n"); - r = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMCDATASection, (void**)&cdata); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMCDATASection, (void**)&cdata); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(node); str = NULL; - r = IXMLDOMCDATASection_get_data(cdata, &str); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMCDATASection_get_data(cdata, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( str && SysStringLen(str) == 0, "expected empty comment, %p\n", str); IXMLDOMCDATASection_Release(cdata); SysFreeString(str); node = (IXMLDOMNode*)0x1; - r = IXMLDOMDocument_createNode( doc, var, _bstr_(""), NULL, &node ); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, _bstr_(""), NULL, &node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMCDATASection, (void**)&cdata); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMCDATASection, (void**)&cdata); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(node); str = NULL; - r = IXMLDOMCDATASection_get_data(cdata, &str); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMCDATASection_get_data(cdata, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( str && SysStringLen(str) == 0, "expected empty comment, %p\n", str); IXMLDOMCDATASection_Release(cdata); SysFreeString(str); node = (IXMLDOMNode*)0x1; - r = IXMLDOMDocument_createNode( doc, var, _bstr_("blah"), NULL, &node ); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, _bstr_("blah"), NULL, &node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMCDATASection, (void**)&cdata); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMCDATASection, (void**)&cdata); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(node); str = NULL; - r = IXMLDOMCDATASection_get_data(cdata, &str); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMCDATASection_get_data(cdata, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( str && SysStringLen(str) == 0, "expected empty comment, %p\n", str); IXMLDOMCDATASection_Release(cdata); SysFreeString(str); @@ -3091,33 +3140,33 @@ static void test_create(void) V_VT(&var) = VT_I1; V_I1(&var) = NODE_ATTRIBUTE; node = (IXMLDOMNode*)0x1; - r = IXMLDOMDocument_createNode( doc, var, NULL, NULL, &node ); - ok( r == E_FAIL, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, NULL, NULL, &node ); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok( node == (void*)0x1, "expected same ptr, got %p\n", node); V_VT(&var) = VT_I1; V_I1(&var) = NODE_ATTRIBUTE; node = (IXMLDOMNode*)0x1; - r = IXMLDOMDocument_createNode( doc, var, _bstr_(""), NULL, &node ); - ok( r == E_FAIL, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, _bstr_(""), NULL, &node ); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok( node == (void*)0x1, "expected same ptr, got %p\n", node); V_VT(&var) = VT_I1; V_I1(&var) = NODE_ATTRIBUTE; - str = SysAllocString( szlc ); - r = IXMLDOMDocument_createNode( doc, var, str, NULL, &node ); - ok( r == S_OK, "returns %08x\n", r ); - if( SUCCEEDED(r) ) IXMLDOMNode_Release( node ); + str = SysAllocString( L"lc" ); + hr = IXMLDOMDocument_createNode( doc, var, str, NULL, &node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + if (SUCCEEDED(hr)) IXMLDOMNode_Release(node); SysFreeString(str); /* a name is required for attribute, try a BSTR with first null wchar */ V_VT(&var) = VT_I1; V_I1(&var) = NODE_ATTRIBUTE; - str = SysAllocString( szstr1 ); + str = SysAllocString( L"str1" ); str[0] = 0; node = (IXMLDOMNode*)0x1; - r = IXMLDOMDocument_createNode( doc, var, str, NULL, &node ); - ok( r == E_FAIL, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, str, NULL, &node ); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok( node == (void*)0x1, "expected same ptr, got %p\n", node); SysFreeString(str); @@ -3125,119 +3174,119 @@ static void test_create(void) V_VT(&var) = VT_I1; V_I1(&var) = NODE_PROCESSING_INSTRUCTION; node = (IXMLDOMNode*)0x1; - r = IXMLDOMDocument_createNode( doc, var, NULL, NULL, &node ); - ok( r == E_FAIL, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, NULL, NULL, &node ); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok( node == (void*)0x1, "expected same ptr, got %p\n", node); V_VT(&var) = VT_I1; V_I1(&var) = NODE_PROCESSING_INSTRUCTION; node = (IXMLDOMNode*)0x1; - r = IXMLDOMDocument_createNode( doc, var, _bstr_(""), NULL, &node ); - ok( r == E_FAIL, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, _bstr_(""), NULL, &node ); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok( node == (void*)0x1, "expected same ptr, got %p\n", node); V_VT(&var) = VT_I1; V_I1(&var) = NODE_PROCESSING_INSTRUCTION; - r = IXMLDOMDocument_createNode( doc, var, _bstr_("pi"), NULL, NULL ); - ok( r == E_INVALIDARG, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, _bstr_("pi"), NULL, NULL ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); /* NODE_ENTITY_REFERENCE */ V_VT(&var) = VT_I1; V_I1(&var) = NODE_ENTITY_REFERENCE; node = (IXMLDOMNode*)0x1; - r = IXMLDOMDocument_createNode( doc, var, NULL, NULL, &node ); - ok( r == E_FAIL, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, NULL, NULL, &node ); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok( node == (void*)0x1, "expected same ptr, got %p\n", node); V_VT(&var) = VT_I1; V_I1(&var) = NODE_ENTITY_REFERENCE; node = (IXMLDOMNode*)0x1; - r = IXMLDOMDocument_createNode( doc, var, _bstr_(""), NULL, &node ); - ok( r == E_FAIL, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, _bstr_(""), NULL, &node ); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok( node == (void*)0x1, "expected same ptr, got %p\n", node); /* NODE_ELEMENT */ V_VT(&var) = VT_I1; V_I1(&var) = NODE_ELEMENT; node = (IXMLDOMNode*)0x1; - r = IXMLDOMDocument_createNode( doc, var, NULL, NULL, &node ); - ok( r == E_FAIL, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, NULL, NULL, &node ); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok( node == (void*)0x1, "expected same ptr, got %p\n", node); V_VT(&var) = VT_I1; V_I1(&var) = NODE_ELEMENT; node = (IXMLDOMNode*)0x1; - r = IXMLDOMDocument_createNode( doc, var, _bstr_(""), NULL, &node ); - ok( r == E_FAIL, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, _bstr_(""), NULL, &node ); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok( node == (void*)0x1, "expected same ptr, got %p\n", node); V_VT(&var) = VT_I1; V_I1(&var) = NODE_ELEMENT; - str = SysAllocString( szlc ); - r = IXMLDOMDocument_createNode( doc, var, str, NULL, &node ); - ok( r == S_OK, "returns %08x\n", r ); - if( SUCCEEDED(r) ) IXMLDOMNode_Release( node ); + str = SysAllocString( L"lc" ); + hr = IXMLDOMDocument_createNode( doc, var, str, NULL, &node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + if( SUCCEEDED(hr) ) IXMLDOMNode_Release( node ); V_VT(&var) = VT_I1; V_I1(&var) = NODE_ELEMENT; - r = IXMLDOMDocument_createNode( doc, var, str, NULL, NULL ); - ok( r == E_INVALIDARG, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, str, NULL, NULL ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); V_VT(&var) = VT_R4; V_R4(&var) = NODE_ELEMENT; - r = IXMLDOMDocument_createNode( doc, var, str, NULL, &node ); - ok( r == S_OK, "returns %08x\n", r ); - if( SUCCEEDED(r) ) IXMLDOMNode_Release( node ); + hr = IXMLDOMDocument_createNode( doc, var, str, NULL, &node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + if( SUCCEEDED(hr) ) IXMLDOMNode_Release( node ); V_VT(&var) = VT_BSTR; - V_BSTR(&var) = SysAllocString( szOne ); - r = IXMLDOMDocument_createNode( doc, var, str, NULL, &node ); - ok( r == S_OK, "returns %08x\n", r ); - if( SUCCEEDED(r) ) IXMLDOMNode_Release( node ); + V_BSTR(&var) = SysAllocString( L"1" ); + hr = IXMLDOMDocument_createNode( doc, var, str, NULL, &node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + if( SUCCEEDED(hr) ) IXMLDOMNode_Release( node ); VariantClear(&var); V_VT(&var) = VT_BSTR; - V_BSTR(&var) = SysAllocString( szOneGarbage ); - r = IXMLDOMDocument_createNode( doc, var, str, NULL, &node ); - ok( r == E_INVALIDARG, "returns %08x\n", r ); - if( SUCCEEDED(r) ) IXMLDOMNode_Release( node ); + V_BSTR(&var) = SysAllocString( L"1Garbage" ); + hr = IXMLDOMDocument_createNode( doc, var, str, NULL, &node ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + if( SUCCEEDED(hr) ) IXMLDOMNode_Release( node ); VariantClear(&var); V_VT(&var) = VT_I4; V_I4(&var) = NODE_ELEMENT; - r = IXMLDOMDocument_createNode( doc, var, str, NULL, &node ); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMDocument_createNode( doc, var, str, NULL, &node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(doc, 1); - r = IXMLDOMDocument_appendChild( doc, node, &root ); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMDocument_appendChild( doc, node, &root ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( node == root, "%p %p\n", node, root ); EXPECT_REF(doc, 1); EXPECT_REF(node, 2); ref = IXMLDOMNode_Release( node ); - ok(ref == 1, "ref %d\n", ref); + ok(ref == 1, "ref %ld\n", ref); SysFreeString( str ); V_VT(&var) = VT_I4; V_I4(&var) = NODE_ELEMENT; - str = SysAllocString( szbs ); - r = IXMLDOMDocument_createNode( doc, var, str, NULL, &node ); - ok( r == S_OK, "returns %08x\n", r ); + str = SysAllocString( L"bs" ); + hr = IXMLDOMDocument_createNode( doc, var, str, NULL, &node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); SysFreeString( str ); EXPECT_REF(node, 1); - r = IXMLDOMNode_QueryInterface( node, &IID_IUnknown, (void**)&unk ); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMNode_QueryInterface( node, &IID_IUnknown, (void**)&unk ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(unk, 2); V_VT(&var) = VT_EMPTY; child = NULL; - r = IXMLDOMNode_insertBefore( root, (IXMLDOMNode*)unk, var, &child ); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMNode_insertBefore( root, (IXMLDOMNode*)unk, var, &child ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( unk == (IUnknown*)child, "%p %p\n", unk, child ); todo_wine EXPECT_REF(unk, 4); @@ -3247,79 +3296,79 @@ static void test_create(void) V_VT(&var) = VT_NULL; V_DISPATCH(&var) = (IDispatch*)node; - r = IXMLDOMNode_insertBefore( root, node, var, &child ); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMNode_insertBefore( root, node, var, &child ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( node == child, "%p %p\n", node, child ); IXMLDOMNode_Release( child ); V_VT(&var) = VT_NULL; V_DISPATCH(&var) = (IDispatch*)node; - r = IXMLDOMNode_insertBefore( root, node, var, NULL ); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMNode_insertBefore( root, node, var, NULL ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release( node ); - r = IXMLDOMNode_QueryInterface( root, &IID_IXMLDOMElement, (void**)&element ); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMNode_QueryInterface( root, &IID_IXMLDOMElement, (void**)&element ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMElement_get_attributes( element, &attr_map ); - ok( r == S_OK, "returns %08x\n", r ); - r = IXMLDOMNamedNodeMap_get_length( attr_map, &num ); - ok( r == S_OK, "returns %08x\n", r ); - ok( num == 0, "num %d\n", num ); + hr = IXMLDOMElement_get_attributes( element, &attr_map ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNamedNodeMap_get_length( attr_map, &num ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok( num == 0, "num %ld\n", num ); IXMLDOMNamedNodeMap_Release( attr_map ); V_VT(&var) = VT_BSTR; - V_BSTR(&var) = SysAllocString( szstr1 ); - name = SysAllocString( szdl ); - r = IXMLDOMElement_setAttribute( element, name, var ); - ok( r == S_OK, "returns %08x\n", r ); - r = IXMLDOMElement_get_attributes( element, &attr_map ); - ok( r == S_OK, "returns %08x\n", r ); - r = IXMLDOMNamedNodeMap_get_length( attr_map, &num ); - ok( r == S_OK, "returns %08x\n", r ); - ok( num == 1, "num %d\n", num ); + V_BSTR(&var) = SysAllocString( L"str1" ); + name = SysAllocString( L"dl" ); + hr = IXMLDOMElement_setAttribute( element, name, var ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMElement_get_attributes( element, &attr_map ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNamedNodeMap_get_length( attr_map, &num ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok( num == 1, "num %ld\n", num ); IXMLDOMNamedNodeMap_Release( attr_map ); VariantClear(&var); V_VT(&var) = VT_BSTR; - V_BSTR(&var) = SysAllocString( szstr2 ); - r = IXMLDOMElement_setAttribute( element, name, var ); - ok( r == S_OK, "returns %08x\n", r ); - r = IXMLDOMElement_get_attributes( element, &attr_map ); - ok( r == S_OK, "returns %08x\n", r ); - r = IXMLDOMNamedNodeMap_get_length( attr_map, &num ); - ok( r == S_OK, "returns %08x\n", r ); - ok( num == 1, "num %d\n", num ); + V_BSTR(&var) = SysAllocString( L"str2" ); + hr = IXMLDOMElement_setAttribute( element, name, var ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMElement_get_attributes( element, &attr_map ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNamedNodeMap_get_length( attr_map, &num ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok( num == 1, "num %ld\n", num ); IXMLDOMNamedNodeMap_Release( attr_map ); VariantClear(&var); - r = IXMLDOMElement_getAttribute( element, name, &var ); - ok( r == S_OK, "returns %08x\n", r ); - ok( !lstrcmpW(V_BSTR(&var), szstr2), "wrong attr value\n"); + hr = IXMLDOMElement_getAttribute( element, name, &var ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok( !lstrcmpW(V_BSTR(&var), L"str2"), "wrong attr value\n"); VariantClear(&var); SysFreeString(name); V_VT(&var) = VT_BSTR; - V_BSTR(&var) = SysAllocString( szstr1 ); - name = SysAllocString( szlc ); - r = IXMLDOMElement_setAttribute( element, name, var ); - ok( r == S_OK, "returns %08x\n", r ); - r = IXMLDOMElement_get_attributes( element, &attr_map ); - ok( r == S_OK, "returns %08x\n", r ); - r = IXMLDOMNamedNodeMap_get_length( attr_map, &num ); - ok( r == S_OK, "returns %08x\n", r ); - ok( num == 2, "num %d\n", num ); + V_BSTR(&var) = SysAllocString( L"str1" ); + name = SysAllocString( L"lc" ); + hr = IXMLDOMElement_setAttribute( element, name, var ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMElement_get_attributes( element, &attr_map ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNamedNodeMap_get_length( attr_map, &num ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok( num == 2, "num %ld\n", num ); IXMLDOMNamedNodeMap_Release( attr_map ); VariantClear(&var); SysFreeString(name); V_VT(&var) = VT_I4; V_I4(&var) = 10; - name = SysAllocString( szbs ); - r = IXMLDOMElement_setAttribute( element, name, var ); - ok( r == S_OK, "returns %08x\n", r ); + name = SysAllocString( L"bs" ); + hr = IXMLDOMElement_setAttribute( element, name, var ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); VariantClear(&var); - r = IXMLDOMElement_getAttribute( element, name, &var ); - ok( r == S_OK, "returns %08x\n", r ); + hr = IXMLDOMElement_getAttribute( element, name, &var ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( V_VT(&var) == VT_BSTR, "variant type %x\n", V_VT(&var)); VariantClear(&var); SysFreeString(name); @@ -3327,9 +3376,9 @@ static void test_create(void) /* Create an Attribute */ V_VT(&var) = VT_I4; V_I4(&var) = NODE_ATTRIBUTE; - str = SysAllocString( szAttribute ); - r = IXMLDOMDocument_createNode( doc, var, str, NULL, &node ); - ok( r == S_OK, "returns %08x\n", r ); + str = SysAllocString( L"Attr" ); + hr = IXMLDOMDocument_createNode( doc, var, str, NULL, &node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( node != NULL, "node was null\n"); SysFreeString(str); @@ -3361,29 +3410,29 @@ static void test_getElementsByTagName(void) IXMLDOMElement *elem; WCHAR buff[100]; VARIANT_BOOL b; - HRESULT r; + HRESULT hr; LONG len; BSTR str; doc = create_document(&IID_IXMLDOMDocument); - r = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b ); - ok( r == S_OK, "loadXML failed\n"); + hr = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b ); + ok(hr == S_OK, "loadXML failed\n"); ok( b == VARIANT_TRUE, "failed to load XML string\n"); /* null arguments cases */ - r = IXMLDOMDocument_getElementsByTagName(doc, NULL, &node_list); - ok( r == E_INVALIDARG, "ret %08x\n", r ); - r = IXMLDOMDocument_getElementsByTagName(doc, _bstr_("*"), NULL); - ok( r == E_INVALIDARG, "ret %08x\n", r ); + hr = IXMLDOMDocument_getElementsByTagName(doc, NULL, &node_list); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument_getElementsByTagName(doc, _bstr_("*"), NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); while (ptr->query) { - r = IXMLDOMDocument_getElementsByTagName(doc, _bstr_(ptr->query), &node_list); - ok(r == S_OK, "ret %08x\n", r); - r = IXMLDOMNodeList_get_length(node_list, &len); - ok(r == S_OK, "ret %08x\n", r); - ok(len == ptr->len, "%s: got len %d, expected %d\n", ptr->query, len, ptr->len); + hr = IXMLDOMDocument_getElementsByTagName(doc, _bstr_(ptr->query), &node_list); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNodeList_get_length(node_list, &len); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(len == ptr->len, "%s: got len %ld, expected %d\n", ptr->query, len, ptr->len); expect_list_and_release(node_list, ptr->result); free_bstrs(); @@ -3391,45 +3440,45 @@ static void test_getElementsByTagName(void) } /* broken query BSTR */ - memcpy(&buff[2], szstar, sizeof(szstar)); + memcpy(&buff[2], L"*", 2 * sizeof(WCHAR)); /* just a big length */ *(DWORD*)buff = 0xf0f0; - r = IXMLDOMDocument_getElementsByTagName(doc, &buff[2], &node_list); - ok( r == S_OK, "ret %08x\n", r ); - r = IXMLDOMNodeList_get_length( node_list, &len ); - ok( r == S_OK, "ret %08x\n", r ); - ok( len == 6, "len %d\n", len ); + hr = IXMLDOMDocument_getElementsByTagName(doc, &buff[2], &node_list); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNodeList_get_length( node_list, &len ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok( len == 6, "len %ld\n", len ); IXMLDOMNodeList_Release( node_list ); /* test for element */ - r = IXMLDOMDocument_get_documentElement(doc, &elem); - ok( r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMDocument_get_documentElement(doc, &elem); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - str = SysAllocString( szstar ); + str = SysAllocString( L"*" ); /* null arguments cases */ - r = IXMLDOMElement_getElementsByTagName(elem, NULL, &node_list); - ok( r == E_INVALIDARG, "ret %08x\n", r ); - r = IXMLDOMElement_getElementsByTagName(elem, str, NULL); - ok( r == E_INVALIDARG, "ret %08x\n", r ); + hr = IXMLDOMElement_getElementsByTagName(elem, NULL, &node_list); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMElement_getElementsByTagName(elem, str, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMElement_getElementsByTagName(elem, str, &node_list); - ok( r == S_OK, "ret %08x\n", r ); - r = IXMLDOMNodeList_get_length( node_list, &len ); - ok( r == S_OK, "ret %08x\n", r ); - ok( len == 5, "len %d\n", len ); + hr = IXMLDOMElement_getElementsByTagName(elem, str, &node_list); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNodeList_get_length( node_list, &len ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok( len == 5, "len %ld\n", len ); expect_list_and_release(node_list, "E1.E2.D1 E2.E2.D1 E3.E2.D1 E4.E2.D1 E1.E4.E2.D1"); SysFreeString( str ); /* broken query BSTR */ - memcpy(&buff[2], szstar, sizeof(szstar)); + memcpy(&buff[2], L"*", 2 * sizeof(WCHAR)); /* just a big length */ *(DWORD*)buff = 0xf0f0; - r = IXMLDOMElement_getElementsByTagName(elem, &buff[2], &node_list); - ok( r == S_OK, "ret %08x\n", r ); - r = IXMLDOMNodeList_get_length( node_list, &len ); - ok( r == S_OK, "ret %08x\n", r ); - ok( len == 5, "len %d\n", len ); + hr = IXMLDOMElement_getElementsByTagName(elem, &buff[2], &node_list); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNodeList_get_length( node_list, &len ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok( len == 5, "len %ld\n", len ); IXMLDOMNodeList_Release( node_list ); IXMLDOMElement_Release(elem); @@ -3441,7 +3490,6 @@ static void test_getElementsByTagName(void) static void test_get_text(void) { - HRESULT r; BSTR str; VARIANT_BOOL b; IXMLDOMDocument *doc; @@ -3449,76 +3497,77 @@ static void test_get_text(void) IXMLDOMNode *nodeRoot; IXMLDOMNodeList *node_list; IXMLDOMNamedNodeMap *node_map; + HRESULT hr; LONG len; doc = create_document(&IID_IXMLDOMDocument); - r = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b ); - ok( r == S_OK, "loadXML failed\n"); + hr = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b ); + ok(hr == S_OK, "loadXML failed\n"); ok( b == VARIANT_TRUE, "failed to load XML string\n"); - str = SysAllocString( szbs ); - r = IXMLDOMDocument_getElementsByTagName( doc, str, &node_list ); - ok( r == S_OK, "ret %08x\n", r ); + str = SysAllocString( L"bs" ); + hr = IXMLDOMDocument_getElementsByTagName( doc, str, &node_list ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); SysFreeString(str); /* Test to get all child node text. */ - r = IXMLDOMDocument_QueryInterface(doc, &IID_IXMLDOMNode, (void**)&nodeRoot); - ok( r == S_OK, "ret %08x\n", r ); - if(r == S_OK) + hr = IXMLDOMDocument_QueryInterface(doc, &IID_IXMLDOMNode, (void**)&nodeRoot); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + if (hr == S_OK) { - r = IXMLDOMNode_get_text( nodeRoot, &str ); - ok( r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMNode_get_text( nodeRoot, &str ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); expect_bstr_eq_and_free(str, "fn1.txt\n \nfn2.txt\n \nf1"); IXMLDOMNode_Release(nodeRoot); } - r = IXMLDOMNodeList_get_length( node_list, NULL ); - ok( r == E_INVALIDARG, "ret %08x\n", r ); + hr = IXMLDOMNodeList_get_length( node_list, NULL ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNodeList_get_length( node_list, &len ); - ok( r == S_OK, "ret %08x\n", r ); - ok( len == 1, "expect 1 got %d\n", len ); + hr = IXMLDOMNodeList_get_length( node_list, &len ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok( len == 1, "expect 1 got %ld\n", len ); - r = IXMLDOMNodeList_get_item( node_list, 0, NULL ); - ok( r == E_INVALIDARG, "ret %08x\n", r ); + hr = IXMLDOMNodeList_get_item( node_list, 0, NULL ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNodeList_nextNode( node_list, NULL ); - ok( r == E_INVALIDARG, "ret %08x\n", r ); + hr = IXMLDOMNodeList_nextNode( node_list, NULL ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNodeList_get_item( node_list, 0, &node ); - ok( r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMNodeList_get_item( node_list, 0, &node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNodeList_Release( node_list ); /* Invalid output parameter*/ - r = IXMLDOMNode_get_text( node, NULL ); - ok( r == E_INVALIDARG, "ret %08x\n", r ); + hr = IXMLDOMNode_get_text( node, NULL ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNode_get_text( node, &str ); - ok( r == S_OK, "ret %08x\n", r ); - ok( !memcmp(str, szfn1_txt, lstrlenW(szfn1_txt) ), "wrong string\n" ); + hr = IXMLDOMNode_get_text( node, &str ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok( !lstrcmpW(str, L"fn1.txt"), "wrong string\n" ); SysFreeString(str); - r = IXMLDOMNode_get_attributes( node, &node_map ); - ok( r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMNode_get_attributes( node, &node_map ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - str = SysAllocString( szvr ); - r = IXMLDOMNamedNodeMap_getNamedItem( node_map, str, &node2 ); - ok( r == S_OK, "ret %08x\n", r ); + str = SysAllocString( L"vr" ); + hr = IXMLDOMNamedNodeMap_getNamedItem( node_map, str, &node2 ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); SysFreeString(str); - r = IXMLDOMNode_get_text( node2, &str ); - ok( r == S_OK, "ret %08x\n", r ); - ok( !memcmp(str, szstr2, sizeof(szstr2)), "wrong string\n" ); + hr = IXMLDOMNode_get_text( node2, &str ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok( !lstrcmpW(str, L"str2"), "Unexpected string.\n" ); SysFreeString(str); - r = IXMLDOMNode_get_firstChild( node2, &node3 ); - ok( r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMNode_get_firstChild( node2, &node3 ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNode_get_text( node3, &str ); - ok( r == S_OK, "ret %08x\n", r ); - ok( !memcmp(str, szstr2, sizeof(szstr2)), "wrong string\n" ); + hr = IXMLDOMNode_get_text( node3, &str ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok( !lstrcmpW(str, L"str2"), "Unexpected string.\n" ); SysFreeString(str); @@ -3531,32 +3580,6 @@ static void test_get_text(void) free_bstrs(); } -#ifdef __REACTOS__ -/* - * This function is to display that xmlnodelist_QueryInterface - * generates SEGV for these conditions, and once fixed make sure - * it never does it again. - */ -static void verify_nodelist_query_interface(IXMLDOMNodeList *node_list) -{ - HRESULT hr; - /* - * NOTE: The following calls are supposed to test wine's - * xmlnodelist_QueryInterface behaving properly. - * While we should be able to expect E_POINTER (due to the NULL pointer), - * it seems MS' own implementation(s) violate the spec and return - * E_INVALIDARG. To not get cought be a potentially correct implementation - * in the future, we check for NOT S_OK. - */ - hr = IXMLDOMNodeList_QueryInterface(node_list, &IID_IUnknown, NULL); - EXPECT_NOT_HR(hr, S_OK); - hr = IXMLDOMNodeList_QueryInterface(node_list, &IID_IDispatch, NULL); - EXPECT_NOT_HR(hr, S_OK); - hr = IXMLDOMNodeList_QueryInterface(node_list, &IID_IXMLDOMNodeList, NULL); - EXPECT_NOT_HR(hr, S_OK); -} -#endif - static void test_get_childNodes(void) { IXMLDOMNodeList *node_list, *node_list2; @@ -3566,49 +3589,46 @@ static void test_get_childNodes(void) IXMLDOMNode *node, *node2; IXMLDOMElement *element; IUnknown *unk1, *unk2; + ULONG fetched; + VARIANT v[2]; HRESULT hr; - VARIANT v; BSTR str; LONG len; doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b ); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( b == VARIANT_TRUE, "failed to load XML string\n"); hr = IXMLDOMDocument_get_documentElement( doc, &element ); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_get_childNodes( element, &node_list ); - EXPECT_HR(hr, S_OK); - -#ifdef __REACTOS__ - verify_nodelist_query_interface(node_list); -#endif + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNodeList_get_length( node_list, &len ); - EXPECT_HR(hr, S_OK); - ok( len == 4, "len %d\n", len); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok( len == 4, "len %ld\n", len); /* refcount tests for IEnumVARIANT support */ EXPECT_REF(node_list, 1); hr = IXMLDOMNodeList_QueryInterface(node_list, &IID_IEnumVARIANT, (void**)&enum1); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(node_list, 1); EXPECT_REF(enum1, 2); EXPECT_REF(node_list, 1); hr = IXMLDOMNodeList_QueryInterface(node_list, &IID_IEnumVARIANT, (void**)&enum2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(node_list, 1); ok(enum2 == enum1, "got %p, %p\n", enum2, enum1); IEnumVARIANT_Release(enum2); hr = IXMLDOMNodeList_QueryInterface(node_list, &IID_IUnknown, (void**)&unk1); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IEnumVARIANT_QueryInterface(enum1, &IID_IUnknown, (void**)&unk2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(node_list, 3); EXPECT_REF(enum1, 2); ok(unk1 == unk2, "got %p, %p\n", unk1, unk2); @@ -3617,16 +3637,16 @@ static void test_get_childNodes(void) EXPECT_REF(node_list, 1); hr = IXMLDOMNodeList__newEnum(node_list, (IUnknown**)&enum2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(node_list, 2); EXPECT_REF(enum2, 1); ok(enum2 != enum1, "got %p, %p\n", enum2, enum1); /* enumerator created with _newEnum() doesn't share IUnknown* with main object */ hr = IXMLDOMNodeList_QueryInterface(node_list, &IID_IUnknown, (void**)&unk1); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IEnumVARIANT_QueryInterface(enum2, &IID_IUnknown, (void**)&unk2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(node_list, 3); EXPECT_REF(enum2, 2); ok(unk1 != unk2, "got %p, %p\n", unk1, unk2); @@ -3634,63 +3654,102 @@ static void test_get_childNodes(void) IUnknown_Release(unk2); hr = IXMLDOMNodeList__newEnum(node_list, (IUnknown**)&enum3); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(enum2 != enum3, "got %p, %p\n", enum2, enum3); IEnumVARIANT_Release(enum3); IEnumVARIANT_Release(enum2); /* iteration tests */ hr = IXMLDOMNodeList_get_item(node_list, 0, &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_nodeName(node, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(str, _bstr_("bs")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"bs"), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); IXMLDOMNode_Release(node); hr = IXMLDOMNodeList_nextNode(node_list, &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_nodeName(node, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(str, _bstr_("bs")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"bs"), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); IXMLDOMNode_Release(node); - V_VT(&v) = VT_EMPTY; - hr = IEnumVARIANT_Next(enum1, 1, &v, NULL); - EXPECT_HR(hr, S_OK); - ok(V_VT(&v) == VT_DISPATCH, "got var type %d\n", V_VT(&v)); - hr = IDispatch_QueryInterface(V_DISPATCH(&v), &IID_IXMLDOMNode, (void**)&node); - EXPECT_HR(hr, S_OK); + V_VT(&v[0]) = VT_EMPTY; + hr = IEnumVARIANT_Next(enum1, 1, &v[0], NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(V_VT(&v[0]) == VT_DISPATCH, "got var type %d\n", V_VT(&v[0])); + hr = IDispatch_QueryInterface(V_DISPATCH(&v[0]), &IID_IXMLDOMNode, (void**)&node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_nodeName(node, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(str, _bstr_("bs")), "got node name %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"bs"), "got node name %s\n", wine_dbgstr_w(str)); SysFreeString(str); IXMLDOMNode_Release(node); - VariantClear(&v); + VariantClear(&v[0]); + + V_VT(&v[1]) = VT_EMPTY; + V_VT(&v[0]) = VT_EMPTY; + hr = IEnumVARIANT_Next(enum1, 2, v, &fetched); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(V_VT(&v[0]) == VT_DISPATCH, "got var type %d\n", V_VT(&v[0])); + ok(V_VT(&v[1]) == VT_DISPATCH, "got var type %d\n", V_VT(&v[1])); + ok(fetched == 2, "got %ld, expected 2\n", fetched); + hr = IDispatch_QueryInterface(V_DISPATCH(&v[0]), &IID_IXMLDOMNode, (void**)&node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNode_get_nodeName(node, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"pr"), "got node name %s\n", wine_dbgstr_w(str)); + SysFreeString(str); + IXMLDOMNode_Release(node); + hr = IDispatch_QueryInterface(V_DISPATCH(&v[1]), &IID_IXMLDOMNode, (void**)&node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNode_get_nodeName(node, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"empty"), "got node name %s\n", wine_dbgstr_w(str)); + SysFreeString(str); + IXMLDOMNode_Release(node); + VariantClear(&v[1]); + VariantClear(&v[0]); + + V_VT(&v[1]) = VT_NULL; + V_VT(&v[0]) = VT_EMPTY; + hr = IEnumVARIANT_Next(enum1, 2, v, &fetched); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + ok(V_VT(&v[0]) == VT_DISPATCH, "got var type %d\n", V_VT(&v[0])); + ok(V_VT(&v[1]) == VT_EMPTY, "got var type %d\n", V_VT(&v[1])); + ok(fetched == 1, "got %ld, expected 1\n", fetched); + hr = IDispatch_QueryInterface(V_DISPATCH(&v[0]), &IID_IXMLDOMNode, (void**)&node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNode_get_nodeName(node, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"fo"), "got node name %s\n", wine_dbgstr_w(str)); + SysFreeString(str); + VariantClear(&v[0]); hr = IXMLDOMNodeList_nextNode(node_list, &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_nodeName(node, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(str, _bstr_("pr")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"pr"), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); IXMLDOMNode_Release(node); IEnumVARIANT_Release(enum1); hr = IXMLDOMNodeList_get_item( node_list, 2, &node ); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_childNodes( node, &node_list2 ); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNodeList_get_length( node_list2, &len ); - EXPECT_HR(hr, S_OK); - ok( len == 0, "len %d\n", len); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok( len == 0, "len %ld\n", len); hr = IXMLDOMNodeList_get_item( node_list2, 0, &node2); - EXPECT_HR(hr, S_FALSE); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); IXMLDOMNodeList_Release( node_list2 ); IXMLDOMNode_Release( node ); @@ -3699,23 +3758,23 @@ static void test_get_childNodes(void) /* test for children of node */ hr = IXMLDOMDocument_get_firstChild(doc, &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); str = NULL; hr = IXMLDOMNode_get_nodeName(node, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(str, _bstr_("xml")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"xml"), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); /* it returns empty but valid node list */ node_list = (void*)0xdeadbeef; hr = IXMLDOMNode_get_childNodes(node, &node_list); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = -1; hr = IXMLDOMNodeList_get_length(node_list, &len); - EXPECT_HR(hr, S_OK); - ok(len == 0, "got %d\n", len); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(len == 0, "got %ld\n", len); IXMLDOMNodeList_Release( node_list ); IXMLDOMNode_Release(node); @@ -3726,26 +3785,25 @@ static void test_get_childNodes(void) static void test_get_firstChild(void) { - static const WCHAR xmlW[] = {'x','m','l',0}; IXMLDOMDocument *doc; IXMLDOMNode *node; VARIANT_BOOL b; - HRESULT r; + HRESULT hr; BSTR str; doc = create_document(&IID_IXMLDOMDocument); - r = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b ); - ok( r == S_OK, "loadXML failed\n"); + hr = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b ); + ok(hr == S_OK, "loadXML failed\n"); ok( b == VARIANT_TRUE, "failed to load XML string\n"); - r = IXMLDOMDocument_get_firstChild( doc, &node ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMDocument_get_firstChild( doc, &node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNode_get_nodeName( node, &str ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMNode_get_nodeName( node, &str ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - ok(!lstrcmpW(str, xmlW), "expected \"xml\" node name, got %s\n", wine_dbgstr_w(str)); + ok(!lstrcmpW(str, L"xml"), "expected \"xml\" node name, got %s\n", wine_dbgstr_w(str)); SysFreeString(str); IXMLDOMNode_Release( node ); @@ -3756,36 +3814,34 @@ static void test_get_firstChild(void) static void test_get_lastChild(void) { - static const WCHAR lcW[] = {'l','c',0}; - static const WCHAR foW[] = {'f','o',0}; IXMLDOMDocument *doc; IXMLDOMNode *node, *child; VARIANT_BOOL b; - HRESULT r; + HRESULT hr; BSTR str; doc = create_document(&IID_IXMLDOMDocument); - r = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b ); - ok( r == S_OK, "loadXML failed\n"); + hr = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b ); + ok(hr == S_OK, "loadXML failed\n"); ok( b == VARIANT_TRUE, "failed to load XML string\n"); - r = IXMLDOMDocument_get_lastChild( doc, &node ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMDocument_get_lastChild( doc, &node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNode_get_nodeName( node, &str ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMNode_get_nodeName( node, &str ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - ok(memcmp(str, lcW, sizeof(lcW)) == 0, "expected \"lc\" node name\n"); + ok(!lstrcmpW(str, L"lc"), "Unexpected node name.\n"); SysFreeString(str); - r = IXMLDOMNode_get_lastChild( node, &child ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMNode_get_lastChild( node, &child ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNode_get_nodeName( child, &str ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMNode_get_nodeName( child, &str ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - ok(memcmp(str, foW, sizeof(foW)) == 0, "expected \"fo\" node name\n"); + ok(!lstrcmpW(str, L"fo"), "Unexpected node name.\n"); SysFreeString(str); IXMLDOMNode_Release( child ); @@ -3797,93 +3853,93 @@ static void test_get_lastChild(void) static void test_removeChild(void) { - HRESULT r; VARIANT_BOOL b; IXMLDOMDocument *doc; IXMLDOMElement *element, *lc_element; IXMLDOMNode *fo_node, *ba_node, *removed_node, *temp_node, *lc_node; IXMLDOMNodeList *root_list, *fo_list; + HRESULT hr; doc = create_document(&IID_IXMLDOMDocument); - r = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b ); - ok( r == S_OK, "loadXML failed\n"); + hr = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b ); + ok(hr == S_OK, "loadXML failed\n"); ok( b == VARIANT_TRUE, "failed to load XML string\n"); - r = IXMLDOMDocument_get_documentElement( doc, &element ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMDocument_get_documentElement( doc, &element ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine EXPECT_REF(element, 2); - r = IXMLDOMElement_get_childNodes( element, &root_list ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMElement_get_childNodes( element, &root_list ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(root_list, 1); - r = IXMLDOMNodeList_get_item( root_list, 3, &fo_node ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMNodeList_get_item( root_list, 3, &fo_node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(fo_node, 1); - r = IXMLDOMNode_get_childNodes( fo_node, &fo_list ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMNode_get_childNodes( fo_node, &fo_list ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(fo_list, 1); - r = IXMLDOMNodeList_get_item( fo_list, 0, &ba_node ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMNodeList_get_item( fo_list, 0, &ba_node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(ba_node, 1); /* invalid parameter: NULL ptr */ removed_node = (void*)0xdeadbeef; - r = IXMLDOMElement_removeChild( element, NULL, &removed_node ); - ok( r == E_INVALIDARG, "ret %08x\n", r ); + hr = IXMLDOMElement_removeChild( element, NULL, &removed_node ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok( removed_node == (void*)0xdeadbeef, "%p\n", removed_node ); /* ba_node is a descendant of element, but not a direct child. */ removed_node = (void*)0xdeadbeef; EXPECT_REF(ba_node, 1); EXPECT_CHILDREN(fo_node); - r = IXMLDOMElement_removeChild( element, ba_node, &removed_node ); - ok( r == E_INVALIDARG, "ret %08x\n", r ); + hr = IXMLDOMElement_removeChild( element, ba_node, &removed_node ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok( removed_node == NULL, "%p\n", removed_node ); EXPECT_REF(ba_node, 1); EXPECT_CHILDREN(fo_node); EXPECT_REF(ba_node, 1); EXPECT_REF(fo_node, 1); - r = IXMLDOMElement_removeChild( element, fo_node, &removed_node ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMElement_removeChild( element, fo_node, &removed_node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( fo_node == removed_node, "node %p node2 %p\n", fo_node, removed_node ); EXPECT_REF(fo_node, 2); EXPECT_REF(ba_node, 1); /* try removing already removed child */ temp_node = (void*)0xdeadbeef; - r = IXMLDOMElement_removeChild( element, fo_node, &temp_node ); - ok( r == E_INVALIDARG, "ret %08x\n", r); + hr = IXMLDOMElement_removeChild( element, fo_node, &temp_node ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok( temp_node == NULL, "%p\n", temp_node ); IXMLDOMNode_Release( fo_node ); /* the removed node has no parent anymore */ - r = IXMLDOMNode_get_parentNode( removed_node, &temp_node ); - ok( r == S_FALSE, "ret %08x\n", r); + hr = IXMLDOMNode_get_parentNode( removed_node, &temp_node ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok( temp_node == NULL, "%p\n", temp_node ); IXMLDOMNode_Release( removed_node ); IXMLDOMNode_Release( ba_node ); IXMLDOMNodeList_Release( fo_list ); - r = IXMLDOMNodeList_get_item( root_list, 0, &lc_node ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMNodeList_get_item( root_list, 0, &lc_node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNode_QueryInterface( lc_node, &IID_IXMLDOMElement, (void**)&lc_element ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMNode_QueryInterface( lc_node, &IID_IXMLDOMElement, (void**)&lc_element ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* MS quirk: passing wrong interface pointer works, too */ - r = IXMLDOMElement_removeChild( element, (IXMLDOMNode*)lc_element, NULL ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMElement_removeChild( element, (IXMLDOMNode*)lc_element, NULL ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMElement_Release( lc_element ); temp_node = (void*)0xdeadbeef; - r = IXMLDOMNode_get_parentNode( lc_node, &temp_node ); - ok( r == S_FALSE, "ret %08x\n", r); + hr = IXMLDOMNode_get_parentNode( lc_node, &temp_node ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok( temp_node == NULL, "%p\n", temp_node ); IXMLDOMNode_Release( lc_node ); @@ -3896,103 +3952,103 @@ static void test_removeChild(void) static void test_replaceChild(void) { - HRESULT r; VARIANT_BOOL b; IXMLDOMDocument *doc; IXMLDOMElement *element, *ba_element; IXMLDOMNode *fo_node, *ba_node, *lc_node, *removed_node, *temp_node; IXMLDOMNodeList *root_list, *fo_list; IUnknown * unk1, *unk2; + HRESULT hr; LONG len; doc = create_document(&IID_IXMLDOMDocument); - r = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b ); - ok( r == S_OK, "loadXML failed\n"); + hr = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b ); + ok(hr == S_OK, "loadXML failed\n"); ok( b == VARIANT_TRUE, "failed to load XML string\n"); - r = IXMLDOMDocument_get_documentElement( doc, &element ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMDocument_get_documentElement( doc, &element ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMElement_get_childNodes( element, &root_list ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMElement_get_childNodes( element, &root_list ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNodeList_get_item( root_list, 0, &lc_node ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMNodeList_get_item( root_list, 0, &lc_node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNodeList_get_item( root_list, 3, &fo_node ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMNodeList_get_item( root_list, 3, &fo_node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNode_get_childNodes( fo_node, &fo_list ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMNode_get_childNodes( fo_node, &fo_list ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNodeList_get_item( fo_list, 0, &ba_node ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMNodeList_get_item( fo_list, 0, &ba_node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNodeList_Release( fo_list ); /* invalid parameter: NULL ptr for element to remove */ removed_node = (void*)0xdeadbeef; - r = IXMLDOMElement_replaceChild( element, ba_node, NULL, &removed_node ); - ok( r == E_INVALIDARG, "ret %08x\n", r ); + hr = IXMLDOMElement_replaceChild( element, ba_node, NULL, &removed_node ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok( removed_node == (void*)0xdeadbeef, "%p\n", removed_node ); /* invalid parameter: NULL for replacement element. (Sic!) */ removed_node = (void*)0xdeadbeef; - r = IXMLDOMElement_replaceChild( element, NULL, fo_node, &removed_node ); - ok( r == E_INVALIDARG, "ret %08x\n", r ); + hr = IXMLDOMElement_replaceChild( element, NULL, fo_node, &removed_node ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok( removed_node == (void*)0xdeadbeef, "%p\n", removed_node ); /* invalid parameter: OldNode is not a child */ removed_node = (void*)0xdeadbeef; - r = IXMLDOMElement_replaceChild( element, lc_node, ba_node, &removed_node ); - ok( r == E_INVALIDARG, "ret %08x\n", r ); + hr = IXMLDOMElement_replaceChild( element, lc_node, ba_node, &removed_node ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok( removed_node == NULL, "%p\n", removed_node ); IXMLDOMNode_Release( lc_node ); /* invalid parameter: would create loop */ removed_node = (void*)0xdeadbeef; - r = IXMLDOMNode_replaceChild( fo_node, fo_node, ba_node, &removed_node ); - ok( r == E_FAIL, "ret %08x\n", r ); + hr = IXMLDOMNode_replaceChild( fo_node, fo_node, ba_node, &removed_node ); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok( removed_node == NULL, "%p\n", removed_node ); - r = IXMLDOMElement_replaceChild( element, ba_node, fo_node, NULL ); - ok( r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMElement_replaceChild( element, ba_node, fo_node, NULL ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNodeList_get_item( root_list, 3, &temp_node ); - ok( r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMNodeList_get_item( root_list, 3, &temp_node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* ba_node and temp_node refer to the same node, yet they are different interface pointers */ ok( ba_node != temp_node, "ba_node %p temp_node %p\n", ba_node, temp_node); - r = IXMLDOMNode_QueryInterface( temp_node, &IID_IUnknown, (void**)&unk1); - ok( r == S_OK, "ret %08x\n", r ); - r = IXMLDOMNode_QueryInterface( ba_node, &IID_IUnknown, (void**)&unk2); - ok( r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMNode_QueryInterface( temp_node, &IID_IUnknown, (void**)&unk1); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNode_QueryInterface( ba_node, &IID_IUnknown, (void**)&unk2); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine ok( unk1 == unk2, "unk1 %p unk2 %p\n", unk1, unk2); IUnknown_Release( unk1 ); IUnknown_Release( unk2 ); /* ba_node should have been removed from below fo_node */ - r = IXMLDOMNode_get_childNodes( fo_node, &fo_list ); - ok( r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMNode_get_childNodes( fo_node, &fo_list ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* MS quirk: replaceChild also accepts elements instead of nodes */ - r = IXMLDOMNode_QueryInterface( ba_node, &IID_IXMLDOMElement, (void**)&ba_element); - ok( r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMNode_QueryInterface( ba_node, &IID_IXMLDOMElement, (void**)&ba_element); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(ba_element, 2); removed_node = NULL; - r = IXMLDOMElement_replaceChild( element, ba_node, (IXMLDOMNode*)ba_element, &removed_node ); - ok( r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMElement_replaceChild( element, ba_node, (IXMLDOMNode*)ba_element, &removed_node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( removed_node != NULL, "got %p\n", removed_node); EXPECT_REF(ba_element, 3); IXMLDOMElement_Release( ba_element ); - r = IXMLDOMNodeList_get_length( fo_list, &len); - ok( r == S_OK, "ret %08x\n", r ); - ok( len == 0, "len %d\n", len); + hr = IXMLDOMNodeList_get_length( fo_list, &len); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(len == 0, "len %ld\n", len); IXMLDOMNodeList_Release( fo_list ); @@ -4010,81 +4066,122 @@ static void test_removeNamedItem(void) { IXMLDOMDocument *doc; IXMLDOMElement *element; - IXMLDOMNode *pr_node, *removed_node, *removed_node2; + IXMLDOMNode *node, *removed_node, *removed_node2; IXMLDOMNodeList *root_list; - IXMLDOMNamedNodeMap * pr_attrs; + IXMLDOMNamedNodeMap *map; VARIANT_BOOL b; + HRESULT hr; BSTR str; LONG len; - HRESULT r; doc = create_document(&IID_IXMLDOMDocument); - r = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b ); - ok( r == S_OK, "loadXML failed\n"); + hr = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b ); + ok(hr == S_OK, "loadXML failed\n"); ok( b == VARIANT_TRUE, "failed to load XML string\n"); - r = IXMLDOMDocument_get_documentElement( doc, &element ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMDocument_get_documentElement( doc, &element ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMElement_get_childNodes( element, &root_list ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMElement_get_childNodes( element, &root_list ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNodeList_get_item( root_list, 1, &pr_node ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMNodeList_get_item( root_list, 1, &node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNode_get_attributes( pr_node, &pr_attrs ); - ok( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMNode_get_attributes( node, &map ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNamedNodeMap_get_length( pr_attrs, &len ); - ok( r == S_OK, "ret %08x\n", r); - ok( len == 3, "length %d\n", len); + hr = IXMLDOMNamedNodeMap_get_length( map, &len ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok( len == 3, "length %ld\n", len); removed_node = (void*)0xdeadbeef; - r = IXMLDOMNamedNodeMap_removeNamedItem( pr_attrs, NULL, &removed_node); - ok ( r == E_INVALIDARG, "ret %08x\n", r); - ok ( removed_node == (void*)0xdeadbeef, "got %p\n", removed_node); + hr = IXMLDOMNamedNodeMap_removeNamedItem( map, NULL, &removed_node ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + ok(removed_node == (void*)0xdeadbeef, "got %p\n", removed_node); removed_node = (void*)0xdeadbeef; - str = SysAllocString(szvr); - r = IXMLDOMNamedNodeMap_removeNamedItem( pr_attrs, str, &removed_node); - ok ( r == S_OK, "ret %08x\n", r); + str = SysAllocString(L"vr"); + hr = IXMLDOMNamedNodeMap_removeNamedItem( map, str, &removed_node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); removed_node2 = (void*)0xdeadbeef; - r = IXMLDOMNamedNodeMap_removeNamedItem( pr_attrs, str, &removed_node2); - ok ( r == S_FALSE, "ret %08x\n", r); - ok ( removed_node2 == NULL, "got %p\n", removed_node2 ); + hr = IXMLDOMNamedNodeMap_removeNamedItem( map, str, &removed_node2 ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + ok(removed_node2 == NULL, "got %p\n", removed_node2 ); - r = IXMLDOMNamedNodeMap_get_length( pr_attrs, &len ); - ok( r == S_OK, "ret %08x\n", r); - ok( len == 2, "length %d\n", len); + hr = IXMLDOMNamedNodeMap_get_length( map, &len ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(len == 2, "length %ld\n", len); - r = IXMLDOMNamedNodeMap_setNamedItem( pr_attrs, removed_node, NULL); - ok ( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMNamedNodeMap_setNamedItem( map, removed_node, NULL ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(removed_node); - r = IXMLDOMNamedNodeMap_get_length( pr_attrs, &len ); - ok( r == S_OK, "ret %08x\n", r); - ok( len == 3, "length %d\n", len); + hr = IXMLDOMNamedNodeMap_get_length( map, &len ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(len == 3, "length %ld\n", len); - r = IXMLDOMNamedNodeMap_removeNamedItem( pr_attrs, str, NULL); - ok ( r == S_OK, "ret %08x\n", r); + hr = IXMLDOMNamedNodeMap_removeNamedItem( map, str, NULL ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - r = IXMLDOMNamedNodeMap_get_length( pr_attrs, &len ); - ok( r == S_OK, "ret %08x\n", r); - ok( len == 2, "length %d\n", len); + hr = IXMLDOMNamedNodeMap_get_length( map, &len ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(len == 2, "length %ld\n", len); - r = IXMLDOMNamedNodeMap_removeNamedItem( pr_attrs, str, NULL); - ok ( r == S_FALSE, "ret %08x\n", r); + hr = IXMLDOMNamedNodeMap_removeNamedItem( map, str, NULL ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); SysFreeString(str); - IXMLDOMNamedNodeMap_Release( pr_attrs ); - IXMLDOMNode_Release( pr_node ); + IXMLDOMNamedNodeMap_Release( map ); + IXMLDOMNode_Release( node ); IXMLDOMNodeList_Release( root_list ); IXMLDOMElement_Release( element ); - IXMLDOMDocument_Release( doc ); + /* test with namespaces */ + hr = IXMLDOMDocument_loadXML( doc, _bstr_(default_ns_doc), &b ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMDocument_selectSingleNode( doc, _bstr_("a"), &node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMNode_QueryInterface( node, &IID_IXMLDOMElement, (void**)&element ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + IXMLDOMNode_Release( node ); + + hr = IXMLDOMElement_get_attributes( element, &map ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + removed_node = (void*)0xdeadbeef; + hr = IXMLDOMNamedNodeMap_removeNamedItem( map, _bstr_("foo:bar"), &removed_node ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + ok ( removed_node == NULL, "got %p\n", removed_node ); + + removed_node = NULL; + hr = IXMLDOMNamedNodeMap_removeNamedItem( map, _bstr_("d"), &removed_node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + IXMLDOMNode_Release( removed_node ); + + removed_node = NULL; + hr = IXMLDOMNamedNodeMap_removeNamedItem( map, _bstr_("ns:b"), &removed_node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + IXMLDOMNode_Release( removed_node ); + + removed_node = NULL; + hr = IXMLDOMNamedNodeMap_removeNamedItem( map, _bstr_("xml:lang"), &removed_node ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + IXMLDOMNode_Release( removed_node ); + + len = -1; + hr = IXMLDOMNamedNodeMap_get_length( map, &len ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok( len == 2, "length %ld\n", len ); + + IXMLDOMNamedNodeMap_Release( map ); + IXMLDOMElement_Release( element ); + IXMLDOMDocument_Release( doc ); free_bstrs(); } @@ -4098,30 +4195,30 @@ static void _test_IObjectSafety_set(unsigned line, IObjectSafety *safety, HRESUL hr = IObjectSafety_SetInterfaceSafetyOptions(safety, NULL, set, mask); if (result == result2) - ok_(__FILE__,line)(hr == result, "SetInterfaceSafetyOptions: expected %08x, returned %08x\n", result, hr ); + ok_(__FILE__,line)(hr == result, "SetInterfaceSafetyOptions: expected %#lx, returned %#lx\n", result, hr ); else ok_(__FILE__,line)(broken(hr == result) || hr == result2, - "SetInterfaceSafetyOptions: expected %08x, got %08x\n", result2, hr ); + "SetInterfaceSafetyOptions: expected %#lx, got %#lx\n", result2, hr ); supported = enabled = 0xCAFECAFE; hr = IObjectSafety_GetInterfaceSafetyOptions(safety, NULL, &supported, &enabled); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); if (expected == expected2) - ok_(__FILE__,line)(enabled == expected, "Expected %08x, got %08x\n", expected, enabled); + ok_(__FILE__,line)(enabled == expected, "Expected %#lx, got %#lx\n", expected, enabled); else ok_(__FILE__,line)(broken(enabled == expected) || enabled == expected2, - "Expected %08x, got %08x\n", expected2, enabled); + "Expected %#lx, got %#lx\n", expected2, enabled); /* reset the safety options */ hr = IObjectSafety_SetInterfaceSafetyOptions(safety, NULL, INTERFACESAFE_FOR_UNTRUSTED_CALLER|INTERFACESAFE_FOR_UNTRUSTED_DATA|INTERFACE_USES_SECURITY_MANAGER, 0); - ok_(__FILE__,line)(hr == S_OK, "ret %08x\n", hr ); + ok_(__FILE__,line)(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IObjectSafety_GetInterfaceSafetyOptions(safety, NULL, &supported, &enabled); - ok_(__FILE__,line)(hr == S_OK, "ret %08x\n", hr ); - ok_(__FILE__,line)(enabled == 0, "Expected 0, got %08x\n", enabled); + ok_(__FILE__,line)(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok_(__FILE__,line)(enabled == 0, "Expected 0, got %#lx\n", enabled); } #define test_IObjectSafety_common(s) _test_IObjectSafety_common(__LINE__,s) @@ -4132,17 +4229,17 @@ static void _test_IObjectSafety_common(unsigned line, IObjectSafety *safety) /* get */ hr = IObjectSafety_GetInterfaceSafetyOptions(safety, NULL, NULL, &enabled); - ok_(__FILE__,line)(hr == E_POINTER, "ret %08x\n", hr ); + ok_(__FILE__,line)(hr == E_POINTER, "Unexpected hr %#lx.\n", hr ); hr = IObjectSafety_GetInterfaceSafetyOptions(safety, NULL, &supported, NULL); - ok_(__FILE__,line)(hr == E_POINTER, "ret %08x\n", hr ); + ok_(__FILE__,line)(hr == E_POINTER, "Unexpected hr %#lx.\n", hr ); hr = IObjectSafety_GetInterfaceSafetyOptions(safety, NULL, &supported, &enabled); - ok_(__FILE__,line)(hr == S_OK, "ret %08x\n", hr ); + ok_(__FILE__,line)(hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok_(__FILE__,line)(broken(supported == (INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA)) || supported == (INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA | INTERFACE_USES_SECURITY_MANAGER) /* msxml3 SP8+ */, "Expected (INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA | INTERFACE_USES_SECURITY_MANAGER), " - "got %08x\n", supported); - ok_(__FILE__,line)(enabled == 0, "Expected 0, got %08x\n", enabled); + "got %#lx\n", supported); + ok_(__FILE__,line)(enabled == 0, "Expected 0, got %#lx\n", enabled); /* set -- individual flags */ @@ -4197,40 +4294,39 @@ static void _test_IObjectSafety_common(unsigned line, IObjectSafety *safety) hr = IObjectSafety_SetInterfaceSafetyOptions(safety, NULL, INTERFACESAFE_FOR_UNTRUSTED_CALLER, INTERFACESAFE_FOR_UNTRUSTED_CALLER); - ok_(__FILE__,line)(hr == S_OK, "ret %08x\n", hr ); + ok_(__FILE__,line)(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IObjectSafety_GetInterfaceSafetyOptions(safety, NULL, &supported, &enabled); - ok_(__FILE__,line)(hr == S_OK, "ret %08x\n", hr ); - ok_(__FILE__,line)(enabled == INTERFACESAFE_FOR_UNTRUSTED_CALLER, "Expected INTERFACESAFE_FOR_UNTRUSTED_CALLER got %08x\n", enabled); + ok_(__FILE__,line)(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok_(__FILE__,line)(enabled == INTERFACESAFE_FOR_UNTRUSTED_CALLER, "Expected INTERFACESAFE_FOR_UNTRUSTED_CALLER got %#lx\n", enabled); ok_(__FILE__,line)(broken(supported == (INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA)) || supported == (INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA | INTERFACE_USES_SECURITY_MANAGER) /* msxml3 SP8+ */, "Expected (INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA | INTERFACE_USES_SECURITY_MANAGER), " - "got %08x\n", supported); + "got %#lx.\n", supported); hr = IObjectSafety_SetInterfaceSafetyOptions(safety, NULL, INTERFACESAFE_FOR_UNTRUSTED_DATA, INTERFACESAFE_FOR_UNTRUSTED_DATA); - ok_(__FILE__,line)(hr == S_OK, "ret %08x\n", hr ); + ok_(__FILE__,line)(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IObjectSafety_GetInterfaceSafetyOptions(safety, NULL, &supported, &enabled); - ok_(__FILE__,line)(hr == S_OK, "ret %08x\n", hr ); + ok_(__FILE__,line)(hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok_(__FILE__,line)(broken(enabled == INTERFACESAFE_FOR_UNTRUSTED_DATA) || enabled == (INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA), - "Expected (INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA) got %08x\n", enabled); + "Expected (INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA) got %#lx\n", enabled); ok_(__FILE__,line)(broken(supported == (INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA)) || supported == (INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA | INTERFACE_USES_SECURITY_MANAGER) /* msxml3 SP8+ */, "Expected (INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA | INTERFACE_USES_SECURITY_MANAGER), " - "got %08x\n", supported); + "got %#lx\n", supported); } static void test_IXMLDOMDocument2(void) { - static const WCHAR emptyW[] = {0}; IXMLDOMDocument2 *doc2, *dtddoc2; IXMLDOMDocument *doc; IXMLDOMParseError* err; IDispatchEx *dispex; VARIANT_BOOL b; VARIANT var; - HRESULT r; + HRESULT hr; LONG res; if (!is_clsid_supported(&CLSID_DOMDocument2, &IID_IXMLDOMDocument2)) return; @@ -4238,52 +4334,58 @@ static void test_IXMLDOMDocument2(void) doc = create_document(&IID_IXMLDOMDocument); dtddoc2 = create_document(&IID_IXMLDOMDocument2); - r = IXMLDOMDocument_QueryInterface( doc, &IID_IXMLDOMDocument2, (void**)&doc2 ); - ok( r == S_OK, "ret %08x\n", r ); + hr = IXMLDOMDocument_QueryInterface( doc, &IID_IXMLDOMDocument2, (void**)&doc2 ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( doc == (IXMLDOMDocument*)doc2, "interfaces differ\n"); - ole_expect(IXMLDOMDocument2_get_readyState(doc2, NULL), E_INVALIDARG); - ole_check(IXMLDOMDocument2_get_readyState(doc2, &res)); - ok(res == READYSTATE_COMPLETE, "expected READYSTATE_COMPLETE (4), got %i\n", res); + hr = IXMLDOMDocument2_get_readyState(doc2, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument2_get_readyState(doc2, &res); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(res == READYSTATE_COMPLETE, "expected READYSTATE_COMPLETE (4), got %ld\n", res); err = NULL; - ole_expect(IXMLDOMDocument2_validate(doc2, NULL), S_FALSE); - ole_expect(IXMLDOMDocument2_validate(doc2, &err), S_FALSE); + hr = IXMLDOMDocument2_validate(doc2, NULL); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument2_validate(doc2, &err); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(err != NULL, "expected a pointer\n"); if (err) { res = 0; - ole_check(IXMLDOMParseError_get_errorCode(err, &res)); + hr = IXMLDOMParseError_get_errorCode(err, &res); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* XML_E_NOTWF */ - ok(res == E_XML_NOTWF, "got %08x\n", res); + ok(res == E_XML_NOTWF, "Unexpected code %#lx.\n", res); IXMLDOMParseError_Release(err); } - r = IXMLDOMDocument2_loadXML( doc2, _bstr_(complete4A), &b ); - ok( r == S_OK, "loadXML failed\n"); + hr = IXMLDOMDocument2_loadXML( doc2, _bstr_(complete4A), &b ); + ok(hr == S_OK, "loadXML failed\n"); ok( b == VARIANT_TRUE, "failed to load XML string\n"); - ole_check(IXMLDOMDocument_get_readyState(doc, &res)); - ok(res == READYSTATE_COMPLETE, "expected READYSTATE_COMPLETE (4), got %i\n", res); + hr = IXMLDOMDocument_get_readyState(doc, &res); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(res == READYSTATE_COMPLETE, "expected READYSTATE_COMPLETE (4), got %ld\n", res); err = NULL; - ole_expect(IXMLDOMDocument2_validate(doc2, &err), S_FALSE); + hr = IXMLDOMDocument2_validate(doc2, &err); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(err != NULL, "expected a pointer\n"); if (err) { res = 0; - ole_check(IXMLDOMParseError_get_errorCode(err, &res)); + hr = IXMLDOMParseError_get_errorCode(err, &res); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* XML_E_NODTD */ - ok(res == E_XML_NODTD, "got %08x\n", res); + ok(res == E_XML_NODTD, "Unexpected code %#lx.\n", res); IXMLDOMParseError_Release(err); } - r = IXMLDOMDocument_QueryInterface( doc, &IID_IDispatchEx, (void**)&dispex ); - ok( r == S_OK, "ret %08x\n", r ); - if(r == S_OK) - { + hr = IXMLDOMDocument_QueryInterface( doc, &IID_IDispatchEx, (void**)&dispex ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + if(hr == S_OK) IDispatchEx_Release(dispex); - } /* we will check if the variant got cleared */ IXMLDOMDocument2_AddRef(doc2); @@ -4293,12 +4395,15 @@ static void test_IXMLDOMDocument2(void) V_UNKNOWN(&var) = (IUnknown *)doc2; /* invalid calls */ - ole_expect(IXMLDOMDocument2_getProperty(doc2, _bstr_("askldhfaklsdf"), &var), E_FAIL); + hr = IXMLDOMDocument2_getProperty(doc2, _bstr_("askldhfaklsdf"), &var); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); expect_eq(V_VT(&var), VT_UNKNOWN, int, "%x"); - ole_expect(IXMLDOMDocument2_getProperty(doc2, _bstr_("SelectionLanguage"), NULL), E_INVALIDARG); + hr = IXMLDOMDocument2_getProperty(doc2, _bstr_("SelectionLanguage"), NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); /* valid call */ - ole_check(IXMLDOMDocument2_getProperty(doc2, _bstr_("SelectionLanguage"), &var)); + hr = IXMLDOMDocument2_getProperty(doc2, _bstr_("SelectionLanguage"), &var); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); expect_eq(V_VT(&var), VT_BSTR, int, "%x"); expect_bstr_eq_and_free(V_BSTR(&var), "XSLPattern"); V_VT(&var) = VT_R4; @@ -4307,26 +4412,33 @@ static void test_IXMLDOMDocument2(void) expect_eq(IXMLDOMDocument2_Release(doc2), 2, int, "%d"); /* setProperty tests */ - ole_expect(IXMLDOMDocument2_setProperty(doc2, _bstr_("askldhfaklsdf"), var), E_FAIL); - ole_expect(IXMLDOMDocument2_setProperty(doc2, _bstr_("SelectionLanguage"), var), E_FAIL); - ole_expect(IXMLDOMDocument2_setProperty(doc2, _bstr_("SelectionLanguage"), _variantbstr_("alskjdh faklsjd hfk")), E_FAIL); - ole_check(IXMLDOMDocument2_setProperty(doc2, _bstr_("SelectionLanguage"), _variantbstr_("XSLPattern"))); - ole_check(IXMLDOMDocument2_setProperty(doc2, _bstr_("SelectionLanguage"), _variantbstr_("XPath"))); - ole_check(IXMLDOMDocument2_setProperty(doc2, _bstr_("SelectionLanguage"), _variantbstr_("XSLPattern"))); + hr = IXMLDOMDocument2_setProperty(doc2, _bstr_("askldhfaklsdf"), var); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument2_setProperty(doc2, _bstr_("SelectionLanguage"), var); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument2_setProperty(doc2, _bstr_("SelectionLanguage"), _variantbstr_("alskjdh faklsjd hfk")); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument2_setProperty(doc2, _bstr_("SelectionLanguage"), _variantbstr_("XSLPattern")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument2_setProperty(doc2, _bstr_("SelectionLanguage"), _variantbstr_("XPath")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument2_setProperty(doc2, _bstr_("SelectionLanguage"), _variantbstr_("XSLPattern")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&var) = VT_BSTR; - V_BSTR(&var) = SysAllocString(emptyW); - r = IXMLDOMDocument2_setProperty(doc2, _bstr_("SelectionNamespaces"), var); - ok(r == S_OK, "got 0x%08x\n", r); + V_BSTR(&var) = SysAllocString(L""); + hr = IXMLDOMDocument2_setProperty(doc2, _bstr_("SelectionNamespaces"), var); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); VariantClear(&var); V_VT(&var) = VT_I2; V_I2(&var) = 0; - r = IXMLDOMDocument2_setProperty(doc2, _bstr_("SelectionNamespaces"), var); - ok(r == E_FAIL, "got 0x%08x\n", r); + hr = IXMLDOMDocument2_setProperty(doc2, _bstr_("SelectionNamespaces"), var); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); /* contrary to what MSDN claims you can switch back from XPath to XSLPattern */ - ole_check(IXMLDOMDocument2_getProperty(doc2, _bstr_("SelectionLanguage"), &var)); + hr = IXMLDOMDocument2_getProperty(doc2, _bstr_("SelectionLanguage"), &var); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); expect_eq(V_VT(&var), VT_BSTR, int, "%x"); expect_bstr_eq_and_free(V_BSTR(&var), "XSLPattern"); @@ -4334,157 +4446,191 @@ static void test_IXMLDOMDocument2(void) IXMLDOMDocument_Release( doc ); /* DTD validation */ - ole_check(IXMLDOMDocument2_put_validateOnParse(dtddoc2, VARIANT_FALSE)); - ole_check(IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML), &b)); + hr = IXMLDOMDocument2_put_validateOnParse(dtddoc2, VARIANT_FALSE); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( b == VARIANT_TRUE, "failed to load XML string\n"); err = NULL; - ole_check(IXMLDOMDocument2_validate(dtddoc2, &err)); + hr = IXMLDOMDocument2_validate(dtddoc2, &err); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(err != NULL, "expected pointer\n"); if (err) { res = 0; - ole_expect(IXMLDOMParseError_get_errorCode(err, &res), S_FALSE); - ok(res == 0, "got %08x\n", res); + hr = IXMLDOMParseError_get_errorCode(err, &res); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + ok(res == 0, "Unexpected code %#lx.\n", res); IXMLDOMParseError_Release(err); } - ole_check(IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_0D), &b)); + hr = IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_0D), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( b == VARIANT_TRUE, "failed to load XML string\n"); err = NULL; - ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE); + hr = IXMLDOMDocument2_validate(dtddoc2, &err); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(err != NULL, "expected pointer\n"); if (err) { res = 0; - ole_check(IXMLDOMParseError_get_errorCode(err, &res)); + hr = IXMLDOMParseError_get_errorCode(err, &res); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* XML_ELEMENT_UNDECLARED */ - todo_wine ok(res == 0xC00CE00D, "got %08x\n", res); + todo_wine ok(res == 0xC00CE00D, "Unexpected code %#lx.\n", res); IXMLDOMParseError_Release(err); } - ole_check(IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_0E), &b)); + hr = IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_0E), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( b == VARIANT_TRUE, "failed to load XML string\n"); err = NULL; - ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE); + hr = IXMLDOMDocument2_validate(dtddoc2, &err); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(err != NULL, "expected pointer\n"); if (err) { res = 0; - ole_check(IXMLDOMParseError_get_errorCode(err, &res)); + hr = IXMLDOMParseError_get_errorCode(err, &res); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* XML_ELEMENT_ID_NOT_FOUND */ - todo_wine ok(res == 0xC00CE00E, "got %08x\n", res); + todo_wine ok(res == 0xC00CE00E, "Unexpected code %#lx.\n", res); IXMLDOMParseError_Release(err); } - ole_check(IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_11), &b)); + hr = IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_11), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( b == VARIANT_TRUE, "failed to load XML string\n"); err = NULL; - ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE); + hr = IXMLDOMDocument2_validate(dtddoc2, &err); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(err != NULL, "expected pointer\n"); if (err) { res = 0; - ole_check(IXMLDOMParseError_get_errorCode(err, &res)); + hr = IXMLDOMParseError_get_errorCode(err, &res); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* XML_EMPTY_NOT_ALLOWED */ - todo_wine ok(res == 0xC00CE011, "got %08x\n", res); + todo_wine ok(res == 0xC00CE011, "Unexpected code %#lx.\n", res); IXMLDOMParseError_Release(err); } - ole_check(IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_13), &b)); + hr = IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_13), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( b == VARIANT_TRUE, "failed to load XML string\n"); err = NULL; - ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE); + hr = IXMLDOMDocument2_validate(dtddoc2, &err); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(err != NULL, "expected pointer\n"); if (err) { res = 0; - ole_check(IXMLDOMParseError_get_errorCode(err, &res)); + hr = IXMLDOMParseError_get_errorCode(err, &res); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* XML_ROOT_NAME_MISMATCH */ - todo_wine ok(res == 0xC00CE013, "got %08x\n", res); + todo_wine ok(res == 0xC00CE013, "Unexpected code %#lx.\n", res); IXMLDOMParseError_Release(err); } - ole_check(IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_14), &b)); + hr = IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_14), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( b == VARIANT_TRUE, "failed to load XML string\n"); err = NULL; - ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE); + hr = IXMLDOMDocument2_validate(dtddoc2, &err); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(err != NULL, "expected pointer\n"); if (err) { res = 0; - ole_check(IXMLDOMParseError_get_errorCode(err, &res)); + hr = IXMLDOMParseError_get_errorCode(err, &res); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* XML_INVALID_CONTENT */ - todo_wine ok(res == 0xC00CE014, "got %08x\n", res); + todo_wine ok(res == 0xC00CE014, "Unexpected code %#lx.\n", res); IXMLDOMParseError_Release(err); } - ole_check(IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_15), &b)); + hr = IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_15), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( b == VARIANT_TRUE, "failed to load XML string\n"); err = NULL; - ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE); + hr = IXMLDOMDocument2_validate(dtddoc2, &err); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(err != NULL, "expected pointer\n"); if (err) { res = 0; - ole_check(IXMLDOMParseError_get_errorCode(err, &res)); + hr = IXMLDOMParseError_get_errorCode(err, &res); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* XML_ATTRIBUTE_NOT_DEFINED */ - todo_wine ok(res == 0xC00CE015, "got %08x\n", res); + todo_wine ok(res == 0xC00CE015, "Unexpected code %#lx.\n", res); IXMLDOMParseError_Release(err); } - ole_check(IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_16), &b)); + hr = IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_16), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( b == VARIANT_TRUE, "failed to load XML string\n"); err = NULL; - ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE); + hr = IXMLDOMDocument2_validate(dtddoc2, &err); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(err != NULL, "expected pointer\n"); if (err) { res = 0; - ole_check(IXMLDOMParseError_get_errorCode(err, &res)); + hr = IXMLDOMParseError_get_errorCode(err, &res); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* XML_ATTRIBUTE_FIXED */ - todo_wine ok(res == 0xC00CE016, "got %08x\n", res); + todo_wine ok(res == 0xC00CE016, "Unexpected code %#lx.\n", res); IXMLDOMParseError_Release(err); } - ole_check(IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_17), &b)); + hr = IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_17), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( b == VARIANT_TRUE, "failed to load XML string\n"); err = NULL; - ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE); + hr = IXMLDOMDocument2_validate(dtddoc2, &err); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(err != NULL, "expected pointer\n"); if (err) { res = 0; - ole_check(IXMLDOMParseError_get_errorCode(err, &res)); + hr = IXMLDOMParseError_get_errorCode(err, &res); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* XML_ATTRIBUTE_VALUE */ - todo_wine ok(res == 0xC00CE017, "got %08x\n", res); + todo_wine ok(res == 0xC00CE017, "Unexpected code %#lx.\n", res); IXMLDOMParseError_Release(err); } - ole_check(IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_18), &b)); + hr = IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_18), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( b == VARIANT_TRUE, "failed to load XML string\n"); err = NULL; - ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE); + hr = IXMLDOMDocument2_validate(dtddoc2, &err); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(err != NULL, "expected pointer\n"); if (err) { res = 0; - ole_check(IXMLDOMParseError_get_errorCode(err, &res)); + hr = IXMLDOMParseError_get_errorCode(err, &res); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* XML_ILLEGAL_TEXT */ - todo_wine ok(res == 0xC00CE018, "got %08x\n", res); + todo_wine ok(res == 0xC00CE018, "Unexpected code %#lx.\n", res); IXMLDOMParseError_Release(err); } - ole_check(IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_20), &b)); + hr = IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_20), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( b == VARIANT_TRUE, "failed to load XML string\n"); err = NULL; - ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE); + hr = IXMLDOMDocument2_validate(dtddoc2, &err); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(err != NULL, "expected pointer\n"); if (err) { res = 0; - ole_check(IXMLDOMParseError_get_errorCode(err, &res)); + hr = IXMLDOMParseError_get_errorCode(err, &res); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* XML_REQUIRED_ATTRIBUTE_MISSING */ - todo_wine ok(res == 0xC00CE020, "got %08x\n", res); + todo_wine ok(res == 0xC00CE020, "Unexpected code %#lx.\n", res); IXMLDOMParseError_Release(err); } @@ -4492,14 +4638,9 @@ static void test_IXMLDOMDocument2(void) free_bstrs(); } -#define helper_ole_check(expr) { \ - HRESULT r = expr; \ - ok_(__FILE__, line)(r == S_OK, "=> %i: " #expr " returned %08x\n", __LINE__, r); \ -} - #define helper_ole_check_ver(expr) { \ - HRESULT r = expr; \ - ok_(__FILE__, line)(r == S_OK, "-> %i (%s): " #expr " returned %08x\n", __LINE__, ver, r); \ + HRESULT hr = expr; \ + ok_(__FILE__, line)(hr == S_OK, "-> %i (%s): " #expr " returned %#lx.\n", __LINE__, ver, hr); \ } #define helper_expect_list_and_release(list, expstr) { \ @@ -4593,10 +4734,6 @@ static inline void _check_ws_preserved(int line, const char *ver, IXMLDOMDocumen static void test_preserve_charref(IXMLDOMDocument2 *doc, VARIANT_BOOL preserve) { - static const WCHAR b1_p[] = {' ','T','e','x','t',' ','A',' ','e','n','d',' ',0}; - static const WCHAR b1_i[] = {'T','e','x','t',' ','A',' ','e','n','d',0}; - static const WCHAR b2_p[] = {'A','B',' ','C',' ',0}; - static const WCHAR b2_i[] = {'A','B',' ','C',0}; IXMLDOMNodeList *list; IXMLDOMElement *root; IXMLDOMNode *node; @@ -4606,32 +4743,32 @@ static void test_preserve_charref(IXMLDOMDocument2 *doc, VARIANT_BOOL preserve) BSTR s; hr = IXMLDOMDocument2_put_preserveWhiteSpace(doc, preserve); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument2_loadXML(doc, _bstr_(charrefsxml), &b); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument2_get_documentElement(doc, &root); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_get_childNodes(root, &list); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMElement_Release(root); - text = preserve == VARIANT_TRUE ? b1_p : b1_i; + text = preserve == VARIANT_TRUE ? L" Text A end " : L"Text A end"; hr = IXMLDOMNodeList_get_item(list, 0, &node); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_text(node, &s); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!lstrcmpW(s, text), "0x%x, got %s\n", preserve, wine_dbgstr_w(s)); SysFreeString(s); IXMLDOMNode_Release(node); - text = preserve == VARIANT_TRUE ? b2_p : b2_i; + text = preserve == VARIANT_TRUE ? L"AB C " : L"AB C"; hr = IXMLDOMNodeList_get_item(list, 1, &node); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_text(node, &s); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!lstrcmpW(s, text), "0x%x, got %s\n", preserve, wine_dbgstr_w(s)); SysFreeString(s); IXMLDOMNode_Release(node); @@ -4675,68 +4812,87 @@ static void test_whitespace(void) hr = CoCreateInstance(class_ptr->clsid, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument2, (void**)&doc1); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = CoCreateInstance(class_ptr->clsid, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument2, (void**)&doc2); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - ole_check(IXMLDOMDocument2_put_preserveWhiteSpace(doc2, VARIANT_TRUE)); - ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc1, &b)); + hr = IXMLDOMDocument2_put_preserveWhiteSpace(doc2, VARIANT_TRUE); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument2_get_preserveWhiteSpace(doc1, &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_FALSE, "expected false\n"); - ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc2, &b)); + hr = IXMLDOMDocument2_get_preserveWhiteSpace(doc2, &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "expected true\n"); - ole_check(IXMLDOMDocument2_loadXML(doc1, _bstr_(szExampleXML), &b)); + hr = IXMLDOMDocument2_loadXML(doc1, _bstr_(szExampleXML), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML string\n"); - ole_check(IXMLDOMDocument2_loadXML(doc2, _bstr_(szExampleXML), &b)); + hr = IXMLDOMDocument2_loadXML(doc2, _bstr_(szExampleXML), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML string\n"); /* switch to XPath */ - ole_check(IXMLDOMDocument2_setProperty(doc1, _bstr_("SelectionLanguage"), _variantbstr_("XPath"))); - ole_check(IXMLDOMDocument2_setProperty(doc2, _bstr_("SelectionLanguage"), _variantbstr_("XPath"))); + hr = IXMLDOMDocument2_setProperty(doc1, _bstr_("SelectionLanguage"), _variantbstr_("XPath")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument2_setProperty(doc2, _bstr_("SelectionLanguage"), _variantbstr_("XPath")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); check_ws_ignored(class_ptr->name, doc1, NULL); check_ws_preserved(class_ptr->name, doc2, NULL); /* new instances copy the property */ - ole_check(IXMLDOMDocument2_QueryInterface(doc1, &IID_IXMLDOMDocument2, (void**) &doc3)); - ole_check(IXMLDOMDocument2_QueryInterface(doc2, &IID_IXMLDOMDocument2, (void**) &doc4)); + hr = IXMLDOMDocument2_QueryInterface(doc1, &IID_IXMLDOMDocument2, (void**) &doc3); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument2_QueryInterface(doc2, &IID_IXMLDOMDocument2, (void**) &doc4); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc3, &b)); + hr = IXMLDOMDocument2_get_preserveWhiteSpace(doc3, &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_FALSE, "expected false\n"); - ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc4, &b)); + hr = IXMLDOMDocument2_get_preserveWhiteSpace(doc4, &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "expected true\n"); check_ws_ignored(class_ptr->name, doc3, NULL); check_ws_preserved(class_ptr->name, doc4, NULL); /* setting after loading xml affects trimming of leading/trailing ws only */ - ole_check(IXMLDOMDocument2_put_preserveWhiteSpace(doc1, VARIANT_TRUE)); - ole_check(IXMLDOMDocument2_put_preserveWhiteSpace(doc2, VARIANT_FALSE)); + hr = IXMLDOMDocument2_put_preserveWhiteSpace(doc1, VARIANT_TRUE); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument2_put_preserveWhiteSpace(doc2, VARIANT_FALSE); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* the trailing "\n " isn't there, because it was ws-only node */ check_ws_ignored(class_ptr->name, doc1, " This is a description. "); check_ws_preserved(class_ptr->name, doc2, " This is a description."); /* it takes effect on reload */ - ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc1, &b)); + hr = IXMLDOMDocument2_get_preserveWhiteSpace(doc1, &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "expected true\n"); - ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc2, &b)); + hr = IXMLDOMDocument2_get_preserveWhiteSpace(doc2, &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_FALSE, "expected false\n"); - ole_check(IXMLDOMDocument2_loadXML(doc1, _bstr_(szExampleXML), &b)); + hr = IXMLDOMDocument2_loadXML(doc1, _bstr_(szExampleXML), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML string\n"); - ole_check(IXMLDOMDocument2_loadXML(doc2, _bstr_(szExampleXML), &b)); + hr = IXMLDOMDocument2_loadXML(doc2, _bstr_(szExampleXML), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML string\n"); check_ws_preserved(class_ptr->name, doc1, NULL); check_ws_ignored(class_ptr->name, doc2, NULL); /* other instances follow suit */ - ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc3, &b)); + hr = IXMLDOMDocument2_get_preserveWhiteSpace(doc3, &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "expected true\n"); - ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc4, &b)); + hr = IXMLDOMDocument2_get_preserveWhiteSpace(doc4, &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_FALSE, "expected false\n"); check_ws_preserved(class_ptr->name, doc3, NULL); @@ -4752,20 +4908,20 @@ static void test_whitespace(void) /* formatting whitespaces */ hr = IXMLDOMDocument2_put_preserveWhiteSpace(doc1, VARIANT_FALSE); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument2_loadXML(doc1, _bstr_(complete7), &b); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "for %x\n", b); hr = IXMLDOMDocument2_get_documentElement(doc1, &root); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_get_childNodes(root, &list); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = 0; hr = IXMLDOMNodeList_get_length(list, &len); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(len == 3, "got %d\n", len); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(len == 3, "got %ld\n", len); IXMLDOMNodeList_Release(list); IXMLDOMElement_Release(root); @@ -4877,30 +5033,31 @@ static void test_XPath(void) doc = create_document(&IID_IXMLDOMDocument2); hr = IXMLDOMDocument2_loadXML(doc, _bstr_(szExampleXML), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML string\n"); /* switch to XPath */ - ole_check(IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionLanguage"), _variantbstr_("XPath"))); + hr = IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionLanguage"), _variantbstr_("XPath")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* some simple queries*/ EXPECT_REF(doc, 1); hr = IXMLDOMDocument2_selectNodes(doc, _bstr_("root"), &list); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(doc, 1); EXPECT_LIST_LEN(list, 1); EXPECT_REF(list, 1); hr = IXMLDOMNodeList_get_item(list, 0, &rootNode); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(list, 1); EXPECT_REF(rootNode, 1); hr = IXMLDOMNodeList_reset(list); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); expect_list_and_release(list, "E2.D1"); - /* peform xpath tests */ + /* perform xpath tests */ for ( ; xptest->query ; xptest++ ) { char *str; @@ -4925,172 +5082,204 @@ if (0) /* namespace:: axis test is disabled until namespace definitions are supported as attribute nodes, currently it's another node type */ hr = IXMLDOMDocument2_selectNodes(doc, _bstr_("/root/namespace::*"), &list); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = -1; hr = IXMLDOMNodeList_get_length(list, &len); - EXPECT_HR(hr, S_OK); - ok(len == 2, "got %d\n", len); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(len == 2, "got %ld\n", len); hr = IXMLDOMNodeList_nextNode(list, &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); type = NODE_INVALID; hr = IXMLDOMNode_get_nodeType(node, &type); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(type == NODE_ATTRIBUTE, "got %d\n", type); IXMLDOMNode_Release(node); IXMLDOMNodeList_Release(list); } - ole_check(IXMLDOMDocument2_selectNodes(doc, _bstr_("root//c"), &list)); + hr = IXMLDOMDocument2_selectNodes(doc, _bstr_("root//c"), &list); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); expect_list_and_release(list, "E3.E1.E2.D1 E3.E2.E2.D1"); - ole_check(IXMLDOMDocument2_selectNodes(doc, _bstr_("//c[@type]"), &list)); + hr = IXMLDOMDocument2_selectNodes(doc, _bstr_("//c[@type]"), &list); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); expect_list_and_release(list, "E3.E2.E2.D1"); - ole_check(IXMLDOMNode_selectNodes(rootNode, _bstr_("elem"), &list)); + hr = IXMLDOMNode_selectNodes(rootNode, _bstr_("elem"), &list); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* using get_item for query results advances the position */ - ole_check(IXMLDOMNodeList_get_item(list, 1, &node)); + hr = IXMLDOMNodeList_get_item(list, 1, &node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); expect_node(node, "E2.E2.D1"); IXMLDOMNode_Release(node); - ole_check(IXMLDOMNodeList_nextNode(list, &node)); + hr = IXMLDOMNodeList_nextNode(list, &node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); expect_node(node, "E4.E2.D1"); IXMLDOMNode_Release(node); - ole_check(IXMLDOMNodeList_reset(list)); + hr = IXMLDOMNodeList_reset(list); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); expect_list_and_release(list, "E1.E2.D1 E2.E2.D1 E4.E2.D1"); - ole_check(IXMLDOMNode_selectNodes(rootNode, _bstr_("."), &list)); + hr = IXMLDOMNode_selectNodes(rootNode, _bstr_("."), &list); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); expect_list_and_release(list, "E2.D1"); - ole_check(IXMLDOMNode_selectNodes(rootNode, _bstr_("elem[3]/preceding-sibling::*"), &list)); - ole_check(IXMLDOMNodeList_get_item(list, 0, &elem1Node)); - ole_check(IXMLDOMNodeList_reset(list)); + hr = IXMLDOMNode_selectNodes(rootNode, _bstr_("elem[3]/preceding-sibling::*"), &list); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNodeList_get_item(list, 0, &elem1Node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNodeList_reset(list); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); expect_list_and_release(list, "E1.E2.D1 E2.E2.D1 E3.E2.D1"); /* select an attribute */ - ole_check(IXMLDOMNode_selectNodes(rootNode, _bstr_(".//@type"), &list)); + hr = IXMLDOMNode_selectNodes(rootNode, _bstr_(".//@type"), &list); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); expect_list_and_release(list, "A'type'.E3.E2.E2.D1"); /* would evaluate to a number */ - ole_expect(IXMLDOMNode_selectNodes(rootNode, _bstr_("count(*)"), &list), E_FAIL); + hr = IXMLDOMNode_selectNodes(rootNode, _bstr_("count(*)"), &list); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); /* would evaluate to a boolean */ - ole_expect(IXMLDOMNode_selectNodes(rootNode, _bstr_("position()>0"), &list), E_FAIL); + hr = IXMLDOMNode_selectNodes(rootNode, _bstr_("position()>0"), &list); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); /* would evaluate to a string */ - ole_expect(IXMLDOMNode_selectNodes(rootNode, _bstr_("name()"), &list), E_FAIL); + hr = IXMLDOMNode_selectNodes(rootNode, _bstr_("name()"), &list); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); /* no results */ - ole_check(IXMLDOMNode_selectNodes(rootNode, _bstr_("c"), &list)); + hr = IXMLDOMNode_selectNodes(rootNode, _bstr_("c"), &list); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); expect_list_and_release(list, ""); - ole_check(IXMLDOMDocument2_selectNodes(doc, _bstr_("elem//c"), &list)); + hr = IXMLDOMDocument2_selectNodes(doc, _bstr_("elem//c"), &list); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); expect_list_and_release(list, ""); - ole_check(IXMLDOMDocument2_selectNodes(doc, _bstr_("//elem[4]"), &list)); + hr = IXMLDOMDocument2_selectNodes(doc, _bstr_("//elem[4]"), &list); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); expect_list_and_release(list, ""); - ole_check(IXMLDOMDocument2_selectNodes(doc, _bstr_("root//elem[0]"), &list)); + hr = IXMLDOMDocument2_selectNodes(doc, _bstr_("root//elem[0]"), &list); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); expect_list_and_release(list, ""); /* foo undeclared in document node */ - ole_expect(IXMLDOMDocument2_selectNodes(doc, _bstr_("root//foo:c"), &list), E_FAIL); + hr = IXMLDOMDocument2_selectNodes(doc, _bstr_("root//foo:c"), &list); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); /* undeclared in node */ - ole_expect(IXMLDOMNode_selectNodes(rootNode, _bstr_(".//foo:c"), &list), E_FAIL); + hr = IXMLDOMNode_selectNodes(rootNode, _bstr_(".//foo:c"), &list); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); /* undeclared in node */ - ole_expect(IXMLDOMNode_selectNodes(elem1Node, _bstr_("//foo:c"), &list), E_FAIL); + hr = IXMLDOMNode_selectNodes(elem1Node, _bstr_("//foo:c"), &list); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); /* but this trick can be used */ - ole_check(IXMLDOMNode_selectNodes(elem1Node, _bstr_("//*[name()='foo:c']"), &list)); + hr = IXMLDOMNode_selectNodes(elem1Node, _bstr_("//*[name()='foo:c']"), &list); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); expect_list_and_release(list, "E3.E4.E2.D1"); /* it has to be declared in SelectionNamespaces */ - ole_check(IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionNamespaces"), - _variantbstr_("xmlns:test='urn:uuid:86B2F87F-ACB6-45cd-8B77-9BDB92A01A29'"))); + hr = IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionNamespaces"), + _variantbstr_("xmlns:test='urn:uuid:86B2F87F-ACB6-45cd-8B77-9BDB92A01A29'")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* now the namespace can be used */ - ole_check(IXMLDOMDocument2_selectNodes(doc, _bstr_("root//test:c"), &list)); + hr = IXMLDOMDocument2_selectNodes(doc, _bstr_("root//test:c"), &list); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); expect_list_and_release(list, "E3.E3.E2.D1 E3.E4.E2.D1"); - ole_check(IXMLDOMNode_selectNodes(rootNode, _bstr_(".//test:c"), &list)); + hr = IXMLDOMNode_selectNodes(rootNode, _bstr_(".//test:c"), &list); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); expect_list_and_release(list, "E3.E3.E2.D1 E3.E4.E2.D1"); - ole_check(IXMLDOMNode_selectNodes(elem1Node, _bstr_("//test:c"), &list)); + hr = IXMLDOMNode_selectNodes(elem1Node, _bstr_("//test:c"), &list); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); expect_list_and_release(list, "E3.E3.E2.D1 E3.E4.E2.D1"); - ole_check(IXMLDOMNode_selectNodes(elem1Node, _bstr_(".//test:x"), &list)); + hr = IXMLDOMNode_selectNodes(elem1Node, _bstr_(".//test:x"), &list); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); expect_list_and_release(list, "E6.E1.E5.E1.E2.D1 E6.E2.E5.E1.E2.D1"); /* SelectionNamespaces syntax error - the namespaces doesn't work anymore but the value is stored */ - ole_expect(IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionNamespaces"), - _variantbstr_("xmlns:test='urn:uuid:86B2F87F-ACB6-45cd-8B77-9BDB92A01A29' xmlns:foo=###")), E_FAIL); + hr = IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionNamespaces"), + _variantbstr_("xmlns:test='urn:uuid:86B2F87F-ACB6-45cd-8B77-9BDB92A01A29' xmlns:foo=###")); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); - ole_expect(IXMLDOMDocument2_selectNodes(doc, _bstr_("root//foo:c"), &list), E_FAIL); + hr = IXMLDOMDocument2_selectNodes(doc, _bstr_("root//foo:c"), &list); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); VariantInit(&var); - ole_check(IXMLDOMDocument2_getProperty(doc, _bstr_("SelectionNamespaces"), &var)); + hr = IXMLDOMDocument2_getProperty(doc, _bstr_("SelectionNamespaces"), &var); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); expect_eq(V_VT(&var), VT_BSTR, int, "%x"); if (V_VT(&var) == VT_BSTR) expect_bstr_eq_and_free(V_BSTR(&var), "xmlns:test='urn:uuid:86B2F87F-ACB6-45cd-8B77-9BDB92A01A29' xmlns:foo=###"); /* extra attributes - same thing*/ - ole_expect(IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionNamespaces"), - _variantbstr_("xmlns:test='urn:uuid:86B2F87F-ACB6-45cd-8B77-9BDB92A01A29' param='test'")), E_FAIL); - ole_expect(IXMLDOMDocument2_selectNodes(doc, _bstr_("root//foo:c"), &list), E_FAIL); + hr = IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionNamespaces"), + _variantbstr_("xmlns:test='urn:uuid:86B2F87F-ACB6-45cd-8B77-9BDB92A01A29' param='test'")); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument2_selectNodes(doc, _bstr_("root//foo:c"), &list); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(rootNode); IXMLDOMNode_Release(elem1Node); /* alter document with already built list */ hr = IXMLDOMDocument2_selectNodes(doc, _bstr_("root"), &list); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_LIST_LEN(list, 1); hr = IXMLDOMDocument2_get_lastChild(doc, &rootNode); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(rootNode, 1); EXPECT_REF(doc, 1); hr = IXMLDOMDocument2_removeChild(doc, rootNode, NULL); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(rootNode); EXPECT_LIST_LEN(list, 1); hr = IXMLDOMNodeList_get_item(list, 0, &rootNode); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(rootNode, 1); IXMLDOMNodeList_Release(list); hr = IXMLDOMNode_get_nodeName(rootNode, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(str, _bstr_("root")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"root"), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); IXMLDOMNode_Release(rootNode); /* alter node from list and get it another time */ hr = IXMLDOMDocument2_loadXML(doc, _bstr_(szExampleXML), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML string\n"); hr = IXMLDOMDocument2_selectNodes(doc, _bstr_("root"), &list); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_LIST_LEN(list, 1); hr = IXMLDOMNodeList_get_item(list, 0, &rootNode); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_QueryInterface(rootNode, &IID_IXMLDOMElement, (void**)&elem); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&var) = VT_I2; V_I2(&var) = 1; hr = IXMLDOMElement_setAttribute(elem, _bstr_("attrtest"), var); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMElement_Release(elem); IXMLDOMNode_Release(rootNode); /* now check attribute to be present */ hr = IXMLDOMNodeList_get_item(list, 0, &rootNode); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_QueryInterface(rootNode, &IID_IXMLDOMElement, (void**)&elem); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_getAttributeNode(elem, _bstr_("attrtest"), &attr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMAttribute_Release(attr); IXMLDOMElement_Release(elem); @@ -5098,10 +5287,10 @@ if (0) /* and now check for attribute in original document */ hr = IXMLDOMDocument2_get_documentElement(doc, &elem); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_getAttributeNode(elem, _bstr_("attrtest"), &attr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMAttribute_Release(attr); IXMLDOMElement_Release(elem); @@ -5110,19 +5299,19 @@ if (0) doc2 = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument2_loadXML(doc, _bstr_(szExampleXML), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML string\n"); hr = IXMLDOMDocument2_selectNodes(doc, _bstr_("root"), &list); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_LIST_LEN(list, 1); hr = IXMLDOMNodeList_get_item(list, 0, &rootNode); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(rootNode, 1); hr = IXMLDOMDocument_appendChild(doc2, rootNode, NULL); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(rootNode, 1); EXPECT_REF(doc2, 1); EXPECT_REF(list, 1); @@ -5139,7 +5328,7 @@ if (0) if (is_clsid_supported(ptr->clsid, &IID_IXMLDOMDocument2)) { hr = CoCreateInstance(ptr->clsid, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument2, (void**)&doc); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); } else { @@ -5148,27 +5337,27 @@ if (0) } hr = IXMLDOMDocument2_loadXML(doc, _bstr_(szExampleXML), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load, %s\n", ptr->name); hr = IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionLanguage"), _variantbstr_("XPath")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&var) = VT_BSTR; V_BSTR(&var) = _bstr_(ptr->ns); hr = IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionNamespaces"), var); - ok(hr == ptr->hr, "got 0x%08x, for %s, %s\n", hr, ptr->name, ptr->ns); + ok(hr == ptr->hr, "Unexpected hr %#lx., for %s, %s\n", hr, ptr->name, ptr->ns); V_VT(&var) = VT_EMPTY; hr = IXMLDOMDocument2_getProperty(doc, _bstr_("SelectionNamespaces"), &var); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&var) == VT_BSTR, "got wrong property type %d\n", V_VT(&var)); ok(!lstrcmpW(V_BSTR(&var), _bstr_(ptr->ns)), "got wrong value %s\n", wine_dbgstr_w(V_BSTR(&var))); VariantClear(&var); hr = IXMLDOMDocument2_selectNodes(doc, _bstr_("root//test:c"), &list); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); if (hr == S_OK) expect_list_and_release(list, "E3.E3.E2.D1 E3.E4.E2.D1"); @@ -5198,130 +5387,129 @@ static void test_cloneNode(void ) doc = create_document(&IID_IXMLDOMDocument2); hr = IXMLDOMDocument2_loadXML(doc, _bstr_(complete4A), &b); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML string\n"); hr = IXMLDOMDocument2_getProperty(doc, _bstr_("SelectionLanguage"), &v); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(!lstrcmpW(V_BSTR(&v), _bstr_("XSLPattern")), "got prop value %s\n", wine_dbgstr_w(V_BSTR(&v))); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(V_BSTR(&v), L"XSLPattern"), "got prop value %s\n", wine_dbgstr_w(V_BSTR(&v))); VariantClear(&v); V_BSTR(&v) = _bstr_("XPath"); V_VT(&v) = VT_BSTR; hr = IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionLanguage"), v); - ok(hr == S_OK, "got 0x%08x\n", hr); - VariantClear(&v); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* clone document node */ hr = IXMLDOMDocument2_cloneNode(doc, VARIANT_TRUE, &node); - ok( hr == S_OK, "ret %08x\n", hr ); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok( node != NULL, "node %p\n", node ); hr = IXMLDOMNode_get_childNodes(node, &pList); - ok( hr == S_OK, "ret %08x\n", hr ); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr ); length = 0; hr = IXMLDOMNodeList_get_length(pList, &length); - ok( hr == S_OK, "ret %08x\n", hr ); - ok(length == 2, "got %d\n", length); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(length == 2, "got %ld\n", length); IXMLDOMNodeList_Release(pList); hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMDocument2, (void**)&doc_clone); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* cloned document inherits properties */ hr = IXMLDOMDocument2_getProperty(doc_clone, _bstr_("SelectionLanguage"), &v); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(!lstrcmpW(V_BSTR(&v), _bstr_("XPath")), "got prop value %s\n", wine_dbgstr_w(V_BSTR(&v))); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(V_BSTR(&v), L"XPath"), "got prop value %s\n", wine_dbgstr_w(V_BSTR(&v))); VariantClear(&v); IXMLDOMDocument2_Release(doc_clone); IXMLDOMNode_Release(node); hr = IXMLDOMDocument2_selectSingleNode(doc, _bstr_("lc/pr"), &node); - ok( hr == S_OK, "ret %08x\n", hr ); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok( node != NULL, "node %p\n", node ); /* Check invalid parameter */ hr = IXMLDOMNode_cloneNode(node, VARIANT_TRUE, NULL); - ok( hr == E_INVALIDARG, "ret %08x\n", hr ); + ok( hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); /* All Children */ hr = IXMLDOMNode_cloneNode(node, VARIANT_TRUE, &node_clone); - ok( hr == S_OK, "ret %08x\n", hr ); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok( node_clone != NULL, "node %p\n", node ); hr = IXMLDOMNode_get_firstChild(node_clone, &node_first); - ok( hr == S_OK, "ret %08x\n", hr ); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMNode_get_ownerDocument(node_clone, &doc2); - ok( hr == S_OK, "ret %08x\n", hr ); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr ); IXMLDOMDocument_Release(doc2); IXMLDOMNode_Release(node_first); hr = IXMLDOMNode_get_childNodes(node, &pList); - ok( hr == S_OK, "ret %08x\n", hr ); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr ); length = 0; hr = IXMLDOMNodeList_get_length(pList, &length); - ok( hr == S_OK, "ret %08x\n", hr ); - ok(length == 1, "got %d\n", length); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(length == 1, "got %ld\n", length); IXMLDOMNodeList_Release(pList); hr = IXMLDOMNode_get_attributes(node, &mapAttr); - ok( hr == S_OK, "ret %08x\n", hr ); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr ); attr_cnt = 0; hr = IXMLDOMNamedNodeMap_get_length(mapAttr, &attr_cnt); - ok( hr == S_OK, "ret %08x\n", hr ); - ok(attr_cnt == 3, "got %d\n", attr_cnt); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(attr_cnt == 3, "got %ld\n", attr_cnt); IXMLDOMNamedNodeMap_Release(mapAttr); hr = IXMLDOMNode_get_childNodes(node_clone, &pList); - ok( hr == S_OK, "ret %08x\n", hr ); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr ); length1 = 0; hr = IXMLDOMNodeList_get_length(pList, &length1); - ok(length1 == 1, "got %d\n", length1); - ok( hr == S_OK, "ret %08x\n", hr ); + ok(length1 == 1, "got %ld\n", length1); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr ); IXMLDOMNodeList_Release(pList); hr = IXMLDOMNode_get_attributes(node_clone, &mapAttr); - ok( hr == S_OK, "ret %08x\n", hr ); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr ); attr_cnt1 = 0; hr = IXMLDOMNamedNodeMap_get_length(mapAttr, &attr_cnt1); - ok( hr == S_OK, "ret %08x\n", hr ); - ok(attr_cnt1 == 3, "got %d\n", attr_cnt1); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(attr_cnt1 == 3, "got %ld\n", attr_cnt1); /* now really get some attributes from cloned element */ attr = NULL; hr = IXMLDOMNamedNodeMap_getNamedItem(mapAttr, _bstr_("id"), &attr); - ok(hr == S_OK, "ret %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(attr); IXMLDOMNamedNodeMap_Release(mapAttr); - ok(length == length1, "wrong Child count (%d, %d)\n", length, length1); - ok(attr_cnt == attr_cnt1, "wrong Attribute count (%d, %d)\n", attr_cnt, attr_cnt1); + ok(length == length1, "wrong Child count (%ld, %ld)\n", length, length1); + ok(attr_cnt == attr_cnt1, "wrong Attribute count (%ld, %ld)\n", attr_cnt, attr_cnt1); IXMLDOMNode_Release(node_clone); /* No Children */ hr = IXMLDOMNode_cloneNode(node, VARIANT_FALSE, &node_clone); - ok( hr == S_OK, "ret %08x\n", hr ); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok( node_clone != NULL, "node %p\n", node ); hr = IXMLDOMNode_get_firstChild(node_clone, &node_first); - ok(hr == S_FALSE, "ret %08x\n", hr ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMNode_get_childNodes(node_clone, &pList); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMNodeList_get_length(pList, &length1); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( length1 == 0, "Length should be 0 (%d)\n", length1); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok( length1 == 0, "Length should be 0 (%ld)\n", length1); IXMLDOMNodeList_Release(pList); hr = IXMLDOMNode_get_attributes(node_clone, &mapAttr); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMNamedNodeMap_get_length(mapAttr, &attr_cnt1); - ok(hr == S_OK, "ret %08x\n", hr ); - ok(attr_cnt1 == 3, "Attribute count should be 3 (%d)\n", attr_cnt1); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(attr_cnt1 == 3, "Attribute count should be 3 (%ld)\n", attr_cnt1); IXMLDOMNamedNodeMap_Release(mapAttr); - ok(length != length1, "wrong Child count (%d, %d)\n", length, length1); - ok(attr_cnt == attr_cnt1, "wrong Attribute count (%d, %d)\n", attr_cnt, attr_cnt1); + ok(length != length1, "wrong Child count (%ld, %ld)\n", length, length1); + ok(attr_cnt == attr_cnt1, "wrong Attribute count (%ld, %ld)\n", attr_cnt, attr_cnt1); IXMLDOMNode_Release(node_clone); IXMLDOMNode_Release(node); @@ -5350,76 +5538,76 @@ static void test_xmlTypes(void) doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_get_nextSibling(doc, NULL); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); pNextChild = (void*)0xdeadbeef; hr = IXMLDOMDocument_get_nextSibling(doc, &pNextChild); - ok(hr == S_FALSE, "ret %08x\n", hr ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr ); ok(pNextChild == NULL, "pDocChild not NULL\n"); /* test previous Sibling */ hr = IXMLDOMDocument_get_previousSibling(doc, NULL); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); pNextChild = (void*)0xdeadbeef; hr = IXMLDOMDocument_get_previousSibling(doc, &pNextChild); - ok(hr == S_FALSE, "ret %08x\n", hr ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr ); ok(pNextChild == NULL, "pNextChild not NULL\n"); /* test get_dataType */ V_VT(&v) = VT_EMPTY; hr = IXMLDOMDocument_get_dataType(doc, &v); - ok(hr == S_FALSE, "ret %08x\n", hr ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr ); ok( V_VT(&v) == VT_NULL, "incorrect dataType type\n"); VariantClear(&v); /* test implementation */ hr = IXMLDOMDocument_get_implementation(doc, NULL); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMDocument_get_implementation(doc, &pIXMLDOMImplementation); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); if(hr == S_OK) { VARIANT_BOOL hasFeature = VARIANT_TRUE; BSTR sEmpty = SysAllocStringLen(NULL, 0); hr = IXMLDOMImplementation_hasFeature(pIXMLDOMImplementation, NULL, sEmpty, &hasFeature); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMImplementation_hasFeature(pIXMLDOMImplementation, sEmpty, sEmpty, NULL); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMImplementation_hasFeature(pIXMLDOMImplementation, _bstr_("DOM"), sEmpty, &hasFeature); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok(hasFeature == VARIANT_FALSE, "hasFeature returned false\n"); hr = IXMLDOMImplementation_hasFeature(pIXMLDOMImplementation, sEmpty, sEmpty, &hasFeature); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok(hasFeature == VARIANT_FALSE, "hasFeature returned true\n"); hr = IXMLDOMImplementation_hasFeature(pIXMLDOMImplementation, _bstr_("DOM"), NULL, &hasFeature); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok(hasFeature == VARIANT_TRUE, "hasFeature returned false\n"); hr = IXMLDOMImplementation_hasFeature(pIXMLDOMImplementation, _bstr_("DOM"), sEmpty, &hasFeature); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok(hasFeature == VARIANT_FALSE, "hasFeature returned false\n"); hr = IXMLDOMImplementation_hasFeature(pIXMLDOMImplementation, _bstr_("DOM"), _bstr_("1.0"), &hasFeature); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok(hasFeature == VARIANT_TRUE, "hasFeature returned true\n"); hr = IXMLDOMImplementation_hasFeature(pIXMLDOMImplementation, _bstr_("XML"), _bstr_("1.0"), &hasFeature); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok(hasFeature == VARIANT_TRUE, "hasFeature returned true\n"); hr = IXMLDOMImplementation_hasFeature(pIXMLDOMImplementation, _bstr_("MS-DOM"), _bstr_("1.0"), &hasFeature); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok(hasFeature == VARIANT_TRUE, "hasFeature returned true\n"); hr = IXMLDOMImplementation_hasFeature(pIXMLDOMImplementation, _bstr_("SSS"), NULL, &hasFeature); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok(hasFeature == VARIANT_FALSE, "hasFeature returned false\n"); SysFreeString(sEmpty); @@ -5428,437 +5616,437 @@ static void test_xmlTypes(void) pRoot = (IXMLDOMElement*)0x1; hr = IXMLDOMDocument_createElement(doc, NULL, &pRoot); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); ok(pRoot == (void*)0x1, "Expect same ptr, got %p\n", pRoot); pRoot = (IXMLDOMElement*)0x1; hr = IXMLDOMDocument_createElement(doc, _bstr_(""), &pRoot); - ok(hr == E_FAIL, "ret %08x\n", hr ); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr ); ok(pRoot == (void*)0x1, "Expect same ptr, got %p\n", pRoot); hr = IXMLDOMDocument_createElement(doc, _bstr_("Testing"), &pRoot); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); if(hr == S_OK) { hr = IXMLDOMDocument_appendChild(doc, (IXMLDOMNode*)pRoot, NULL); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); if(hr == S_OK) { /* Comment */ - str = SysAllocString(szComment); + str = SysAllocString(L"A Comment"); hr = IXMLDOMDocument_createComment(doc, str, &pComment); SysFreeString(str); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); if(hr == S_OK) { hr = IXMLDOMElement_appendChild(pRoot, (IXMLDOMNode*)pComment, NULL); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_get_nodeName(pComment, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, szCommentNodeText ), "incorrect comment node Name\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok( !lstrcmpW( str, L"#comment" ), "incorrect comment node Name\n"); SysFreeString(str); hr = IXMLDOMComment_get_xml(pComment, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, szCommentXML ), "incorrect comment xml\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok( !lstrcmpW( str, L"" ), "incorrect comment xml\n"); SysFreeString(str); /* put data Tests */ hr = IXMLDOMComment_put_data(pComment, _bstr_("This &is a ; test <>\\")); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); /* get data Tests */ hr = IXMLDOMComment_get_data(pComment, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("This &is a ; test <>\\") ), "incorrect get_data string\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"This &is a ; test <>\\"), "incorrect get_data string\n"); SysFreeString(str); /* Confirm XML text is good */ hr = IXMLDOMComment_get_xml(pComment, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("") ), "incorrect xml string\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L""), "incorrect xml string\n"); SysFreeString(str); /* Confirm we get the put_data Text back */ hr = IXMLDOMComment_get_text(pComment, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("This &is a ; test <>\\") ), "incorrect xml string\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"This &is a ; test <>\\"), "incorrect xml string\n"); SysFreeString(str); /* test length property */ hr = IXMLDOMComment_get_length(pComment, &len); - ok(hr == S_OK, "ret %08x\n", hr ); - ok(len == 21, "expected 21 got %d\n", len); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(len == 21, "expected 21 got %ld\n", len); /* test substringData */ hr = IXMLDOMComment_substringData(pComment, 0, 4, NULL); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); /* test substringData - Invalid offset */ str = (void *)0xdeadbeef; hr = IXMLDOMComment_substringData(pComment, -1, 4, &str); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); ok( str == NULL, "incorrect string\n"); /* test substringData - Invalid offset */ str = (void *)0xdeadbeef; hr = IXMLDOMComment_substringData(pComment, 30, 0, &str); - ok(hr == S_FALSE, "ret %08x\n", hr ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr ); ok( str == NULL, "incorrect string\n"); /* test substringData - Invalid size */ str = (void *)0xdeadbeef; hr = IXMLDOMComment_substringData(pComment, 0, -1, &str); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); ok( str == NULL, "incorrect string\n"); /* test substringData - Invalid size */ str = (void *)0xdeadbeef; hr = IXMLDOMComment_substringData(pComment, 2, 0, &str); - ok(hr == S_FALSE, "ret %08x\n", hr ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr ); ok( str == NULL, "incorrect string\n"); /* test substringData - Start of string */ hr = IXMLDOMComment_substringData(pComment, 0, 4, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("This") ), "incorrect substringData string\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"This"), "incorrect substringData string\n"); SysFreeString(str); /* test substringData - Middle of string */ hr = IXMLDOMComment_substringData(pComment, 13, 4, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("test") ), "incorrect substringData string\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"test"), "incorrect substringData string\n"); SysFreeString(str); /* test substringData - End of string */ hr = IXMLDOMComment_substringData(pComment, 20, 4, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("\\") ), "incorrect substringData string\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"\\"), "incorrect substringData string\n"); SysFreeString(str); /* test appendData */ hr = IXMLDOMComment_appendData(pComment, NULL); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_appendData(pComment, _bstr_("")); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_appendData(pComment, _bstr_("Append")); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_get_text(pComment, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("This &is a ; test <>\\Append") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"This &is a ; test <>\\Append"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* test insertData */ str = SysAllocStringLen(NULL, 0); hr = IXMLDOMComment_insertData(pComment, -1, str); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_insertData(pComment, -1, NULL); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_insertData(pComment, 1000, str); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_insertData(pComment, 1000, NULL); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_insertData(pComment, 0, NULL); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_insertData(pComment, 0, str); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); SysFreeString(str); hr = IXMLDOMComment_insertData(pComment, -1, _bstr_("Inserting")); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_insertData(pComment, 1000, _bstr_("Inserting")); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_insertData(pComment, 0, _bstr_("Begin ")); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_insertData(pComment, 17, _bstr_("Middle")); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_insertData(pComment, 39, _bstr_(" End")); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_get_text(pComment, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("Begin This &is a Middle; test <>\\Append End") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"Begin This &is a Middle; test <>\\Append End"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* delete data */ /* invalid arguments */ hr = IXMLDOMComment_deleteData(pComment, -1, 1); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_deleteData(pComment, 0, 0); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_deleteData(pComment, 0, -1); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\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); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(len == 43, "expected 43 got %ld\n", len); hr = IXMLDOMComment_deleteData(pComment, len, 1); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_deleteData(pComment, len+1, 1); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); /* delete from start */ hr = IXMLDOMComment_deleteData(pComment, 0, 5); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\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); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(len == 38, "expected 38 got %ld\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, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L" This &is a Middle; test <>\\Append End"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* delete from end */ hr = IXMLDOMComment_deleteData(pComment, 35, 3); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\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); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(len == 35, "expected 35 got %ld\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, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L" This &is a Middle; test <>\\Append "), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* delete from inside */ hr = IXMLDOMComment_deleteData(pComment, 1, 33); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\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); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(len == 2, "expected 2 got %ld\n", len); hr = IXMLDOMComment_get_text(pComment, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_(" ") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L" "), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* delete whole data ... */ hr = IXMLDOMComment_get_length(pComment, &len); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_deleteData(pComment, 0, len); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); /* ... and try again with empty string */ hr = IXMLDOMComment_deleteData(pComment, 0, len); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); /* ::replaceData() */ V_VT(&v) = VT_BSTR; - V_BSTR(&v) = SysAllocString(szstr1); + V_BSTR(&v) = SysAllocString(L"str1"); hr = IXMLDOMComment_put_nodeValue(pComment, v); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); VariantClear(&v); hr = IXMLDOMComment_replaceData(pComment, 6, 0, NULL); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_get_text(pComment, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("str1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"str1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); hr = IXMLDOMComment_replaceData(pComment, 0, 0, NULL); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_get_text(pComment, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("str1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"str1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* NULL pointer means delete */ hr = IXMLDOMComment_replaceData(pComment, 0, 1, NULL); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_get_text(pComment, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("tr1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"tr1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* empty string means delete */ hr = IXMLDOMComment_replaceData(pComment, 0, 1, _bstr_("")); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_get_text(pComment, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("r1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"r1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* zero count means insert */ hr = IXMLDOMComment_replaceData(pComment, 0, 0, _bstr_("a")); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_get_text(pComment, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("ar1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"ar1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); hr = IXMLDOMComment_replaceData(pComment, 0, 2, NULL); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_insertData(pComment, 0, _bstr_("m")); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_get_text(pComment, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("m1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"m1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* nonempty string, count greater than its length */ hr = IXMLDOMComment_replaceData(pComment, 0, 2, _bstr_("a1.2")); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_get_text(pComment, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("a1.2") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"a1.2"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* nonempty string, count less than its length */ hr = IXMLDOMComment_replaceData(pComment, 0, 1, _bstr_("wine")); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMComment_get_text(pComment, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("wine1.2") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"wine1.2"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); IXMLDOMComment_Release(pComment); } /* Element */ - str = SysAllocString(szElement); + str = SysAllocString(L"EleTest"); hr = IXMLDOMDocument_createElement(doc, str, &pElement); SysFreeString(str); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); if(hr == S_OK) { hr = IXMLDOMElement_appendChild(pRoot, (IXMLDOMNode*)pElement, NULL); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMElement_get_nodeName(pElement, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, szElement ), "incorrect element node Name\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok( !lstrcmpW( str, L"EleTest" ), "incorrect element node Name\n"); SysFreeString(str); hr = IXMLDOMElement_get_xml(pElement, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, szElementXML ), "incorrect element xml\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok( !lstrcmpW( str, L"" ), "incorrect element xml\n"); SysFreeString(str); /* Attribute */ pAttribute = (IXMLDOMAttribute*)0x1; hr = IXMLDOMDocument_createAttribute(doc, NULL, &pAttribute); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); ok(pAttribute == (void*)0x1, "Expect same ptr, got %p\n", pAttribute); pAttribute = (IXMLDOMAttribute*)0x1; hr = IXMLDOMDocument_createAttribute(doc, _bstr_(""), &pAttribute); - ok(hr == E_FAIL, "ret %08x\n", hr ); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr ); ok(pAttribute == (void*)0x1, "Expect same ptr, got %p\n", pAttribute); - str = SysAllocString(szAttribute); + str = SysAllocString(L"Attr"); hr = IXMLDOMDocument_createAttribute(doc, str, &pAttribute); SysFreeString(str); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); if(hr == S_OK) { IXMLDOMNode *pNewChild = (IXMLDOMNode *)0x1; hr = IXMLDOMAttribute_get_nextSibling(pAttribute, NULL); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); pNextChild = (IXMLDOMNode *)0x1; hr = IXMLDOMAttribute_get_nextSibling(pAttribute, &pNextChild); - ok(hr == S_FALSE, "ret %08x\n", hr ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr ); ok(pNextChild == NULL, "pNextChild not NULL\n"); /* test Previous Sibling*/ hr = IXMLDOMAttribute_get_previousSibling(pAttribute, NULL); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); pNextChild = (IXMLDOMNode *)0x1; hr = IXMLDOMAttribute_get_previousSibling(pAttribute, &pNextChild); - ok(hr == S_FALSE, "ret %08x\n", hr ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr ); ok(pNextChild == NULL, "pNextChild not NULL\n"); hr = IXMLDOMElement_appendChild(pElement, (IXMLDOMNode*)pAttribute, &pNewChild); - ok(hr == E_FAIL, "ret %08x\n", hr ); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr ); ok(pNewChild == NULL, "pNewChild not NULL\n"); hr = IXMLDOMElement_get_attributes(pElement, &pAttribs); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); if ( hr == S_OK ) { hr = IXMLDOMNamedNodeMap_setNamedItem(pAttribs, (IXMLDOMNode*)pAttribute, NULL ); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); IXMLDOMNamedNodeMap_Release(pAttribs); } hr = IXMLDOMAttribute_get_nodeName(pAttribute, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, szAttribute ), "incorrect attribute node Name\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok( !lstrcmpW( str, L"Attr" ), "incorrect attribute node Name\n"); SysFreeString(str); /* test nodeName */ hr = IXMLDOMAttribute_get_nodeName(pAttribute, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, szAttribute ), "incorrect nodeName string\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok( !lstrcmpW( str, L"Attr" ), "incorrect nodeName string\n"); SysFreeString(str); /* test name property */ hr = IXMLDOMAttribute_get_name(pAttribute, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, szAttribute ), "incorrect name string\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok( !lstrcmpW( str, L"Attr" ), "incorrect name string\n"); SysFreeString(str); hr = IXMLDOMAttribute_get_xml(pAttribute, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, szAttributeXML ), "incorrect attribute xml\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok( !lstrcmpW( str, L"Attr=\"\"" ), "incorrect attribute xml\n"); SysFreeString(str); IXMLDOMAttribute_Release(pAttribute); /* Check Element again with the Add Attribute*/ hr = IXMLDOMElement_get_xml(pElement, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, szElementXML2 ), "incorrect element xml\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok( !lstrcmpW( str, L"" ), "incorrect element xml\n"); SysFreeString(str); } hr = IXMLDOMElement_put_text(pElement, _bstr_("TestingNode")); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMElement_get_xml(pElement, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, szElementXML3 ), "incorrect element xml\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok( !lstrcmpW( str, L"TestingNode" ), "incorrect element xml\n"); SysFreeString(str); /* Test for reversible escaping */ str = SysAllocString( szStrangeChars ); hr = IXMLDOMElement_put_text(pElement, str); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); SysFreeString( str ); hr = IXMLDOMElement_get_xml(pElement, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, szElementXML4 ), "incorrect element xml\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok( !lstrcmpW( str, L"&x \x2103" ), "incorrect element xml\n"); SysFreeString(str); hr = IXMLDOMElement_get_text(pElement, &str); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok( !lstrcmpW( str, szStrangeChars ), "incorrect element text\n"); SysFreeString(str); @@ -5866,13 +6054,13 @@ static void test_xmlTypes(void) } /* CData Section */ - str = SysAllocString(szCData); + str = SysAllocString(L"[1]*2=3; &gee that is not right!"); hr = IXMLDOMDocument_createCDATASection(doc, str, NULL); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMDocument_createCDATASection(doc, str, &pCDataSec); SysFreeString(str); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); if(hr == S_OK) { IXMLDOMNode *pNextChild = (IXMLDOMNode *)0x1; @@ -5881,296 +6069,296 @@ static void test_xmlTypes(void) VariantInit(&var); hr = IXMLDOMCDATASection_QueryInterface(pCDataSec, &IID_IXMLDOMElement, (void**)&pElement); - ok(hr == E_NOINTERFACE, "ret %08x\n", hr); + ok(hr == E_NOINTERFACE, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_appendChild(pRoot, (IXMLDOMNode*)pCDataSec, NULL); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_get_nodeName(pCDataSec, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, szCDataNodeText ), "incorrect cdata node Name\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok( !lstrcmpW( str, L"#cdata-section" ), "incorrect cdata node Name\n"); SysFreeString(str); hr = IXMLDOMCDATASection_get_xml(pCDataSec, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, szCDataXML ), "incorrect cdata xml\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok( !lstrcmpW( str, L"" ), "incorrect cdata xml\n"); SysFreeString(str); /* test lastChild */ pNextChild = (IXMLDOMNode*)0x1; hr = IXMLDOMCDATASection_get_lastChild(pCDataSec, &pNextChild); - ok(hr == S_FALSE, "ret %08x\n", hr ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr ); ok(pNextChild == NULL, "pNextChild not NULL\n"); /* put data Tests */ hr = IXMLDOMCDATASection_put_data(pCDataSec, _bstr_("This &is a ; test <>\\")); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); /* Confirm XML text is good */ hr = IXMLDOMCDATASection_get_xml(pCDataSec, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("\\]]>") ), "incorrect xml string\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"\\]]>"), "incorrect xml string\n"); SysFreeString(str); /* Confirm we get the put_data Text back */ hr = IXMLDOMCDATASection_get_text(pCDataSec, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("This &is a ; test <>\\") ), "incorrect text string\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"This &is a ; test <>\\"), "incorrect text string\n"); SysFreeString(str); /* test length property */ hr = IXMLDOMCDATASection_get_length(pCDataSec, &len); - ok(hr == S_OK, "ret %08x\n", hr ); - ok(len == 21, "expected 21 got %d\n", len); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(len == 21, "expected 21 got %ld\n", len); /* test get data */ hr = IXMLDOMCDATASection_get_data(pCDataSec, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("This &is a ; test <>\\") ), "incorrect text string\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"This &is a ; test <>\\"), "incorrect text string\n"); SysFreeString(str); /* test substringData */ hr = IXMLDOMCDATASection_substringData(pCDataSec, 0, 4, NULL); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); /* test substringData - Invalid offset */ str = (void *)0xdeadbeef; hr = IXMLDOMCDATASection_substringData(pCDataSec, -1, 4, &str); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); ok( str == NULL, "incorrect string\n"); /* test substringData - Invalid offset */ str = (void *)0xdeadbeef; hr = IXMLDOMCDATASection_substringData(pCDataSec, 30, 0, &str); - ok(hr == S_FALSE, "ret %08x\n", hr ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr ); ok( str == NULL, "incorrect string\n"); /* test substringData - Invalid size */ str = (void *)0xdeadbeef; hr = IXMLDOMCDATASection_substringData(pCDataSec, 0, -1, &str); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); ok( str == NULL, "incorrect string\n"); /* test substringData - Invalid size */ str = (void *)0xdeadbeef; hr = IXMLDOMCDATASection_substringData(pCDataSec, 2, 0, &str); - ok(hr == S_FALSE, "ret %08x\n", hr ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr ); ok( str == NULL, "incorrect string\n"); /* test substringData - Start of string */ hr = IXMLDOMCDATASection_substringData(pCDataSec, 0, 4, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("This") ), "incorrect substringData string\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"This"), "incorrect substringData string\n"); SysFreeString(str); /* test substringData - Middle of string */ hr = IXMLDOMCDATASection_substringData(pCDataSec, 13, 4, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("test") ), "incorrect substringData string\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"test"), "incorrect substringData string\n"); SysFreeString(str); /* test substringData - End of string */ hr = IXMLDOMCDATASection_substringData(pCDataSec, 20, 4, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("\\") ), "incorrect substringData string\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"\\"), "incorrect substringData string\n"); SysFreeString(str); /* test appendData */ hr = IXMLDOMCDATASection_appendData(pCDataSec, NULL); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_appendData(pCDataSec, _bstr_("")); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_appendData(pCDataSec, _bstr_("Append")); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_get_text(pCDataSec, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("This &is a ; test <>\\Append") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"This &is a ; test <>\\Append"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* test insertData */ str = SysAllocStringLen(NULL, 0); hr = IXMLDOMCDATASection_insertData(pCDataSec, -1, str); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_insertData(pCDataSec, -1, NULL); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_insertData(pCDataSec, 1000, str); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_insertData(pCDataSec, 1000, NULL); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_insertData(pCDataSec, 0, NULL); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_insertData(pCDataSec, 0, str); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); SysFreeString(str); hr = IXMLDOMCDATASection_insertData(pCDataSec, -1, _bstr_("Inserting")); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_insertData(pCDataSec, 1000, _bstr_("Inserting")); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_insertData(pCDataSec, 0, _bstr_("Begin ")); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_insertData(pCDataSec, 17, _bstr_("Middle")); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_insertData(pCDataSec, 39, _bstr_(" End")); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_get_text(pCDataSec, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("Begin This &is a Middle; test <>\\Append End") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"Begin This &is a Middle; test <>\\Append End"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* delete data */ /* invalid arguments */ hr = IXMLDOMCDATASection_deleteData(pCDataSec, -1, 1); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_deleteData(pCDataSec, 0, 0); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_deleteData(pCDataSec, 0, -1); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\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); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(len == 43, "expected 43 got %ld\n", len); hr = IXMLDOMCDATASection_deleteData(pCDataSec, len, 1); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_deleteData(pCDataSec, len+1, 1); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); /* delete from start */ hr = IXMLDOMCDATASection_deleteData(pCDataSec, 0, 5); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\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); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(len == 38, "expected 38 got %ld\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, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L" This &is a Middle; test <>\\Append End"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* delete from end */ hr = IXMLDOMCDATASection_deleteData(pCDataSec, 35, 3); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\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); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(len == 35, "expected 35 got %ld\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, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L" This &is a Middle; test <>\\Append "), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* delete from inside */ hr = IXMLDOMCDATASection_deleteData(pCDataSec, 1, 33); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\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); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(len == 2, "expected 2 got %ld\n", len); hr = IXMLDOMCDATASection_get_text(pCDataSec, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_(" ") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L" "), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* delete whole data ... */ hr = IXMLDOMCDATASection_get_length(pCDataSec, &len); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_deleteData(pCDataSec, 0, len); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); /* ... and try again with empty string */ hr = IXMLDOMCDATASection_deleteData(pCDataSec, 0, len); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); /* ::replaceData() */ V_VT(&v) = VT_BSTR; - V_BSTR(&v) = SysAllocString(szstr1); + V_BSTR(&v) = SysAllocString(L"str1"); hr = IXMLDOMCDATASection_put_nodeValue(pCDataSec, v); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); VariantClear(&v); hr = IXMLDOMCDATASection_replaceData(pCDataSec, 6, 0, NULL); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_get_text(pCDataSec, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("str1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"str1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); hr = IXMLDOMCDATASection_replaceData(pCDataSec, 0, 0, NULL); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_get_text(pCDataSec, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("str1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"str1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* NULL pointer means delete */ hr = IXMLDOMCDATASection_replaceData(pCDataSec, 0, 1, NULL); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_get_text(pCDataSec, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("tr1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"tr1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* empty string means delete */ hr = IXMLDOMCDATASection_replaceData(pCDataSec, 0, 1, _bstr_("")); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_get_text(pCDataSec, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("r1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"r1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* zero count means insert */ hr = IXMLDOMCDATASection_replaceData(pCDataSec, 0, 0, _bstr_("a")); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_get_text(pCDataSec, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("ar1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"ar1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); hr = IXMLDOMCDATASection_replaceData(pCDataSec, 0, 2, NULL); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_insertData(pCDataSec, 0, _bstr_("m")); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_get_text(pCDataSec, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("m1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"m1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* nonempty string, count greater than its length */ hr = IXMLDOMCDATASection_replaceData(pCDataSec, 0, 2, _bstr_("a1.2")); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_get_text(pCDataSec, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("a1.2") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"a1.2"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); /* nonempty string, count less than its length */ hr = IXMLDOMCDATASection_replaceData(pCDataSec, 0, 1, _bstr_("wine")); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMCDATASection_get_text(pCDataSec, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, _bstr_("wine1.2") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(str, L"wine1.2"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); IXMLDOMCDATASection_Release(pCDataSec); @@ -6178,46 +6366,46 @@ static void test_xmlTypes(void) /* Document Fragments */ hr = IXMLDOMDocument_createDocumentFragment(doc, NULL); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMDocument_createDocumentFragment(doc, &pDocFrag); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); if(hr == S_OK) { IXMLDOMNode *node; hr = IXMLDOMDocumentFragment_get_parentNode(pDocFrag, NULL); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); node = (IXMLDOMNode *)0x1; hr = IXMLDOMDocumentFragment_get_parentNode(pDocFrag, &node); - ok(hr == S_FALSE, "ret %08x\n", hr ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr ); ok(node == NULL, "expected NULL, got %p\n", node); hr = IXMLDOMElement_appendChild(pRoot, (IXMLDOMNode*)pDocFrag, NULL); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMDocumentFragment_get_nodeName(pDocFrag, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, szDocFragmentText ), "incorrect docfragment node Name\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok( !lstrcmpW( str, L"#document-fragment" ), "incorrect docfragment node Name\n"); SysFreeString(str); /* test next Sibling*/ hr = IXMLDOMDocumentFragment_get_nextSibling(pDocFrag, NULL); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); node = (IXMLDOMNode *)0x1; hr = IXMLDOMDocumentFragment_get_nextSibling(pDocFrag, &node); - ok(hr == S_FALSE, "ret %08x\n", hr ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr ); ok(node == NULL, "next sibling not NULL\n"); /* test Previous Sibling*/ hr = IXMLDOMDocumentFragment_get_previousSibling(pDocFrag, NULL); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); node = (IXMLDOMNode *)0x1; hr = IXMLDOMDocumentFragment_get_previousSibling(pDocFrag, &node); - ok(hr == S_FALSE, "ret %08x\n", hr ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr ); ok(node == NULL, "previous sibling not NULL\n"); IXMLDOMDocumentFragment_Release(pDocFrag); @@ -6225,26 +6413,26 @@ static void test_xmlTypes(void) /* Entity References */ hr = IXMLDOMDocument_createEntityReference(doc, NULL, &pEntityRef); - ok(hr == E_FAIL, "ret %08x\n", hr ); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMDocument_createEntityReference(doc, _bstr_(""), &pEntityRef); - ok(hr == E_FAIL, "ret %08x\n", hr ); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr ); - str = SysAllocString(szEntityRef); + str = SysAllocString(L"entityref"); hr = IXMLDOMDocument_createEntityReference(doc, str, NULL); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMDocument_createEntityReference(doc, str, &pEntityRef); SysFreeString(str); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); if(hr == S_OK) { hr = IXMLDOMElement_appendChild(pRoot, (IXMLDOMNode*)pEntityRef, NULL); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); /* test get_xml*/ hr = IXMLDOMEntityReference_get_xml(pEntityRef, &str); - ok(hr == S_OK, "ret %08x\n", hr ); - ok( !lstrcmpW( str, szEntityRefXML ), "incorrect xml string\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok( !lstrcmpW( str, L"&entityref;" ), "incorrect xml string\n"); SysFreeString(str); IXMLDOMEntityReference_Release(pEntityRef); @@ -6320,28 +6508,28 @@ static void test_put_dataType( void ) doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_createElement(doc, _bstr_("Testing"), NULL); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_createElement(doc, _bstr_("Testing"), &root); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_appendChild(doc, (IXMLDOMNode*)root, NULL); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_put_dataType(root, NULL); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); while (ptr->name) { hr = IXMLDOMDocument_createElement(doc, _bstr_(ptr->name), &element); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); if(hr == S_OK) { hr = IXMLDOMElement_appendChild(root, (IXMLDOMNode*)element, NULL); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_put_dataType(element, _bstr_(ptr->type)); - ok(hr == ptr->hr, "failed for %s:%s, 0x%08x\n", ptr->name, ptr->type, ptr->hr); + ok(hr == ptr->hr, "failed for %s:%s, %#lx.\n", ptr->name, ptr->type, ptr->hr); IXMLDOMElement_Release(element); } @@ -6350,16 +6538,16 @@ static void test_put_dataType( void ) /* check changing types */ hr = IXMLDOMDocument_createElement(doc, _bstr_("Testing_Change"), &element); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_appendChild(root, (IXMLDOMNode*)element, NULL); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_put_dataType(element, _bstr_("DateTime.tz")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_put_dataType(element, _bstr_("string")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMElement_Release(element); @@ -6376,19 +6564,19 @@ static void test_put_dataType( void ) V_I2(&type) = ptr2->type; hr = IXMLDOMDocument_createNode(doc, type, nameW, NULL, &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); if(hr == S_OK) { hr = IXMLDOMElement_appendChild(root, node, NULL); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_put_dataType(node, NULL); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_put_dataType(node, type1W); - ok(hr == ptr2->hr, "failed for type %d, 0x%08x\n", ptr2->type, ptr->hr); + ok(hr == ptr2->hr, "failed for type %d, %#lx\n", ptr2->type, ptr->hr); hr = IXMLDOMNode_put_dataType(node, type2W); - ok(hr == ptr2->hr, "failed for type %d, 0x%08x\n", ptr2->type, ptr->hr); + ok(hr == ptr2->hr, "failed for type %d, %#lx\n", ptr2->type, ptr->hr); IXMLDOMNode_Release(node); } @@ -6402,7 +6590,9 @@ static void test_put_dataType( void ) static void test_save(void) { + static const char cheA[] = ""; IXMLDOMDocument *doc, *doc2; + IXMLDOMAttribute *attr; IXMLDOMElement *root; BSTR sOrig, sNew, filename; char buffer[100]; @@ -6410,7 +6600,7 @@ static void test_save(void) HGLOBAL global; VARIANT_BOOL b; DWORD read = 0; - VARIANT dest; + VARIANT v, dest; HANDLE hfile; HRESULT hr; char *ptr; @@ -6420,22 +6610,22 @@ static void test_save(void) /* save to IXMLDOMDocument */ hr = IXMLDOMDocument_createElement(doc, _bstr_("Testing"), &root); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_appendChild(doc, (IXMLDOMNode*)root, NULL); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_UNKNOWN; V_UNKNOWN(&dest) = (IUnknown*)doc2; hr = IXMLDOMDocument_save(doc, dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_get_xml(doc, &sOrig); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_get_xml(doc2, &sNew); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( !lstrcmpW( sOrig, sNew ), "New document is not the same as original\n"); @@ -6450,10 +6640,10 @@ static void test_save(void) V_BSTR(&dest) = _bstr_("test.xml"); hr = IXMLDOMDocument_save(doc, dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hfile = CreateFileA("test.xml", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); - ok(hfile != INVALID_HANDLE_VALUE, "Could not open file: %u\n", GetLastError()); + ok(hfile != INVALID_HANDLE_VALUE, "Could not open file: %lu\n", GetLastError()); if(hfile == INVALID_HANDLE_VALUE) return; ReadFile(hfile, buffer, sizeof(buffer), &read, NULL); @@ -6469,10 +6659,10 @@ static void test_save(void) V_BSTRREF(&dest) = &filename; hr = IXMLDOMDocument_save(doc, dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hfile = CreateFileA("test.xml", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); - ok(hfile != INVALID_HANDLE_VALUE, "Could not open file: %u\n", GetLastError()); + ok(hfile != INVALID_HANDLE_VALUE, "Could not open file: %lu\n", GetLastError()); if(hfile == INVALID_HANDLE_VALUE) return; if (hfile != INVALID_HANDLE_VALUE) @@ -6490,21 +6680,21 @@ static void test_save(void) V_UNKNOWN(&dest) = (IUnknown*)&savestream; hr = IXMLDOMDocument_save(doc, dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* loaded data contains xml declaration */ hr = IXMLDOMDocument_loadXML(doc, _bstr_(win1252xml), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_UNKNOWN; V_UNKNOWN(&dest) = (IUnknown*)stream; hr = IXMLDOMDocument_save(doc, dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = GetHGlobalFromStream(stream, &global); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ptr = GlobalLock(global); ok(!memcmp(ptr, win1252decl, strlen(win1252decl)), "got wrong xml declaration\n"); GlobalUnlock(global); @@ -6512,23 +6702,67 @@ static void test_save(void) /* loaded data without xml declaration */ hr = IXMLDOMDocument_loadXML(doc, _bstr_(""), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_UNKNOWN; V_UNKNOWN(&dest) = (IUnknown*)stream; hr = IXMLDOMDocument_save(doc, dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = GetHGlobalFromStream(stream, &global); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ptr = GlobalLock(global); ok(ptr[0] == '<' && ptr[1] != '?', "got wrong start tag %c%c\n", ptr[0], ptr[1]); GlobalUnlock(global); IStream_Release(stream); IXMLDOMDocument_Release(doc); + + /* test default encoding with non-english characters */ + doc = create_document(&IID_IXMLDOMDocument); + + hr = IXMLDOMDocument_createElement(doc, _bstr_("Testing"), &root); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMDocument_appendChild(doc, (IXMLDOMNode*)root, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMDocument_createAttribute(doc, _bstr_("che"), &attr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + V_VT(&v) = VT_BSTR; + V_BSTR(&v) = SysAllocString(L"\x0427"); + hr = IXMLDOMAttribute_put_value(attr, v); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + VariantClear(&v); + + hr = IXMLDOMElement_setAttributeNode(root, attr, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + V_VT(&dest) = VT_BSTR; + V_BSTR(&dest) = _bstr_("test.xml"); + + hr = IXMLDOMDocument_save(doc, dest); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hfile = CreateFileA("test.xml", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); + ok(hfile != INVALID_HANDLE_VALUE, "Could not open file: %lu\n", GetLastError()); + if (hfile != INVALID_HANDLE_VALUE) + { + ReadFile(hfile, buffer, sizeof(buffer), &read, NULL); + ok(read != 0, "could not read file\n"); + ok(!memcmp(buffer, cheA, sizeof(cheA)-1), "got: %s\n", buffer); + + CloseHandle(hfile); + DeleteFileA("test.xml"); + } + + IXMLDOMAttribute_Release(attr); + IXMLDOMElement_Release(root); + IXMLDOMDocument_Release(doc); + free_bstrs(); } @@ -6543,19 +6777,19 @@ static void test_testTransforms(void) docSS = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_loadXML(doc, _bstr_(szTransformXML), &bSucc); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMDocument_loadXML(docSS, _bstr_(szTransformSSXML), &bSucc); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMDocument_QueryInterface(docSS, &IID_IXMLDOMNode, (void**)&pNode ); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); if(hr == S_OK) { BSTR bOut; hr = IXMLDOMDocument_transformNode(doc, pNode, &bOut); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); if(hr == S_OK) { ok( compareIgnoreReturns( bOut, _bstr_(szTransformOutput)), "got output %s\n", wine_dbgstr_w(bOut)); @@ -6608,37 +6842,37 @@ static void test_namespaces_change(void) hr = CoCreateInstance(class_ptr->clsid, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument, (void**)&doc); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&var) = VT_I2; V_I2(&var) = NODE_ELEMENT; hr = IXMLDOMDocument_createNode(doc, var, _bstr_("ns:elem"), _bstr_("ns/uri"), &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_appendChild(doc, node, NULL); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_get_documentElement(doc, &elem); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* try same prefix, different uri */ V_VT(&var) = VT_BSTR; V_BSTR(&var) = _bstr_("ns/uri2"); hr = IXMLDOMElement_setAttribute(elem, _bstr_("xmlns:ns"), var); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); /* try same prefix and uri */ V_VT(&var) = VT_BSTR; V_BSTR(&var) = _bstr_("ns/uri"); hr = IXMLDOMElement_setAttribute(elem, _bstr_("xmlns:ns"), var); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_get_xml(elem, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(str, _bstr_("")), "got element %s for %s\n", + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L""), "got element %s for %s\n", wine_dbgstr_w(str), class_ptr->name); SysFreeString(str); @@ -6672,64 +6906,64 @@ static void test_namespaces_basic(void) doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_loadXML(doc, _bstr_(namespaces_xmlA), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "got %d\n", b); str = (void *)0xdeadbeef; hr = IXMLDOMDocument_get_namespaceURI(doc, &str); - EXPECT_HR(hr, S_FALSE); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(str == NULL, "got %p\n", str); hr = IXMLDOMDocument_selectSingleNode(doc, _bstr_("//XMI.content"), &node ); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); if(hr == S_OK) { IXMLDOMAttribute *attr; IXMLDOMNode *node2; hr = IXMLDOMNode_get_firstChild(node, &node2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(node2 != NULL, "got %p\n", node2); /* Test get_prefix */ hr = IXMLDOMNode_get_prefix(node2, NULL); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); /* NOTE: Need to test that arg2 gets cleared on Error. */ hr = IXMLDOMNode_get_prefix(node2, &str); - EXPECT_HR(hr, S_OK); - ok( !lstrcmpW( str, _bstr_("Model")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"Model"), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); hr = IXMLDOMNode_get_nodeName(node2, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW( str, _bstr_("Model:Package")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"Model:Package"), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); /* Test get_namespaceURI */ hr = IXMLDOMNode_get_namespaceURI(node2, NULL); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); /* NOTE: Need to test that arg2 gets cleared on Error. */ hr = IXMLDOMNode_get_namespaceURI(node2, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW( str, _bstr_("http://omg.org/mof.Model/1.3")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"http://omg.org/mof.Model/1.3"), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); hr = IXMLDOMNode_QueryInterface(node2, &IID_IXMLDOMElement, (void**)&elem); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_getAttributeNode(elem, _bstr_("Model:name2"), &attr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMAttribute_get_nodeName(attr, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW( str, _bstr_("Model:name2")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"Model:name2"), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); hr = IXMLDOMAttribute_get_prefix(attr, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW( str, _bstr_("Model")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"Model"), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); IXMLDOMAttribute_Release(attr); @@ -6757,17 +6991,17 @@ static void test_FormattingXML(void) doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_loadXML(doc, _bstr_(szLinefeedXML), &bSucc); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok(bSucc == VARIANT_TRUE, "Expected VARIANT_TRUE got VARIANT_FALSE\n"); if(bSucc == VARIANT_TRUE) { hr = IXMLDOMDocument_get_documentElement(doc, &pElement); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); if(hr == S_OK) { hr = IXMLDOMElement_get_xml(pElement, &str); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok( !lstrcmpW( str, _bstr_(szLinefeedRootXML) ), "incorrect element xml\n"); SysFreeString(str); @@ -6784,11 +7018,16 @@ typedef struct _nodetypedvalue_t { const char *name; VARTYPE type; const char *value; /* value in string format */ + BOOL no_type; } nodetypedvalue_t; static const nodetypedvalue_t get_nodetypedvalue[] = { - { "root/string", VT_BSTR, "Wine" }, - { "root/string2", VT_BSTR, "String" }, + { "root/string", VT_BSTR, "Wine", TRUE }, + { "root/string2", VT_BSTR, "String " }, + { "root/string3", VT_BSTR, " Wine Wine ", TRUE }, + { "root/string4", VT_BSTR, "\nWine Wine\t", TRUE }, + { "root/string5", VT_BSTR, "", TRUE }, + { "root/nested", VT_BSTR, " s1 \ns2 s2\t", TRUE }, { "root/number", VT_BSTR, "12.44" }, { "root/number2", VT_BSTR, "-3.71e3" }, { "root/int", VT_I4, "-13" }, @@ -6815,6 +7054,24 @@ static const nodetypedvalue_t get_nodetypedvalue[] = { { 0 } }; +static const char *strip_spaces(const char *str) +{ + static char buf[256]; + const char *p; + + while (isspace(*str)) + ++str; + + p = str + strlen(str); + while (p != str && isspace(p[-1])) + --p; + + memcpy(buf, str, p - str); + buf[p - str] = 0; + + return buf; +} + static void test_nodeTypedValue(void) { const nodetypedvalue_t *entry = get_nodetypedvalue; @@ -6833,47 +7090,47 @@ static void test_nodeTypedValue(void) b = VARIANT_FALSE; hr = IXMLDOMDocument_loadXML(doc, _bstr_(szTypeValueXML), &b); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok(b == VARIANT_TRUE, "got %d\n", b); hr = IXMLDOMDocument_get_nodeValue(doc, NULL); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); V_VT(&value) = VT_BSTR; V_BSTR(&value) = NULL; hr = IXMLDOMDocument_get_nodeValue(doc, &value); - ok(hr == S_FALSE, "ret %08x\n", hr ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr ); ok(V_VT(&value) == VT_NULL, "expect VT_NULL got %d\n", V_VT(&value)); hr = IXMLDOMDocument_get_nodeTypedValue(doc, NULL); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); V_VT(&value) = VT_EMPTY; hr = IXMLDOMDocument_get_nodeTypedValue(doc, &value); - ok(hr == S_FALSE, "ret %08x\n", hr ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr ); ok(V_VT(&value) == VT_NULL, "got %d\n", V_VT(&value)); hr = IXMLDOMDocument_selectSingleNode(doc, _bstr_("root/string"), &node); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); V_VT(&value) = VT_BSTR; V_BSTR(&value) = NULL; hr = IXMLDOMNode_get_nodeValue(node, &value); - ok(hr == S_FALSE, "ret %08x\n", hr ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr ); ok(V_VT(&value) == VT_NULL, "expect VT_NULL got %d\n", V_VT(&value)); hr = IXMLDOMNode_get_nodeTypedValue(node, NULL); - ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr ); IXMLDOMNode_Release(node); hr = IXMLDOMDocument_selectSingleNode(doc, _bstr_("root/binhex"), &node); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); { BYTE bytes[] = {0xff,0xfc,0xa0,0x12,0x00,0x3c}; hr = IXMLDOMNode_get_nodeTypedValue(node, &value); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok(V_VT(&value) == (VT_ARRAY|VT_UI1), "incorrect type\n"); ok(V_ARRAY(&value)->rgsabound[0].cElements == 6, "incorrect array size\n"); if(V_ARRAY(&value)->rgsabound[0].cElements == 6) @@ -6883,50 +7140,50 @@ static void test_nodeTypedValue(void) } hr = IXMLDOMDocument_createProcessingInstruction(doc, _bstr_("foo"), _bstr_("value"), &pi); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); { V_VT(&value) = VT_NULL; V_BSTR(&value) = (void*)0xdeadbeef; hr = IXMLDOMProcessingInstruction_get_nodeTypedValue(pi, &value); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok(V_VT(&value) == VT_BSTR, "got %d\n", V_VT(&value)); - ok(!lstrcmpW(V_BSTR(&value), _bstr_("value")), "got wrong value\n"); + ok(!lstrcmpW(V_BSTR(&value), L"value"), "got wrong value\n"); IXMLDOMProcessingInstruction_Release(pi); VariantClear(&value); } hr = IXMLDOMDocument_createCDATASection(doc, _bstr_("[1]*2=3; &gee that's not right!"), &cdata); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); { V_VT(&value) = VT_NULL; V_BSTR(&value) = (void*)0xdeadbeef; hr = IXMLDOMCDATASection_get_nodeTypedValue(cdata, &value); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok(V_VT(&value) == VT_BSTR, "got %d\n", V_VT(&value)); - ok(!lstrcmpW(V_BSTR(&value), _bstr_("[1]*2=3; &gee that's not right!")), "got wrong value\n"); + ok(!lstrcmpW(V_BSTR(&value), L"[1]*2=3; &gee that's not right!"), "got wrong value\n"); IXMLDOMCDATASection_Release(cdata); VariantClear(&value); } hr = IXMLDOMDocument_createComment(doc, _bstr_("comment"), &comment); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); { V_VT(&value) = VT_NULL; V_BSTR(&value) = (void*)0xdeadbeef; hr = IXMLDOMComment_get_nodeTypedValue(comment, &value); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok(V_VT(&value) == VT_BSTR, "got %d\n", V_VT(&value)); - ok(!lstrcmpW(V_BSTR(&value), _bstr_("comment")), "got wrong value\n"); + ok(!lstrcmpW(V_BSTR(&value), L"comment"), "got wrong value\n"); IXMLDOMComment_Release(comment); VariantClear(&value); } hr = IXMLDOMDocument_createDocumentFragment(doc, &frag); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); { V_VT(&value) = VT_EMPTY; hr = IXMLDOMDocumentFragment_get_nodeTypedValue(frag, &value); - ok(hr == S_FALSE, "ret %08x\n", hr ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr ); ok(V_VT(&value) == VT_NULL, "got %d\n", V_VT(&value)); IXMLDOMDocumentFragment_Release(frag); } @@ -6935,13 +7192,13 @@ static void test_nodeTypedValue(void) b = VARIANT_FALSE; hr = IXMLDOMDocument_loadXML(doc2, _bstr_(szEmailXML), &b); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok(b == VARIANT_TRUE, "got %d\n", b); EXPECT_REF(doc2, 1); hr = IXMLDOMDocument_get_doctype(doc2, &doctype); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); EXPECT_REF(doc2, 1); todo_wine EXPECT_REF(doctype, 2); @@ -6949,12 +7206,12 @@ static void test_nodeTypedValue(void) { V_VT(&value) = VT_EMPTY; hr = IXMLDOMDocumentType_get_nodeTypedValue(doctype, &value); - ok(hr == S_FALSE, "ret %08x\n", hr ); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr ); ok(V_VT(&value) == VT_NULL, "got %d\n", V_VT(&value)); } hr = IXMLDOMDocument_get_doctype(doc2, &doctype2); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok(doctype != doctype2, "got %p, was %p\n", doctype2, doctype); IXMLDOMDocumentType_Release(doctype2); @@ -6965,16 +7222,16 @@ static void test_nodeTypedValue(void) while (entry->name) { hr = IXMLDOMDocument_selectSingleNode(doc, _bstr_(entry->name), &node); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMNode_get_nodeTypedValue(node, &value); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok(V_VT(&value) == entry->type, "incorrect type, expected %d, got %d\n", entry->type, V_VT(&value)); if (entry->type == (VT_ARRAY|VT_UI1)) { ok(V_ARRAY(&value)->rgsabound[0].cElements == strlen(entry->value), - "incorrect array size %d\n", V_ARRAY(&value)->rgsabound[0].cElements); + "incorrect array size %ld\n", V_ARRAY(&value)->rgsabound[0].cElements); } if (entry->type != VT_BSTR) @@ -6986,17 +7243,17 @@ static void test_nodeTypedValue(void) if (entry->type == VT_DATE) { hr = VariantChangeType(&value, &value, 0, VT_R4); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); } hr = VariantChangeTypeEx(&value, &value, MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT), SORT_DEFAULT), VARIANT_NOUSEROVERRIDE, VT_BSTR); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); } else { hr = VariantChangeType(&value, &value, 0, VT_BSTR); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); } /* for byte array from VT_ARRAY|VT_UI1 it's not a WCHAR buffer */ @@ -7010,8 +7267,46 @@ static void test_nodeTypedValue(void) "expected %s, got %s\n", entry->value, wine_dbgstr_w(V_BSTR(&value))); } else - ok(lstrcmpW( V_BSTR(&value), _bstr_(entry->value)) == 0, - "expected %s, got %s\n", entry->value, wine_dbgstr_w(V_BSTR(&value))); + { + BSTR bstr, expected; + + expected = entry->no_type ? _bstr_(strip_spaces(entry->value)) : _bstr_(entry->value); + ok(!wcscmp( V_BSTR(&value), expected ), "expected %s, got %s\n", + debugstr_w(expected), wine_dbgstr_w(V_BSTR(&value))); + if (entry->no_type) + { + VariantClear( &value ); + + hr = IXMLDOMDocument_get_preserveWhiteSpace(doc, &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(b == VARIANT_FALSE, "got %d\n", b); + + hr = IXMLDOMNode_get_text(node, &bstr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!wcscmp( bstr, expected ), "expected %s, got %s\n", + debugstr_w(expected), wine_dbgstr_w(bstr)); + SysFreeString(bstr); + + hr = IXMLDOMDocument_put_preserveWhiteSpace(doc, VARIANT_TRUE); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + + expected = _bstr_(entry->value); + hr = IXMLDOMNode_get_text(node, &bstr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!wcscmp( bstr, expected ), "expected %s, got %s\n", + debugstr_w(expected), wine_dbgstr_w(bstr)); + SysFreeString(bstr); + + hr = IXMLDOMNode_get_nodeTypedValue(node, &value); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(V_VT(&value) == entry->type, "incorrect type, expected %d, got %d\n", entry->type, V_VT(&value)); + ok(!wcscmp( V_BSTR(&value), expected ), "expected %s, got %s\n", + debugstr_w(expected), wine_dbgstr_w(V_BSTR(&value))); + + hr = IXMLDOMDocument_put_preserveWhiteSpace(doc, VARIANT_FALSE); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + } + } VariantClear( &value ); IXMLDOMNode_Release(node); @@ -7040,7 +7335,7 @@ static void test_TransformWithLoadingLocalFile(void) strcat(lpPathBuffer, "customers.xml" ); file = CreateFileA(lpPathBuffer, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ); - ok(file != INVALID_HANDLE_VALUE, "Could not create file: %u\n", GetLastError()); + ok(file != INVALID_HANDLE_VALUE, "Could not create file: %lu\n", GetLastError()); if(file == INVALID_HANDLE_VALUE) return; @@ -7058,7 +7353,7 @@ static void test_TransformWithLoadingLocalFile(void) xsl = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_loadXML(doc, _bstr_(szTypeValueXML), &bSucc); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok(bSucc == VARIANT_TRUE, "Expected VARIANT_TRUE got VARIANT_FALSE\n"); if(bSucc == VARIANT_TRUE) { @@ -7074,19 +7369,19 @@ static void test_TransformWithLoadingLocalFile(void) lstrcatW(sXSL, sPart2); hr = IXMLDOMDocument_loadXML(xsl, sXSL, &bSucc); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); ok(bSucc == VARIANT_TRUE, "Expected VARIANT_TRUE got VARIANT_FALSE\n"); if(bSucc == VARIANT_TRUE) { BSTR sResult; hr = IXMLDOMDocument_QueryInterface(xsl, &IID_IXMLDOMNode, (void**)&pNode ); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); if(hr == S_OK) { /* This will load the temp file via the XSL */ hr = IXMLDOMDocument_transformNode(doc, pNode, &sResult); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); if(hr == S_OK) { ok( compareIgnoreReturns( sResult, _bstr_(szBasicTransformOutput)), "Stylesheet output not correct\n"); @@ -7109,7 +7404,6 @@ static void test_TransformWithLoadingLocalFile(void) static void test_put_nodeValue(void) { - static const WCHAR jeevesW[] = {'J','e','e','v','e','s',' ','&',' ','W','o','o','s','t','e','r',0}; IXMLDOMDocument *doc; IXMLDOMText *text; IXMLDOMEntityReference *entityref; @@ -7123,72 +7417,71 @@ static void test_put_nodeValue(void) /* test for unsupported types */ /* NODE_DOCUMENT */ hr = IXMLDOMDocument_QueryInterface(doc, &IID_IXMLDOMNode, (void**)&node); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); V_VT(&data) = VT_BSTR; V_BSTR(&data) = _bstr_("one two three"); hr = IXMLDOMNode_put_nodeValue(node, data); - ok(hr == E_FAIL, "ret %08x\n", hr ); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr ); IXMLDOMNode_Release(node); /* NODE_DOCUMENT_FRAGMENT */ V_VT(&type) = VT_I1; V_I1(&type) = NODE_DOCUMENT_FRAGMENT; hr = IXMLDOMDocument_createNode(doc, type, _bstr_("test"), NULL, &node); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); V_VT(&data) = VT_BSTR; V_BSTR(&data) = _bstr_("one two three"); hr = IXMLDOMNode_put_nodeValue(node, data); - ok(hr == E_FAIL, "ret %08x\n", hr ); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr ); IXMLDOMNode_Release(node); /* NODE_ELEMENT */ V_VT(&type) = VT_I1; V_I1(&type) = NODE_ELEMENT; hr = IXMLDOMDocument_createNode(doc, type, _bstr_("test"), NULL, &node); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); V_VT(&data) = VT_BSTR; V_BSTR(&data) = _bstr_("one two three"); hr = IXMLDOMNode_put_nodeValue(node, data); - ok(hr == E_FAIL, "ret %08x\n", hr ); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr ); IXMLDOMNode_Release(node); /* NODE_ENTITY_REFERENCE */ hr = IXMLDOMDocument_createEntityReference(doc, _bstr_("ref"), &entityref); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); V_VT(&data) = VT_BSTR; V_BSTR(&data) = _bstr_("one two three"); hr = IXMLDOMEntityReference_put_nodeValue(entityref, data); - ok(hr == E_FAIL, "ret %08x\n", hr ); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMEntityReference_QueryInterface(entityref, &IID_IXMLDOMNode, (void**)&node); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); V_VT(&data) = VT_BSTR; V_BSTR(&data) = _bstr_("one two three"); hr = IXMLDOMNode_put_nodeValue(node, data); - ok(hr == E_FAIL, "ret %08x\n", hr ); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr ); IXMLDOMNode_Release(node); IXMLDOMEntityReference_Release(entityref); /* supported types */ hr = IXMLDOMDocument_createTextNode(doc, _bstr_(""), &text); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); V_VT(&data) = VT_BSTR; V_BSTR(&data) = _bstr_("Jeeves & Wooster"); hr = IXMLDOMText_put_nodeValue(text, data); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); IXMLDOMText_Release(text); hr = IXMLDOMDocument_createAttribute(doc, _bstr_("attr"), &attr); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); V_VT(&data) = VT_BSTR; V_BSTR(&data) = _bstr_("Jeeves & Wooster"); hr = IXMLDOMAttribute_put_nodeValue(attr, data); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMAttribute_get_nodeValue(attr, &data); - ok(hr == S_OK, "ret %08x\n", hr ); - ok(memcmp(V_BSTR(&data), jeevesW, sizeof(jeevesW)) == 0, "got %s\n", - wine_dbgstr_w(V_BSTR(&data))); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); + ok(!lstrcmpW(V_BSTR(&data), L"Jeeves & Wooster"), "got %s\n", wine_dbgstr_w(V_BSTR(&data))); VariantClear(&data); IXMLDOMAttribute_Release(attr); @@ -7206,7 +7499,7 @@ static void test_IObjectSafety(void) doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_QueryInterface(doc, &IID_IObjectSafety, (void**)&safety); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); test_IObjectSafety_common(safety); @@ -7215,7 +7508,7 @@ static void test_IObjectSafety(void) hr = CoCreateInstance(&CLSID_XMLHTTPRequest, NULL, CLSCTX_INPROC_SERVER, &IID_IObjectSafety, (void**)&safety); - ok(hr == S_OK, "Could not create XMLHTTPRequest instance: %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); test_IObjectSafety_common(safety); @@ -7256,10 +7549,10 @@ static void test_default_properties(void) } hr = CoCreateInstance(entry->guid, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument2, (void**)&doc); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument2_getProperty(doc, _bstr_(entry->property), &var); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(lstrcmpW(V_BSTR(&var), _bstr_(entry->value)) == 0, "expected %s, for %s\n", entry->value, entry->clsid); VariantClear(&var); @@ -7388,36 +7681,37 @@ static void test_XSLPattern(void) b = VARIANT_FALSE; hr = IXMLDOMDocument2_loadXML(doc, _bstr_(szExampleXML), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML string\n"); /* switch to XSLPattern */ hr = IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionLanguage"), _variantbstr_("XSLPattern")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* XPath doesn't select elements with non-null default namespace with unqualified selectors, XSLPattern does */ hr = IXMLDOMDocument2_selectNodes(doc, _bstr_("//elem/c"), &list); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = 0; hr = IXMLDOMNodeList_get_length(list, &len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* should select and but not */ - ok(len == 3, "expected 3 entries in list, got %d\n", len); + ok(len == 3, "expected 3 entries in list, got %ld\n", len); IXMLDOMNodeList_Release(list); while (ptr->query) { list = NULL; hr = IXMLDOMDocument2_selectNodes(doc, _bstr_(ptr->query), &list); - ok(hr == S_OK, "query=%s, failed with 0x%08x\n", ptr->query, hr); + ok(hr == S_OK, "query=%s, failed with %#lx\n", ptr->query, hr); len = 0; hr = IXMLDOMNodeList_get_length(list, &len); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(len != 0, "query=%s, empty list\n", ptr->query); if (len) { if (ptr->todo) { char *str = list_to_string(list); - todo_wine + todo_wine ok(!strcmp(str, ptr->list), "Invalid node list: %s, expected %s\n", str, ptr->list); IXMLDOMNodeList_Release(list); } @@ -7431,27 +7725,27 @@ static void test_XSLPattern(void) /* namespace handling */ /* no registered namespaces */ hr = IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionNamespaces"), _variantbstr_("")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ptr = xslpattern_test_no_ns; while (ptr->query) { list = NULL; hr = IXMLDOMDocument2_selectNodes(doc, _bstr_(ptr->query), &list); - ok(hr == S_OK, "query=%s, failed with 0x%08x\n", ptr->query, hr); + ok(hr == S_OK, "query=%s, failed with %#lx.\n", ptr->query, hr); if (*ptr->list) { len = 0; hr = IXMLDOMNodeList_get_length(list, &len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(len != 0, "query=%s, empty list\n", ptr->query); } else { len = 1; hr = IXMLDOMNodeList_get_length(list, &len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(len == 0, "query=%s, empty list\n", ptr->query); } if (len) @@ -7461,28 +7755,30 @@ static void test_XSLPattern(void) } /* explicitly register prefix foo */ - ole_check(IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionNamespaces"), _variantbstr_("xmlns:foo='urn:uuid:86B2F87F-ACB6-45cd-8B77-9BDB92A01A29'"))); + hr = IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionNamespaces"), + _variantbstr_("xmlns:foo='urn:uuid:86B2F87F-ACB6-45cd-8B77-9BDB92A01A29'")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* now we get the same behavior as XPath */ hr = IXMLDOMDocument2_selectNodes(doc, _bstr_("//foo:c"), &list); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = 0; hr = IXMLDOMNodeList_get_length(list, &len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(len != 0, "expected filled list\n"); if (len) expect_list_and_release(list, "E3.E3.E2.D1 E3.E4.E2.D1"); /* set prefix foo to some nonexistent namespace */ hr = IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionNamespaces"), _variantbstr_("xmlns:foo='urn:nonexistent-foo'")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* the registered prefix takes precedence */ hr = IXMLDOMDocument2_selectNodes(doc, _bstr_("//foo:c"), &list); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = 0; hr = IXMLDOMNodeList_get_length(list, &len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(len == 0, "expected empty list\n"); IXMLDOMNodeList_Release(list); @@ -7491,7 +7787,7 @@ static void test_XSLPattern(void) doc = create_document(&IID_IXMLDOMDocument2); hr = IXMLDOMDocument2_loadXML(doc, _bstr_(szNodeTypesXML), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML string\n"); ptr = xslpattern_test_func; @@ -7501,10 +7797,10 @@ static void test_XSLPattern(void) hr = IXMLDOMDocument2_selectNodes(doc, _bstr_(ptr->query), &list); if (ptr->list) { - ok(hr == S_OK, "query=%s, failed with 0x%08x\n", ptr->query, hr); + ok(hr == S_OK, "query=%s, failed with %#lx.\n", ptr->query, hr); len = 0; hr = IXMLDOMNodeList_get_length(list, &len); - ok(hr == S_OK, "Failed to get list length, hr %#x.\n", hr); + ok(hr == S_OK, "Failed to get list length, hr %#lx.\n", hr); if (*ptr->list) { ok(len != 0, "query=%s, empty list\n", ptr->query); @@ -7515,7 +7811,7 @@ static void test_XSLPattern(void) ok(len == 0, "query=%s, filled list\n", ptr->query); } else - ok(hr == E_FAIL, "query=%s, failed with 0x%08x\n", ptr->query, hr); + ok(hr == E_FAIL, "query=%s, failed with %#lx.\n", ptr->query, hr); ptr++; } @@ -7539,100 +7835,100 @@ static void test_splitText(void) doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_loadXML(doc, _bstr_(""), &success); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_get_documentElement(doc, &root); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_createCDATASection(doc, _bstr_("beautiful plumage"), &cdata); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&var) = VT_EMPTY; hr = IXMLDOMElement_appendChild(root, (IXMLDOMNode*)cdata, NULL); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); length = 0; hr = IXMLDOMCDATASection_get_length(cdata, &length); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(length > 0, "got %d\n", length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length > 0, "got %ld\n", length); hr = IXMLDOMCDATASection_splitText(cdata, 0, NULL); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); text = (void*)0xdeadbeef; /* negative offset */ hr = IXMLDOMCDATASection_splitText(cdata, -1, &text); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok(text == (void*)0xdeadbeef, "got %p\n", text); text = (void*)0xdeadbeef; /* offset outside data */ hr = IXMLDOMCDATASection_splitText(cdata, length + 1, &text); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok(text == 0, "got %p\n", text); text = (void*)0xdeadbeef; /* offset outside data */ hr = IXMLDOMCDATASection_splitText(cdata, length, &text); - ok(hr == S_FALSE, "got 0x%08x\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(text == 0, "got %p\n", text); /* no empty node created */ node = (void*)0xdeadbeef; hr = IXMLDOMCDATASection_get_nextSibling(cdata, &node); - ok(hr == S_FALSE, "got 0x%08x\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(node == 0, "got %p\n", text); hr = IXMLDOMCDATASection_splitText(cdata, 10, &text); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); length = 0; hr = IXMLDOMText_get_length(text, &length); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(length == 7, "got %d\n", length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 7, "got %ld\n", length); hr = IXMLDOMCDATASection_get_nextSibling(cdata, &node); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(node); /* split new text node */ hr = IXMLDOMText_get_length(text, &length); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); node = (void*)0xdeadbeef; hr = IXMLDOMText_get_nextSibling(text, &node); - ok(hr == S_FALSE, "got 0x%08x\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(node == 0, "got %p\n", text); hr = IXMLDOMText_splitText(text, 0, NULL); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); text2 = (void*)0xdeadbeef; /* negative offset */ hr = IXMLDOMText_splitText(text, -1, &text2); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok(text2 == (void*)0xdeadbeef, "got %p\n", text2); text2 = (void*)0xdeadbeef; /* offset outside data */ hr = IXMLDOMText_splitText(text, length + 1, &text2); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok(text2 == 0, "got %p\n", text2); text2 = (void*)0xdeadbeef; /* offset outside data */ hr = IXMLDOMText_splitText(text, length, &text2); - ok(hr == S_FALSE, "got 0x%08x\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(text2 == 0, "got %p\n", text); text2 = 0; hr = IXMLDOMText_splitText(text, 4, &text2); - todo_wine ok(hr == S_OK, "got 0x%08x\n", hr); + todo_wine ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); if (text2) IXMLDOMText_Release(text2); node = 0; hr = IXMLDOMText_get_nextSibling(text, &node); - todo_wine ok(hr == S_OK, "got 0x%08x\n", hr); + todo_wine ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); if (node) IXMLDOMNode_Release(node); IXMLDOMText_Release(text); @@ -7683,65 +7979,65 @@ static void test_getQualifiedItem(void) doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b ); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( b == VARIANT_TRUE, "failed to load XML string\n"); hr = IXMLDOMDocument_get_documentElement(doc, &element); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_get_childNodes(element, &root_list); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNodeList_get_item(root_list, 1, &pr_node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNodeList_Release(root_list); hr = IXMLDOMNode_get_attributes(pr_node, &map); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(pr_node); len = 0; hr = IXMLDOMNamedNodeMap_get_length(map, &len); - EXPECT_HR(hr, S_OK); - ok( len == 3, "length %d\n", len); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok( len == 3, "length %ld\n", len); hr = IXMLDOMNamedNodeMap_getQualifiedItem(map, NULL, NULL, NULL); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); node = (void*)0xdeadbeef; hr = IXMLDOMNamedNodeMap_getQualifiedItem(map, NULL, NULL, &node); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok( node == (void*)0xdeadbeef, "got %p\n", node); hr = IXMLDOMNamedNodeMap_getQualifiedItem(map, _bstr_("id"), NULL, NULL); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNamedNodeMap_getQualifiedItem(map, _bstr_("id"), NULL, &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(node); IXMLDOMNamedNodeMap_Release(map); IXMLDOMElement_Release(element); hr = IXMLDOMDocument_loadXML(doc, _bstr_(default_ns_doc), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_selectSingleNode(doc, _bstr_("a"), &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMElement, (void**)&element); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(node); hr = IXMLDOMElement_get_attributes(element, &map); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ptr = qualified_item_tests; while (ptr->name) { node = (void*)0xdeadbeef; hr = IXMLDOMNamedNodeMap_getQualifiedItem(map, _bstr_(ptr->name), _bstr_(ptr->uri), &node); - ok(hr == ptr->hr, "%s, %s: got 0x%08x, expected 0x%08x\n", ptr->name, ptr->uri, hr, ptr->hr); + ok(hr == ptr->hr, "%s, %s: unexpected hr %#lx, expected %#lx.\n", ptr->name, ptr->uri, hr, ptr->hr); if (hr == S_OK) IXMLDOMNode_Release(node); else @@ -7754,7 +8050,7 @@ static void test_getQualifiedItem(void) { node = (void*)0xdeadbeef; hr = IXMLDOMNamedNodeMap_getNamedItem(map, _bstr_(ptr->name), &node); - ok(hr == ptr->hr, "%s: got 0x%08x, expected 0x%08x\n", ptr->name, hr, ptr->hr); + ok(hr == ptr->hr, "%s: unexpected hr %#lx, expected %#lx.\n", ptr->name, hr, ptr->hr); if (hr == S_OK) IXMLDOMNode_Release(node); else @@ -7787,41 +8083,41 @@ static void test_removeQualifiedItem(void) ok( b == VARIANT_TRUE, "failed to load XML string\n"); hr = IXMLDOMDocument_get_documentElement(doc, &element); - ok( hr == S_OK, "ret %08x\n", hr); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_get_childNodes(element, &root_list); - ok( hr == S_OK, "ret %08x\n", hr); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNodeList_get_item(root_list, 1, &pr_node); - ok( hr == S_OK, "ret %08x\n", hr); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNodeList_Release(root_list); hr = IXMLDOMNode_get_attributes(pr_node, &map); - ok( hr == S_OK, "ret %08x\n", hr); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(pr_node); hr = IXMLDOMNamedNodeMap_get_length(map, &len); - ok( hr == S_OK, "ret %08x\n", hr); - ok( len == 3, "length %d\n", len); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok( len == 3, "length %ld\n", len); hr = IXMLDOMNamedNodeMap_removeQualifiedItem(map, NULL, NULL, NULL); - ok( hr == E_INVALIDARG, "ret %08x\n", hr); + ok( hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); node = (void*)0xdeadbeef; hr = IXMLDOMNamedNodeMap_removeQualifiedItem(map, NULL, NULL, &node); - ok( hr == E_INVALIDARG, "ret %08x\n", hr); + ok( hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok( node == (void*)0xdeadbeef, "got %p\n", node); /* out pointer is optional */ hr = IXMLDOMNamedNodeMap_removeQualifiedItem(map, _bstr_("id"), NULL, NULL); - ok( hr == S_OK, "ret %08x\n", hr); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); /* already removed */ hr = IXMLDOMNamedNodeMap_removeQualifiedItem(map, _bstr_("id"), NULL, NULL); - ok( hr == S_FALSE, "ret %08x\n", hr); + ok( hr == S_FALSE, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNamedNodeMap_removeQualifiedItem(map, _bstr_("vr"), NULL, &node); - ok( hr == S_OK, "ret %08x\n", hr); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(node); IXMLDOMNamedNodeMap_Release( map ); @@ -7838,19 +8134,21 @@ static inline void _check_default_props(int line, IXMLDOMDocument2* doc) HRESULT hr; VariantInit(&var); - helper_ole_check(IXMLDOMDocument2_getProperty(doc, _bstr_("SelectionLanguage"), &var)); - ok_(__FILE__, line)(lstrcmpW(V_BSTR(&var), _bstr_("XSLPattern")) == 0, "expected XSLPattern\n"); + hr = IXMLDOMDocument2_getProperty(doc, _bstr_("SelectionLanguage"), &var); + ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); VariantClear(&var); - helper_ole_check(IXMLDOMDocument2_getProperty(doc, _bstr_("SelectionNamespaces"), &var)); - ok_(__FILE__, line)(lstrcmpW(V_BSTR(&var), _bstr_("")) == 0, "expected empty string\n"); + hr = IXMLDOMDocument2_getProperty(doc, _bstr_("SelectionNamespaces"), &var); + ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok_(__FILE__, line)(lstrcmpW(V_BSTR(&var), L"") == 0, "expected empty string\n"); VariantClear(&var); - helper_ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc, &b)); + hr = IXMLDOMDocument2_get_preserveWhiteSpace(doc, &b); + ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok_(__FILE__, line)(b == VARIANT_FALSE, "expected FALSE\n"); hr = IXMLDOMDocument2_get_schemas(doc, &var); - ok_(__FILE__, line)(hr == S_FALSE, "got %08x\n", hr); + ok_(__FILE__, line)(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); VariantClear(&var); } @@ -7859,20 +8157,25 @@ static inline void _check_set_props(int line, IXMLDOMDocument2* doc) { VARIANT_BOOL b; VARIANT var; + HRESULT hr; VariantInit(&var); - helper_ole_check(IXMLDOMDocument2_getProperty(doc, _bstr_("SelectionLanguage"), &var)); - ok_(__FILE__, line)(lstrcmpW(V_BSTR(&var), _bstr_("XPath")) == 0, "expected XPath\n"); + hr = IXMLDOMDocument2_getProperty(doc, _bstr_("SelectionLanguage"), &var); + ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok_(__FILE__, line)(lstrcmpW(V_BSTR(&var), L"XPath") == 0, "expected XPath\n"); VariantClear(&var); - helper_ole_check(IXMLDOMDocument2_getProperty(doc, _bstr_("SelectionNamespaces"), &var)); - ok_(__FILE__, line)(lstrcmpW(V_BSTR(&var), _bstr_("xmlns:wi=\'www.winehq.org\'")) == 0, "got %s\n", wine_dbgstr_w(V_BSTR(&var))); + hr = IXMLDOMDocument2_getProperty(doc, _bstr_("SelectionNamespaces"), &var); + ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok_(__FILE__, line)(lstrcmpW(V_BSTR(&var), L"xmlns:wi=\'www.winehq.org\'") == 0, "got %s\n", wine_dbgstr_w(V_BSTR(&var))); VariantClear(&var); - helper_ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc, &b)); + hr = IXMLDOMDocument2_get_preserveWhiteSpace(doc, &b); + ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok_(__FILE__, line)(b == VARIANT_TRUE, "expected TRUE\n"); - helper_ole_check(IXMLDOMDocument2_get_schemas(doc, &var)); + hr = IXMLDOMDocument2_get_schemas(doc, &var); + ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok_(__FILE__, line)(V_VT(&var) != VT_NULL, "expected pointer\n"); VariantClear(&var); } @@ -7881,16 +8184,22 @@ static inline void _check_set_props(int line, IXMLDOMDocument2* doc) static inline void _set_props(int line, IXMLDOMDocument2* doc, IXMLDOMSchemaCollection* cache) { VARIANT var; + HRESULT hr; VariantInit(&var); - helper_ole_check(IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionLanguage"), _variantbstr_("XPath"))); - helper_ole_check(IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionNamespaces"), _variantbstr_("xmlns:wi=\'www.winehq.org\'"))); - helper_ole_check(IXMLDOMDocument2_put_preserveWhiteSpace(doc, VARIANT_TRUE)); + hr = IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionLanguage"), _variantbstr_("XPath")); + ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionNamespaces"), _variantbstr_("xmlns:wi=\'www.winehq.org\'")); + ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument2_put_preserveWhiteSpace(doc, VARIANT_TRUE); + ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&var) = VT_DISPATCH; V_DISPATCH(&var) = NULL; - helper_ole_check(IXMLDOMSchemaCollection_QueryInterface(cache, &IID_IDispatch, (void**)&V_DISPATCH(&var))); + hr = IXMLDOMSchemaCollection_QueryInterface(cache, &IID_IDispatch, (void**)&V_DISPATCH(&var)); + ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok_(__FILE__, line)(V_DISPATCH(&var) != NULL, "expected pointer\n"); - helper_ole_check(IXMLDOMDocument2_putref_schemas(doc, var)); + hr = IXMLDOMDocument2_putref_schemas(doc, var); + ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); VariantClear(&var); } @@ -7898,13 +8207,18 @@ static inline void _set_props(int line, IXMLDOMDocument2* doc, IXMLDOMSchemaColl static inline void _unset_props(int line, IXMLDOMDocument2* doc) { VARIANT var; + HRESULT hr; VariantInit(&var); - helper_ole_check(IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionLanguage"), _variantbstr_("XSLPattern"))); - helper_ole_check(IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionNamespaces"), _variantbstr_(""))); - helper_ole_check(IXMLDOMDocument2_put_preserveWhiteSpace(doc, VARIANT_FALSE)); + hr = IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionLanguage"), _variantbstr_("XSLPattern")); + ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionNamespaces"), _variantbstr_("")); + ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument2_put_preserveWhiteSpace(doc, VARIANT_FALSE); + ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&var) = VT_NULL; - helper_ole_check(IXMLDOMDocument2_putref_schemas(doc, var)); + hr = IXMLDOMDocument2_putref_schemas(doc, var); + ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); VariantClear(&var); } @@ -7938,7 +8252,8 @@ static void test_get_ownerDocument(void) VariantInit(&var); - ole_check(IXMLDOMDocument2_loadXML(doc, _bstr_(complete4A), &b)); + hr = IXMLDOMDocument2_loadXML(doc, _bstr_(complete4A), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML string\n"); check_default_props(doc); @@ -7947,32 +8262,40 @@ static void test_get_ownerDocument(void) set_props(doc, cache); check_set_props(doc); - ole_check(IXMLDOMDocument2_get_firstChild(doc, &node)); - ole_check(IXMLDOMNode_get_ownerDocument(node, &doc1)); + hr = IXMLDOMDocument2_get_firstChild(doc, &node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNode_get_ownerDocument(node, &doc1); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* new interface keeps props */ - ole_check(IXMLDOMDocument_QueryInterface(doc1, &IID_IXMLDOMDocument2, (void**)&doc_owner)); + hr = IXMLDOMDocument_QueryInterface(doc1, &IID_IXMLDOMDocument2, (void**)&doc_owner); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( doc_owner != doc, "got %p, doc %p\n", doc_owner, doc); check_set_props(doc_owner); IXMLDOMDocument2_Release(doc_owner); - ole_check(IXMLDOMNode_get_ownerDocument(node, &doc2)); + hr = IXMLDOMNode_get_ownerDocument(node, &doc2); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(node); ok(doc1 != doc2, "got %p, expected %p. original %p\n", doc2, doc1, doc); /* reload */ - ole_check(IXMLDOMDocument2_loadXML(doc, _bstr_(complete4A), &b)); + hr = IXMLDOMDocument2_loadXML(doc, _bstr_(complete4A), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML string\n"); /* properties retained even after reload */ check_set_props(doc); - ole_check(IXMLDOMDocument2_get_firstChild(doc, &node)); - ole_check(IXMLDOMNode_get_ownerDocument(node, &doc3)); + hr = IXMLDOMDocument2_get_firstChild(doc, &node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNode_get_ownerDocument(node, &doc3); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(node); - ole_check(IXMLDOMDocument_QueryInterface(doc3, &IID_IXMLDOMDocument2, (void**)&doc_owner)); + hr = IXMLDOMDocument_QueryInterface(doc3, &IID_IXMLDOMDocument2, (void**)&doc_owner); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(doc3 != doc1 && doc3 != doc2 && doc_owner != doc, "got %p, (%p, %p, %p)\n", doc3, doc, doc1, doc2); check_set_props(doc_owner); @@ -7983,24 +8306,24 @@ static void test_get_ownerDocument(void) /* NULL check */ hr = IXMLDOMDocument_loadXML(doc1, _bstr_(nodeXML), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML string\n"); hr = IXMLDOMDocument_get_documentElement(doc1, &element); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_get_childNodes(element, &node_list); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNodeList_get_length(node_list, &len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); for(i = 0; i < len; i++) { hr = IXMLDOMNodeList_get_item(node_list, i, &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_ownerDocument(node, NULL); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(node); } @@ -8008,17 +8331,17 @@ static void test_get_ownerDocument(void) /* Test Attribute Node */ hr = IXMLDOMNodeList_get_item(node_list, 2, &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMElement, (void**)&element); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(node); hr = IXMLDOMElement_getAttributeNode(element, _bstr_("attr"), &attr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(attr != NULL, "attr == NULL\n"); IXMLDOMElement_Release(element); hr = IXMLDOMAttribute_get_ownerDocument(attr, NULL); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); IXMLDOMAttribute_Release(attr); IXMLDOMNodeList_Release(node_list); @@ -8027,7 +8350,7 @@ static void test_get_ownerDocument(void) IXMLDOMDocument_Release(doc2); IXMLDOMDocument_Release(doc3); IXMLDOMDocument2_Release(doc); - //IXMLDOMDocument2_Release(doc_owner); FIXME: double-free! + IXMLDOMDocument2_Release(doc_owner); free_bstrs(); } @@ -8049,32 +8372,32 @@ static void test_setAttributeNode(void) ok( b == VARIANT_TRUE, "failed to load XML string\n"); hr = IXMLDOMDocument_get_documentElement(doc, &elem); - ok( hr == S_OK, "got 0x%08x\n", hr); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_get_documentElement(doc, &elem2); - ok( hr == S_OK, "got 0x%08x\n", hr); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( elem2 != elem, "got same instance\n"); ret_attr = (void*)0xdeadbeef; hr = IXMLDOMElement_setAttributeNode(elem, NULL, &ret_attr); - ok( hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok( hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok( ret_attr == (void*)0xdeadbeef, "got %p\n", ret_attr); hr = IXMLDOMDocument_createAttribute(doc, _bstr_("attr"), &attr); - ok( hr == S_OK, "got 0x%08x\n", hr); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); ref1 = IXMLDOMElement_AddRef(elem); IXMLDOMElement_Release(elem); ret_attr = (void*)0xdeadbeef; hr = IXMLDOMElement_setAttributeNode(elem, attr, &ret_attr); - ok( hr == S_OK, "got 0x%08x\n", hr); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( ret_attr == NULL, "got %p\n", ret_attr); /* no reference added */ ref2 = IXMLDOMElement_AddRef(elem); IXMLDOMElement_Release(elem); - ok(ref2 == ref1, "got %d, expected %d\n", ref2, ref1); + ok(ref2 == ref1, "got %ld, expected %ld\n", ref2, ref1); EXPECT_CHILDREN(elem); EXPECT_CHILDREN(elem2); @@ -8083,24 +8406,24 @@ static void test_setAttributeNode(void) attr2 = NULL; hr = IXMLDOMElement_getAttributeNode(elem, _bstr_("attr"), &attr2); - ok( hr == S_OK, "got 0x%08x\n", hr); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( attr2 != attr, "got same instance %p\n", attr2); IXMLDOMAttribute_Release(attr2); /* try to add it another time */ ret_attr = (void*)0xdeadbeef; hr = IXMLDOMElement_setAttributeNode(elem, attr, &ret_attr); - ok( hr == E_FAIL, "got 0x%08x\n", hr); + ok( hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok( ret_attr == (void*)0xdeadbeef, "got %p\n", ret_attr); IXMLDOMElement_Release(elem); /* initially used element is released, attribute still 'has' a container */ hr = IXMLDOMDocument_get_documentElement(doc, &elem); - ok( hr == S_OK, "got 0x%08x\n", hr); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); ret_attr = (void*)0xdeadbeef; hr = IXMLDOMElement_setAttributeNode(elem, attr, &ret_attr); - ok( hr == E_FAIL, "got 0x%08x\n", hr); + ok( hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok( ret_attr == (void*)0xdeadbeef, "got %p\n", ret_attr); IXMLDOMElement_Release(elem); @@ -8112,20 +8435,20 @@ static void test_setAttributeNode(void) ok( b == VARIANT_TRUE, "failed to load XML string\n"); hr = IXMLDOMDocument_get_documentElement(doc2, &elem); - ok( hr == S_OK, "got 0x%08x\n", hr); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_setAttributeNode(elem, attr, NULL); - ok( hr == E_FAIL, "got 0x%08x\n", hr); + ok( hr == E_FAIL, "Unexpected hr %#lx.\n", hr); IXMLDOMElement_Release(elem); IXMLDOMAttribute_Release(attr); /* create element, add attribute, see if it's copied or linked */ hr = IXMLDOMDocument_createElement(doc, _bstr_("test"), &elem); - ok( hr == S_OK, "got 0x%08x\n", hr); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); attr = NULL; hr = IXMLDOMDocument_createAttribute(doc, _bstr_("attr"), &attr); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(attr != NULL, "got %p\n", attr); ref1 = IXMLDOMAttribute_AddRef(attr); @@ -8134,39 +8457,39 @@ static void test_setAttributeNode(void) V_VT(&v) = VT_BSTR; V_BSTR(&v) = _bstr_("attrvalue1"); hr = IXMLDOMAttribute_put_nodeValue(attr, v); - ok( hr == S_OK, "got 0x%08x\n", hr); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); str = NULL; hr = IXMLDOMAttribute_get_xml(attr, &str); - ok( hr == S_OK, "got 0x%08x\n", hr); - ok( lstrcmpW(str, _bstr_("attr=\"attrvalue1\"")) == 0, + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(lstrcmpW(str, L"attr=\"attrvalue1\"") == 0, "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); ret_attr = (void*)0xdeadbeef; hr = IXMLDOMElement_setAttributeNode(elem, attr, &ret_attr); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(ret_attr == NULL, "got %p\n", ret_attr); /* attribute reference increased */ ref2 = IXMLDOMAttribute_AddRef(attr); IXMLDOMAttribute_Release(attr); - ok(ref1 == ref2, "got %d, expected %d\n", ref2, ref1); + ok(ref1 == ref2, "got %ld, expected %ld\n", ref2, ref1); hr = IXMLDOMElement_get_xml(elem, &str); - ok( hr == S_OK, "got 0x%08x\n", hr); - ok( lstrcmpW(str, _bstr_("")) == 0, + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(lstrcmpW(str, L"") == 0, "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); V_VT(&v) = VT_BSTR; V_BSTR(&v) = _bstr_("attrvalue2"); hr = IXMLDOMAttribute_put_nodeValue(attr, v); - ok( hr == S_OK, "got 0x%08x\n", hr); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_get_xml(elem, &str); - ok( hr == S_OK, "got 0x%08x\n", hr); - todo_wine ok( lstrcmpW(str, _bstr_("")) == 0, + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); + todo_wine ok(lstrcmpW(str, L"") == 0, "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); @@ -8193,18 +8516,18 @@ static void test_createNode(void) /* reference count tests */ hr = IXMLDOMDocument_createElement(doc, _bstr_("elem"), &elem); - ok( hr == S_OK, "got 0x%08x\n", hr); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); /* initial reference is 2 */ todo_wine { EXPECT_REF(elem, 2); ref = IXMLDOMElement_Release(elem); - ok(ref == 1, "got %d\n", ref); + ok(ref == 1, "got %ld\n", ref); /* it's released already, attempt to release now will crash it */ } hr = IXMLDOMDocument_createElement(doc, _bstr_("elem"), &elem); - ok( hr == S_OK, "got 0x%08x\n", hr); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine EXPECT_REF(elem, 2); IXMLDOMDocument_Release(doc); todo_wine EXPECT_REF(elem, 2); @@ -8218,40 +8541,40 @@ todo_wine { V_I4(&v) = NODE_ELEMENT; hr = IXMLDOMDocument_createNode(doc, v, _bstr_("ns1:test"), _bstr_("http://winehq.org"), &node); - ok( hr == S_OK, "got 0x%08x\n", hr); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); prefix = NULL; hr = IXMLDOMNode_get_prefix(node, &prefix); - ok( hr == S_OK, "got 0x%08x\n", hr); - ok(lstrcmpW(prefix, _bstr_("ns1")) == 0, "wrong prefix\n"); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(lstrcmpW(prefix, L"ns1") == 0, "wrong prefix\n"); SysFreeString(prefix); IXMLDOMNode_Release(node); /* 2. default namespace */ hr = IXMLDOMDocument_createNode(doc, v, _bstr_("test"), _bstr_("http://winehq.org/default"), &node); - ok( hr == S_OK, "got 0x%08x\n", hr); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); prefix = (void*)0xdeadbeef; hr = IXMLDOMNode_get_prefix(node, &prefix); - ok( hr == S_FALSE, "got 0x%08x\n", hr); + ok( hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(prefix == 0, "expected empty prefix, got %p\n", prefix); /* check dump */ hr = IXMLDOMNode_get_xml(node, &str); - ok( hr == S_OK, "got 0x%08x\n", hr); - ok( lstrcmpW(str, _bstr_("")) == 0, + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(lstrcmpW(str, L"") == 0, "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMElement, (void**)&elem); - ok( hr == S_OK, "got 0x%08x\n", hr); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&var) = VT_BSTR; hr = IXMLDOMElement_getAttribute(elem, _bstr_("xmlns"), &var); - ok( hr == S_FALSE, "got 0x%08x\n", hr); + ok( hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok( V_VT(&var) == VT_NULL, "got %d\n", V_VT(&var)); str = NULL; hr = IXMLDOMElement_get_namespaceURI(elem, &str); - ok( hr == S_OK, "got 0x%08x\n", hr); - ok( lstrcmpW(str, _bstr_("http://winehq.org/default")) == 0, "expected default namespace\n"); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(lstrcmpW(str, L"http://winehq.org/default") == 0, "expected default namespace\n"); SysFreeString(str); IXMLDOMElement_Release(elem); @@ -8282,96 +8605,96 @@ static void test_get_prefix(void) /* 1. document */ str = (void*)0xdeadbeef; hr = IXMLDOMDocument_get_prefix(doc, &str); - EXPECT_HR(hr, S_FALSE); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(str == NULL, "got %p\n", str); hr = IXMLDOMDocument_get_prefix(doc, NULL); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); /* 2. cdata */ hr = IXMLDOMDocument_createCDATASection(doc, NULL, &cdata); - ok(hr == S_OK, "got %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); str = (void*)0xdeadbeef; hr = IXMLDOMCDATASection_get_prefix(cdata, &str); - ok(hr == S_FALSE, "got %08x\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok( str == 0, "got %p\n", str); hr = IXMLDOMCDATASection_get_prefix(cdata, NULL); - ok(hr == E_INVALIDARG, "got %08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); IXMLDOMCDATASection_Release(cdata); /* 3. comment */ hr = IXMLDOMDocument_createComment(doc, NULL, &comment); - ok(hr == S_OK, "got %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); str = (void*)0xdeadbeef; hr = IXMLDOMComment_get_prefix(comment, &str); - ok(hr == S_FALSE, "got %08x\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok( str == 0, "got %p\n", str); hr = IXMLDOMComment_get_prefix(comment, NULL); - ok(hr == E_INVALIDARG, "got %08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); IXMLDOMComment_Release(comment); /* 4. fragment */ hr = IXMLDOMDocument_createDocumentFragment(doc, &fragment); - ok(hr == S_OK, "got %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); str = (void*)0xdeadbeef; hr = IXMLDOMDocumentFragment_get_prefix(fragment, &str); - ok(hr == S_FALSE, "got %08x\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok( str == 0, "got %p\n", str); hr = IXMLDOMDocumentFragment_get_prefix(fragment, NULL); - ok(hr == E_INVALIDARG, "got %08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); IXMLDOMDocumentFragment_Release(fragment); /* no prefix */ hr = IXMLDOMDocument_createElement(doc, _bstr_("elem"), &element); - ok( hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_get_prefix(element, NULL); - ok( hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); str = (void*)0xdeadbeef; hr = IXMLDOMElement_get_prefix(element, &str); - ok( hr == S_FALSE, "got 0x%08x\n", hr); - ok( str == 0, "got %p\n", str); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + ok(str == 0, "got %p\n", str); IXMLDOMElement_Release(element); /* with prefix */ hr = IXMLDOMDocument_createElement(doc, _bstr_("a:elem"), &element); - ok( hr == S_OK, "got 0x%08x\n", hr); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); str = (void*)0xdeadbeef; hr = IXMLDOMElement_get_prefix(element, &str); - ok( hr == S_OK, "got 0x%08x\n", hr); - ok( lstrcmpW(str, _bstr_("a")) == 0, "expected prefix \"a\"\n"); + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(lstrcmpW(str, L"a") == 0, "expected prefix \"a\"\n"); SysFreeString(str); str = (void*)0xdeadbeef; hr = IXMLDOMElement_get_namespaceURI(element, &str); - ok( hr == S_FALSE, "got 0x%08x\n", hr); + ok( hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok( str == 0, "got %p\n", str); IXMLDOMElement_Release(element); hr = IXMLDOMDocument_loadXML(doc, _bstr_(get_prefix_doc), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_get_documentElement(doc, &element); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); str = (void*)0xdeadbeef; hr = IXMLDOMElement_get_prefix(element, &str); - EXPECT_HR(hr, S_FALSE); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(str == NULL, "got %p\n", str); str = (void*)0xdeadbeef; hr = IXMLDOMElement_get_namespaceURI(element, &str); - EXPECT_HR(hr, S_FALSE); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(str == NULL, "got %s\n", wine_dbgstr_w(str)); IXMLDOMDocument_Release(doc); @@ -8390,52 +8713,52 @@ static void test_selectSingleNode(void) doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_selectSingleNode(doc, NULL, NULL); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_selectNodes(doc, NULL, NULL); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_loadXML( doc, _bstr_(complete4A), &b ); ok( hr == S_OK, "loadXML failed\n"); ok( b == VARIANT_TRUE, "failed to load XML string\n"); hr = IXMLDOMDocument_selectSingleNode(doc, NULL, NULL); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_selectNodes(doc, NULL, NULL); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_selectSingleNode(doc, _bstr_("lc"), NULL); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_selectNodes(doc, _bstr_("lc"), NULL); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_selectSingleNode(doc, _bstr_("lc"), &node); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(node); hr = IXMLDOMDocument_selectNodes(doc, _bstr_("lc"), &list); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNodeList_Release(list); list = (void*)0xdeadbeef; hr = IXMLDOMDocument_selectNodes(doc, NULL, &list); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok(list == (void*)0xdeadbeef, "got %p\n", list); node = (void*)0xdeadbeef; hr = IXMLDOMDocument_selectSingleNode(doc, _bstr_("nonexistent"), &node); - ok(hr == S_FALSE, "got 0x%08x\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(node == 0, "got %p\n", node); list = (void*)0xdeadbeef; hr = IXMLDOMDocument_selectNodes(doc, _bstr_("nonexistent"), &list); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = 1; hr = IXMLDOMNodeList_get_length(list, &len); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(len == 0, "got %d\n", len); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(len == 0, "got %ld\n", len); IXMLDOMNodeList_Release(list); IXMLDOMDocument_Release(doc); @@ -8454,16 +8777,16 @@ static void test_events(void) doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_QueryInterface(doc, &IID_IConnectionPointContainer, (void**)&conn); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IConnectionPointContainer_FindConnectionPoint(conn, &IID_IDispatch, &point); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IConnectionPoint_Release(point); hr = IConnectionPointContainer_FindConnectionPoint(conn, &IID_IPropertyNotifySink, &point); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IConnectionPoint_Release(point); hr = IConnectionPointContainer_FindConnectionPoint(conn, &DIID_XMLDOMDocumentEvents, &point); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IConnectionPoint_Release(point); IConnectionPointContainer_Release(conn); @@ -8471,40 +8794,40 @@ static void test_events(void) /* ready state callback */ VariantInit(&v); hr = IXMLDOMDocument_put_onreadystatechange(doc, v); - ok(hr == DISP_E_TYPEMISMATCH, "got 0x%08x\n", hr); + ok(hr == DISP_E_TYPEMISMATCH, "Unexpected hr %#lx.\n", hr); event = create_dispevent(); V_VT(&v) = VT_UNKNOWN; V_UNKNOWN(&v) = (IUnknown*)event; hr = IXMLDOMDocument_put_onreadystatechange(doc, v); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(event, 2); V_VT(&v) = VT_DISPATCH; V_DISPATCH(&v) = event; hr = IXMLDOMDocument_put_onreadystatechange(doc, v); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(event, 2); /* VT_NULL doesn't reset event handler */ V_VT(&v) = VT_NULL; hr = IXMLDOMDocument_put_onreadystatechange(doc, v); - ok(hr == DISP_E_TYPEMISMATCH, "got 0x%08x\n", hr); + ok(hr == DISP_E_TYPEMISMATCH, "Unexpected hr %#lx.\n", hr); EXPECT_REF(event, 2); V_VT(&v) = VT_DISPATCH; V_DISPATCH(&v) = NULL; hr = IXMLDOMDocument_put_onreadystatechange(doc, v); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(event, 1); V_VT(&v) = VT_UNKNOWN; V_DISPATCH(&v) = NULL; hr = IXMLDOMDocument_put_onreadystatechange(doc, v); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IDispatch_Release(event); @@ -8513,23 +8836,170 @@ static void test_events(void) static void test_createProcessingInstruction(void) { - static const WCHAR bodyW[] = {'t','e','s','t',0}; + static const WCHAR xml1[] = L"\r\n\r\n"; + static const char xml2[] = "\r\n\r\n"; + static const char xml2_wine[] = "\n\n"; + static const char xml3[] = "\r\n\r\n"; + static const char xml3_wine[] = "\n\n"; IXMLDOMProcessingInstruction *pi; IXMLDOMDocument *doc; + IXMLDOMNode *node, *item; + IXMLDOMNamedNodeMap *node_map; + IXMLDOMElement *element; WCHAR buff[10]; + BSTR xml, bstr; + VARIANT var; HRESULT hr; + IStream *stream; + LARGE_INTEGER off; + VARIANT_BOOL b; + HGLOBAL global; + char *p; doc = create_document(&IID_IXMLDOMDocument); + hr = IXMLDOMDocument_createProcessingInstruction(doc, _bstr_("xml"), _bstr_("version=\"1.0\" encoding=\"windows-1252\" dummy=\"value\""), &pi); + ok(hr == XML_E_UNEXPECTED_ATTRIBUTE, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument_createProcessingInstruction(doc, NULL, _bstr_("version=\"1.0\" encoding=\"UTF-8\""), &pi); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument_createProcessingInstruction(doc, _bstr_("xml"), NULL, &pi); + ok(hr == XML_E_XMLDECLSYNTAX, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument_createProcessingInstruction(doc, _bstr_("xml"), _bstr_("version=\"1.0\" encoding=UTF-8"), &pi); + ok(hr == XML_E_MISSINGQUOTE, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument_createProcessingInstruction(doc, _bstr_("xml"), _bstr_("version=\"1.0\" encoding='UTF-8\""), &pi); + ok(hr == XML_E_BADCHARINSTRING, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument_createProcessingInstruction(doc, _bstr_("xml"), _bstr_("version=\"1.0\" encoding=\"UTF-8"), &pi); + ok(hr == XML_E_BADCHARINSTRING, "Unexpected hr %#lx.\n", hr); + pi = NULL; + hr = IXMLDOMDocument_createProcessingInstruction(doc, _bstr_("xml"), _bstr_("version=\"1.0\" encoding='UTF-8'"), &pi); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMProcessingInstruction_QueryInterface(pi, &IID_IXMLDOMNode, (void **)&node); + node_map = NULL; + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNode_get_attributes(node, &node_map); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + IXMLDOMNamedNodeMap_Release(node_map); + IXMLDOMNode_Release(node); + IXMLDOMProcessingInstruction_Release(pi); + /* test for BSTR handling, pass broken BSTR */ - memcpy(&buff[2], bodyW, sizeof(bodyW)); + memcpy(&buff[2], L"test", 5 * sizeof(WCHAR)); /* just a big length */ *(DWORD*)buff = 0xf0f0; hr = IXMLDOMDocument_createProcessingInstruction(doc, _bstr_("test"), &buff[2], &pi); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMProcessingInstruction_Release(pi); IXMLDOMDocument_Release(doc); + + doc = create_document(&IID_IXMLDOMDocument); + + hr = IXMLDOMDocument_createProcessingInstruction(doc, _bstr_("xml"), _bstr_("version=\"1.0\" encoding=\"windows-1252\""), &pi); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMProcessingInstruction_QueryInterface(pi, &IID_IXMLDOMNode, (void **)&node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument_appendChild(doc, node, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMNode_get_attributes(node, &node_map); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + item = (void *)0xdeadbeef; + hr = IXMLDOMNamedNodeMap_getNamedItem(node_map, _bstr_("xml"), &item); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + ok(!item, "got %p\n", item); + + item = NULL; + hr = IXMLDOMNamedNodeMap_getNamedItem(node_map, _bstr_("encoding"), &item); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(item != NULL, "got NULL\n"); + + hr = IXMLDOMNode_get_nodeName(item, &bstr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(bstr, L"encoding"), "got %s\n", wine_dbgstr_w(bstr)); + SysFreeString(bstr); + + VariantInit(&var); + hr = IXMLDOMNode_get_nodeValue(item, &var); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(V_VT(&var) == VT_BSTR, "got %u\n", V_VT(&var)); + ok(!lstrcmpW(V_BSTR(&var), L"windows-1252"), "got %s\n", wine_dbgstr_w(V_BSTR(&var))); + VariantClear(&var); + + IXMLDOMNamedNodeMap_Release(node_map); + IXMLDOMNode_Release(node); + IXMLDOMProcessingInstruction_Release(pi); + + hr = IXMLDOMDocument_createElement(doc, _bstr_("test"), &element); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument_appendChild(doc, (IXMLDOMNode *)element, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + IXMLDOMElement_Release(element); + + hr = IXMLDOMDocument_get_xml(doc, &xml); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + todo_wine + ok(!wcscmp(xml, xml1), "got %s\n", wine_dbgstr_w(xml)); + SysFreeString(xml); + + hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + V_VT(&var) = VT_UNKNOWN; + V_UNKNOWN(&var) = (IUnknown*)stream; + hr = IXMLDOMDocument_save(doc, var); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = GetHGlobalFromStream(stream, &global); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + p = GlobalLock(global); + ok(!memcmp(p, xml2, sizeof(xml2) - 1) || !memcmp(p, xml2_wine, sizeof(xml2_wine) - 1), "got %s\n", wine_dbgstr_a(p)); + GlobalUnlock(global); + + /* Verify the result after load+save */ + off.QuadPart = 0; + hr = IStream_Seek(stream, off, STREAM_SEEK_SET, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMDocument_load(doc, var, &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(b == VARIANT_TRUE, "got %d\n", b); + + off.QuadPart = 0; + hr = IStream_Seek(stream, off, STREAM_SEEK_SET, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMDocument_save(doc, var); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = GetHGlobalFromStream(stream, &global); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + p = GlobalLock(global); + ok(!memcmp(p, xml2, sizeof(xml2) - 1) || !memcmp(p, xml2_wine, sizeof(xml2_wine) - 1), "got %s\n", wine_dbgstr_a(p)); + GlobalUnlock(global); + + IStream_Release(stream); + + hr = IXMLDOMDocument_loadXML(doc, _bstr_("\r\n\r\n"), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(b == VARIANT_TRUE, "got %d\n", b); + + hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + V_VT(&var) = VT_UNKNOWN; + V_UNKNOWN(&var) = (IUnknown*)stream; + hr = IXMLDOMDocument_save(doc, var); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = GetHGlobalFromStream(stream, &global); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + p = GlobalLock(global); + ok(!memcmp(p, xml3, sizeof(xml3) - 1) || !memcmp(p, xml3_wine, sizeof(xml3_wine) - 1), "got %s\n", wine_dbgstr_a(p)); + GlobalUnlock(global); + + IStream_Release(stream); + IXMLDOMDocument_Release(doc); } static void test_put_nodeTypedValue(void) @@ -8549,66 +9019,92 @@ static void test_put_nodeTypedValue(void) doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_createElement(doc, _bstr_("Element"), &elem); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&type) = VT_EMPTY; hr = IXMLDOMElement_get_dataType(elem, &type); - EXPECT_HR(hr, S_FALSE); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(V_VT(&type) == VT_NULL, "got %d, expected VT_NULL\n", V_VT(&type)); /* set typed value for untyped node */ V_VT(&type) = VT_I1; V_I1(&type) = 1; hr = IXMLDOMElement_put_nodeTypedValue(elem, type); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&type) = VT_EMPTY; hr = IXMLDOMElement_get_dataType(elem, &type); - EXPECT_HR(hr, S_FALSE); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(V_VT(&type) == VT_NULL, "got %d, expected VT_NULL\n", V_VT(&type)); /* no type info stored */ V_VT(&type) = VT_EMPTY; hr = IXMLDOMElement_get_nodeTypedValue(elem, &type); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&type) == VT_BSTR, "got %d, expected VT_BSTR\n", V_VT(&type)); - ok(memcmp(V_BSTR(&type), _bstr_("1"), 2*sizeof(WCHAR)) == 0, + ok(memcmp(V_BSTR(&type), L"1", 2*sizeof(WCHAR)) == 0, "got %s, expected \"1\"\n", wine_dbgstr_w(V_BSTR(&type))); VariantClear(&type); + /* int */ + hr = IXMLDOMElement_put_dataType(elem, _bstr_("int")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + V_VT(&value) = VT_BSTR; + V_BSTR(&value) = _bstr_("1"); + hr = IXMLDOMElement_put_nodeTypedValue(elem, value); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + V_VT(&value) = VT_EMPTY; + hr = IXMLDOMElement_get_nodeTypedValue(elem, &value); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(V_VT(&value) == VT_I4, "got %d\n", V_VT(&value)); + ok(V_I4(&value) == 1, "got %ld\n", V_I4(&value)); + + V_VT(&value) = VT_I2; + V_I2(&value) = -1; + hr = IXMLDOMElement_put_nodeTypedValue(elem, value); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + V_VT(&value) = VT_EMPTY; + hr = IXMLDOMElement_get_nodeTypedValue(elem, &value); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(V_VT(&value) == VT_I4, "got %d\n", V_VT(&value)); + ok(V_I4(&value) == -1, "got %ld\n", V_I4(&value)); + hr = IXMLDOMElement_get_firstChild(elem, &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_removeChild(elem, node, NULL); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(node); hr = IXMLDOMDocument_appendChild(doc, (IXMLDOMNode*)elem, NULL); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* bin.base64 */ hr = IXMLDOMElement_put_dataType(elem, _bstr_("bin.base64")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&value) = VT_BSTR; V_BSTR(&value) = _bstr_("ABCD"); hr = IXMLDOMElement_put_nodeTypedValue(elem, value); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&value) = VT_EMPTY; hr = IXMLDOMElement_get_nodeTypedValue(elem, &value); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&value) == (VT_UI1|VT_ARRAY), "got %d\n", V_VT(&value)); ok(SafeArrayGetDim(V_ARRAY(&value)) == 1, "got wrong dimension\n"); ubound = 0; hr = SafeArrayGetUBound(V_ARRAY(&value), 1, &ubound); - EXPECT_HR(hr, S_OK); - ok(ubound == 2, "got %d\n", ubound); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(ubound == 2, "got %ld\n", ubound); lbound = 0; hr = SafeArrayGetLBound(V_ARRAY(&value), 1, &lbound); - EXPECT_HR(hr, S_OK); - ok(lbound == 0, "got %d\n", lbound); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(lbound == 0, "got %ld\n", lbound); hr = SafeArrayAccessData(V_ARRAY(&value), (void*)&ptr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(ptr[0] == 0, "got %x\n", ptr[0]); ok(ptr[1] == 0x10, "got %x\n", ptr[1]); ok(ptr[2] == 0x83, "got %x\n", ptr[2]); @@ -8617,49 +9113,49 @@ static void test_put_nodeTypedValue(void) /* when set as VT_BSTR it's stored as is */ hr = IXMLDOMElement_get_firstChild(elem, &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_text(node, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(str, _bstr_("ABCD")), "%s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"ABCD"), "%s\n", wine_dbgstr_w(str)); IXMLDOMNode_Release(node); SysFreeString(str); array = SafeArrayCreateVector(VT_UI1, 0, 7); hr = SafeArrayAccessData(array, (void*)&ptr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); memcpy(ptr, "dGVzdA=", strlen("dGVzdA=")); SafeArrayUnaccessData(array); V_VT(&value) = VT_UI1|VT_ARRAY; V_ARRAY(&value) = array; hr = IXMLDOMElement_put_nodeTypedValue(elem, value); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&value) = VT_EMPTY; hr = IXMLDOMElement_get_nodeTypedValue(elem, &value); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&value) == (VT_UI1|VT_ARRAY), "got %d\n", V_VT(&value)); ok(SafeArrayGetDim(V_ARRAY(&value)) == 1, "got wrong dimension\n"); ubound = 0; hr = SafeArrayGetUBound(V_ARRAY(&value), 1, &ubound); - EXPECT_HR(hr, S_OK); - ok(ubound == 6, "got %d\n", ubound); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(ubound == 6, "got %ld\n", ubound); lbound = 0; hr = SafeArrayGetLBound(V_ARRAY(&value), 1, &lbound); - EXPECT_HR(hr, S_OK); - ok(lbound == 0, "got %d\n", lbound); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(lbound == 0, "got %ld\n", lbound); hr = SafeArrayAccessData(V_ARRAY(&value), (void*)&ptr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!memcmp(ptr, "dGVzdA=", strlen("dGVzdA=")), "got wrong data, %s\n", ptr); SafeArrayUnaccessData(V_ARRAY(&value)); VariantClear(&value); /* if set with VT_UI1|VT_ARRAY it's encoded */ hr = IXMLDOMElement_get_firstChild(elem, &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_text(node, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(str, _bstr_("ZEdWemRBPQ==")), "%s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"ZEdWemRBPQ=="), "%s\n", wine_dbgstr_w(str)); IXMLDOMNode_Release(node); SafeArrayDestroyData(array); SysFreeString(str); @@ -8668,47 +9164,47 @@ static void test_put_nodeTypedValue(void) V_VT(&value) = VT_BSTR; V_BSTR(&value) = _bstr_(""); hr = IXMLDOMElement_put_nodeTypedValue(elem, value); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_put_dataType(elem, _bstr_("bin.hex")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); array = SafeArrayCreateVector(VT_UI1, 0, 16); hr = SafeArrayAccessData(array, (void*)&ptr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); memcpy(ptr, binhexdata, sizeof(binhexdata)); SafeArrayUnaccessData(array); V_VT(&value) = VT_UI1|VT_ARRAY; V_ARRAY(&value) = array; hr = IXMLDOMElement_put_nodeTypedValue(elem, value); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&value) = VT_EMPTY; hr = IXMLDOMElement_get_nodeTypedValue(elem, &value); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&value) == (VT_UI1|VT_ARRAY), "got %d\n", V_VT(&value)); ok(SafeArrayGetDim(V_ARRAY(&value)) == 1, "got wrong dimension\n"); ubound = 0; hr = SafeArrayGetUBound(V_ARRAY(&value), 1, &ubound); - EXPECT_HR(hr, S_OK); - ok(ubound == 15, "got %d\n", ubound); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(ubound == 15, "got %ld\n", ubound); lbound = 0; hr = SafeArrayGetLBound(V_ARRAY(&value), 1, &lbound); - EXPECT_HR(hr, S_OK); - ok(lbound == 0, "got %d\n", lbound); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(lbound == 0, "got %ld\n", lbound); hr = SafeArrayAccessData(V_ARRAY(&value), (void*)&ptr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!memcmp(ptr, binhexdata, sizeof(binhexdata)), "got wrong data\n"); SafeArrayUnaccessData(V_ARRAY(&value)); VariantClear(&value); /* if set with VT_UI1|VT_ARRAY it's encoded */ hr = IXMLDOMElement_get_firstChild(elem, &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_text(node, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(str, _bstr_("000102030405060708090a0b0c0d0e0f")), "%s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"000102030405060708090a0b0c0d0e0f"), "%s\n", wine_dbgstr_w(str)); IXMLDOMNode_Release(node); SafeArrayDestroyData(array); SysFreeString(str); @@ -8740,27 +9236,27 @@ static void test_get_xml(void) b = VARIANT_TRUE; hr = IXMLDOMDocument_loadXML( doc, _bstr_("test"), &b ); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( b == VARIANT_TRUE, "got %d\n", b); hr = IXMLDOMDocument_createProcessingInstruction(doc, _bstr_("xml"), _bstr_("version=\"1.0\" encoding=\"UTF-16\""), &pi); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_get_firstChild(doc, &first); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_UNKNOWN(&v) = (IUnknown*)first; V_VT(&v) = VT_UNKNOWN; hr = IXMLDOMDocument_insertBefore(doc, (IXMLDOMNode*)pi, v, NULL); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMProcessingInstruction_Release(pi); IXMLDOMNode_Release(first); hr = IXMLDOMDocument_get_xml(doc, &xml); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(memcmp(xml, _bstr_(xmlA), sizeof(xmlA)*sizeof(WCHAR)) == 0, "got %s, expected %s\n", wine_dbgstr_w(xml), xmlA); @@ -8771,13 +9267,13 @@ static void test_get_xml(void) doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_createElement(doc, _bstr_("foo"), &elem); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_putref_documentElement(doc, elem); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_get_xml(doc, &xml); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(memcmp(xml, _bstr_(fooA), (sizeof(fooA)-1)*sizeof(WCHAR)) == 0, "got %s, expected %s\n", wine_dbgstr_w(xml), fooA); @@ -8787,22 +9283,22 @@ static void test_get_xml(void) /* attribute node */ hr = IXMLDOMDocument_createAttribute(doc, _bstr_("attr"), &attr); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&v) = VT_BSTR; V_BSTR(&v) = _bstr_("\"a & b\""); hr = IXMLDOMAttribute_put_value(attr, v); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); xml = NULL; hr = IXMLDOMAttribute_get_xml(attr, &xml); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!memcmp(xml, _bstr_(attrA), (sizeof(attrA)-1)*sizeof(WCHAR)), "got %s\n", wine_dbgstr_w(xml)); SysFreeString(xml); VariantInit(&v); hr = IXMLDOMAttribute_get_value(attr, &v); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&v) == VT_BSTR, "got type %d\n", V_VT(&v)); ok(!memcmp(V_BSTR(&v), _bstr_(attr2A), (sizeof(attr2A)-1)*sizeof(WCHAR)), "got %s\n", wine_dbgstr_w(V_BSTR(&v))); @@ -8811,17 +9307,17 @@ static void test_get_xml(void) V_VT(&v) = VT_BSTR; V_BSTR(&v) = _bstr_(""a"); hr = IXMLDOMAttribute_put_value(attr, v); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); xml = NULL; hr = IXMLDOMAttribute_get_xml(attr, &xml); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!memcmp(xml, _bstr_(attr3A), (sizeof(attr3A)-1)*sizeof(WCHAR)), "got %s\n", wine_dbgstr_w(xml)); SysFreeString(xml); VariantInit(&v); hr = IXMLDOMAttribute_get_value(attr, &v); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&v) == VT_BSTR, "got type %d\n", V_VT(&v)); ok(!memcmp(V_BSTR(&v), _bstr_(attr4A), (sizeof(attr4A)-1)*sizeof(WCHAR)), "got %s\n", wine_dbgstr_w(V_BSTR(&v))); @@ -8849,29 +9345,33 @@ static void test_xsltemplate(void) if (!is_clsid_supported(&CLSID_XSLTemplate, &IID_IXSLTemplate)) return; template = create_xsltemplate(&IID_IXSLTemplate); + check_interface(template, &IID_IXSLTemplate, TRUE); + check_interface(template, &IID_IDispatch, TRUE); + check_interface(template, &IID_IDispatchEx, TRUE); + /* works as reset */ hr = IXSLTemplate_putref_stylesheet(template, NULL); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); doc = create_document(&IID_IXMLDOMDocument); b = VARIANT_TRUE; hr = IXMLDOMDocument_loadXML( doc, _bstr_("test"), &b ); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( b == VARIANT_TRUE, "got %d\n", b); /* putref with non-xsl document */ hr = IXSLTemplate_putref_stylesheet(template, (IXMLDOMNode*)doc); - todo_wine ok(hr == E_FAIL, "got 0x%08x\n", hr); + todo_wine ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); b = VARIANT_TRUE; hr = IXMLDOMDocument_loadXML( doc, _bstr_(szTransformSSXML), &b ); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( b == VARIANT_TRUE, "got %d\n", b); /* not a freethreaded document */ hr = IXSLTemplate_putref_stylesheet(template, (IXMLDOMNode*)doc); - todo_wine ok(hr == E_FAIL, "got 0x%08x\n", hr); + todo_wine ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); IXMLDOMDocument_Release(doc); @@ -8882,29 +9382,29 @@ static void test_xsltemplate(void) } hr = CoCreateInstance(&CLSID_FreeThreadedDOMDocument, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument, (void**)&doc); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); b = VARIANT_TRUE; hr = IXMLDOMDocument_loadXML( doc, _bstr_(szTransformSSXML), &b ); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( b == VARIANT_TRUE, "got %d\n", b); /* freethreaded document */ ref1 = IXMLDOMDocument_AddRef(doc); IXMLDOMDocument_Release(doc); hr = IXSLTemplate_putref_stylesheet(template, (IXMLDOMNode*)doc); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ref2 = IXMLDOMDocument_AddRef(doc); IXMLDOMDocument_Release(doc); - ok(ref2 > ref1, "got %d\n", ref2); + ok(ref2 > ref1, "got %ld\n", ref2); /* processor */ hr = IXSLTemplate_createProcessor(template, NULL); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); EXPECT_REF(template, 1); hr = IXSLTemplate_createProcessor(template, &processor); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(template, 2); /* input no set yet */ @@ -8912,43 +9412,43 @@ static void test_xsltemplate(void) V_BSTR(&v) = NULL; hr = IXSLProcessor_get_input(processor, &v); todo_wine { - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&v) == VT_EMPTY, "got %d\n", V_VT(&v)); } hr = IXSLProcessor_get_output(processor, NULL); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); /* reset before it was set */ V_VT(&v) = VT_EMPTY; hr = IXSLProcessor_put_output(processor, v); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&v) = VT_UNKNOWN; V_UNKNOWN(&v) = NULL; hr = IXSLProcessor_put_output(processor, v); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&v) = VT_UNKNOWN; V_DISPATCH(&v) = NULL; hr = IXSLProcessor_put_output(processor, v); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(stream, 1); V_VT(&v) = VT_UNKNOWN; V_UNKNOWN(&v) = (IUnknown*)stream; hr = IXSLProcessor_put_output(processor, v); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* it seems processor grabs 2 references */ todo_wine EXPECT_REF(stream, 3); V_VT(&v) = VT_EMPTY; hr = IXSLProcessor_get_output(processor, &v); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&v) == VT_UNKNOWN, "got type %d\n", V_VT(&v)); ok(V_UNKNOWN(&v) == (IUnknown*)stream, "got %p\n", V_UNKNOWN(&v)); @@ -8956,12 +9456,12 @@ todo_wine { VariantClear(&v); hr = IXSLProcessor_transform(processor, NULL); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); /* reset and check stream refcount */ V_VT(&v) = VT_EMPTY; hr = IXSLProcessor_put_output(processor, v); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(stream, 1); @@ -8972,20 +9472,20 @@ todo_wine { b = VARIANT_FALSE; hr = IXMLDOMDocument_loadXML( doc2, _bstr_("test"), &b ); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( b == VARIANT_TRUE, "got %d\n", b); V_VT(&v) = VT_UNKNOWN; V_UNKNOWN(&v) = (IUnknown*)doc2; hr = IXSLProcessor_put_input(processor, v); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXSLProcessor_transform(processor, &b); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&v) = VT_EMPTY; hr = IXSLProcessor_get_output(processor, &v); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&v) == VT_BSTR, "got type %d\n", V_VT(&v)); ok(*V_BSTR(&v) == 0, "got %s\n", wine_dbgstr_w(V_BSTR(&v))); VariantClear(&v); @@ -8993,52 +9493,52 @@ todo_wine { /* transform to document */ b = VARIANT_FALSE; hr = IXMLDOMDocument_loadXML(doc2, _bstr_(szTransformXML), &b); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "got %d\n", b); V_VT(&v) = VT_UNKNOWN; V_UNKNOWN(&v) = (IUnknown*)doc2; hr = IXSLProcessor_put_input(processor, v); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); doc3 = create_document(&IID_IXMLDOMDocument); V_VT(&v) = VT_UNKNOWN; V_UNKNOWN(&v) = (IUnknown *)doc3; hr = IXSLProcessor_put_output(processor, v); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_get_xml(doc3, &str); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!*str, "Expected empty document\n"); SysFreeString(str); hr = IXSLProcessor_transform(processor, &b); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&v) = VT_EMPTY; hr = IXSLProcessor_get_output(processor, &v); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&v) == VT_UNKNOWN, "got type %d\n", V_VT(&v)); VariantClear(&v); hr = IXMLDOMDocument_get_xml(doc3, &str); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!!*str, "Expected document\n"); SysFreeString(str); /* transform to IResponse */ V_VT(&v) = VT_EMPTY; hr = IXSLProcessor_put_output(processor, v); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&v) = VT_UNKNOWN; V_UNKNOWN(&v) = (IUnknown *)&testresponse; hr = IXSLProcessor_put_output(processor, v); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); b = VARIANT_FALSE; hr = IXSLProcessor_transform(processor, &b); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "got %x\n", b); IXSLProcessor_Release(processor); @@ -9047,10 +9547,10 @@ todo_wine { /* drop reference */ hr = IXSLTemplate_putref_stylesheet(template, NULL); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ref2 = IXMLDOMDocument_AddRef(doc); IXMLDOMDocument_Release(doc); - ok(ref2 == ref1, "got %d\n", ref2); + ok(ref2 == ref1, "got %ld\n", ref2); IXMLDOMDocument_Release(doc); IXSLTemplate_Release(template); @@ -9070,18 +9570,25 @@ static void test_insertBefore(void) doc = create_document(&IID_IXMLDOMDocument); doc3 = create_document(&IID_IXMLDOMDocument); + /* NULL to document */ + V_VT(&v) = VT_NULL; + node = (void*)0xdeadbeef; + hr = IXMLDOMDocument_insertBefore(doc, NULL, v, &node); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + ok(node == (void*)0xdeadbeef, "got %p\n", node); + /* document to document */ V_VT(&v) = VT_NULL; node = (void*)0xdeadbeef; hr = IXMLDOMDocument_insertBefore(doc, (IXMLDOMNode*)doc3, v, &node); - ok(hr == E_FAIL, "got 0x%08x\n", hr); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(node == NULL, "got %p\n", node); /* document to itself */ V_VT(&v) = VT_NULL; node = (void*)0xdeadbeef; hr = IXMLDOMDocument_insertBefore(doc, (IXMLDOMNode*)doc, v, &node); - ok(hr == E_FAIL, "got 0x%08x\n", hr); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(node == NULL, "got %p\n", node); /* insertBefore behaviour for attribute node */ @@ -9090,14 +9597,14 @@ static void test_insertBefore(void) attr = NULL; hr = IXMLDOMDocument_createNode(doc, v, _bstr_("attr"), NULL, (IXMLDOMNode**)&attr); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(attr != NULL, "got %p\n", attr); /* attribute to document */ V_VT(&v) = VT_NULL; node = (void*)0xdeadbeef; hr = IXMLDOMDocument_insertBefore(doc3, (IXMLDOMNode*)attr, v, &node); - ok(hr == E_FAIL, "got 0x%08x\n", hr); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(node == NULL, "got %p\n", node); /* cdata to document */ @@ -9106,7 +9613,7 @@ static void test_insertBefore(void) cdata = NULL; hr = IXMLDOMDocument_createNode(doc3, v, _bstr_("cdata"), NULL, &cdata); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(cdata != NULL, "got %p\n", cdata); EXPECT_NO_CHILDREN(cdata); @@ -9115,20 +9622,20 @@ static void test_insertBefore(void) V_VT(&v) = VT_NULL; node = (void*)0xdeadbeef; hr = IXMLDOMNode_insertBefore(cdata, (IXMLDOMNode*)attr, v, &node); - ok(hr == E_FAIL, "got 0x%08x\n", hr); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(node == NULL, "got %p\n", node); /* document to cdata */ V_VT(&v) = VT_NULL; node = (void*)0xdeadbeef; hr = IXMLDOMNode_insertBefore(cdata, (IXMLDOMNode*)doc, v, &node); - ok(hr == E_FAIL, "got 0x%08x\n", hr); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(node == NULL, "got %p\n", node); V_VT(&v) = VT_NULL; node = (void*)0xdeadbeef; hr = IXMLDOMDocument_insertBefore(doc3, cdata, v, &node); - ok(hr == E_FAIL, "got 0x%08x\n", hr); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(node == NULL, "got %p\n", node); IXMLDOMNode_Release(cdata); @@ -9139,20 +9646,20 @@ static void test_insertBefore(void) V_I4(&v) = NODE_ATTRIBUTE; newnode = NULL; hr = IXMLDOMDocument_createNode(doc, v, _bstr_("attr2"), NULL, &newnode); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(newnode != NULL, "got %p\n", newnode); V_VT(&v) = VT_NULL; node = (void*)0xdeadbeef; hr = IXMLDOMAttribute_insertBefore(attr, newnode, v, &node); - ok(hr == E_FAIL, "got 0x%08x\n", hr); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(node == NULL, "got %p\n", node); V_VT(&v) = VT_UNKNOWN; V_UNKNOWN(&v) = (IUnknown*)attr; node = (void*)0xdeadbeef; hr = IXMLDOMAttribute_insertBefore(attr, newnode, v, &node); - todo_wine ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + todo_wine ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok(node == NULL, "got %p\n", node); IXMLDOMNode_Release(newnode); @@ -9161,13 +9668,13 @@ static void test_insertBefore(void) V_I4(&v) = NODE_CDATA_SECTION; newnode = NULL; hr = IXMLDOMDocument_createNode(doc, v, _bstr_("cdata"), NULL, &newnode); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(newnode != NULL, "got %p\n", newnode); V_VT(&v) = VT_NULL; node = (void*)0xdeadbeef; hr = IXMLDOMAttribute_insertBefore(attr, newnode, v, &node); - ok(hr == E_FAIL, "got 0x%08x\n", hr); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(node == NULL, "got %p\n", node); IXMLDOMNode_Release(newnode); @@ -9176,13 +9683,13 @@ static void test_insertBefore(void) V_I4(&v) = NODE_COMMENT; newnode = NULL; hr = IXMLDOMDocument_createNode(doc, v, _bstr_("cdata"), NULL, &newnode); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(newnode != NULL, "got %p\n", newnode); V_VT(&v) = VT_NULL; node = (void*)0xdeadbeef; hr = IXMLDOMAttribute_insertBefore(attr, newnode, v, &node); - ok(hr == E_FAIL, "got 0x%08x\n", hr); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(node == NULL, "got %p\n", node); IXMLDOMNode_Release(newnode); @@ -9191,13 +9698,13 @@ static void test_insertBefore(void) V_I4(&v) = NODE_ELEMENT; newnode = NULL; hr = IXMLDOMDocument_createNode(doc, v, _bstr_("cdata"), NULL, &newnode); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(newnode != NULL, "got %p\n", newnode); V_VT(&v) = VT_NULL; node = (void*)0xdeadbeef; hr = IXMLDOMAttribute_insertBefore(attr, newnode, v, &node); - ok(hr == E_FAIL, "got 0x%08x\n", hr); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(node == NULL, "got %p\n", node); IXMLDOMNode_Release(newnode); @@ -9206,32 +9713,32 @@ static void test_insertBefore(void) V_I4(&v) = NODE_PROCESSING_INSTRUCTION; newnode = NULL; hr = IXMLDOMDocument_createNode(doc, v, _bstr_("cdata"), NULL, &newnode); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(newnode != NULL, "got %p\n", newnode); V_VT(&v) = VT_NULL; node = (void*)0xdeadbeef; hr = IXMLDOMAttribute_insertBefore(attr, newnode, v, &node); - ok(hr == E_FAIL, "got 0x%08x\n", hr); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(node == NULL, "got %p\n", node); IXMLDOMNode_Release(newnode); IXMLDOMAttribute_Release(attr); /* insertBefore for elements */ hr = IXMLDOMDocument_createElement(doc, _bstr_("elem"), &elem1); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_createElement(doc, _bstr_("elem2"), &elem2); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_createElement(doc, _bstr_("elem3"), &elem3); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_createElement(doc, _bstr_("elem3"), &elem3); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_createElement(doc, _bstr_("elem4"), &elem4); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_NO_CHILDREN(elem1); EXPECT_NO_CHILDREN(elem2); @@ -9239,22 +9746,29 @@ static void test_insertBefore(void) todo_wine EXPECT_REF(elem2, 2); + /* NULL to element */ + V_VT(&v) = VT_NULL; + node = (void*)0xdeadbeef; + hr = IXMLDOMElement_insertBefore(elem1, NULL, v, &node); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + ok(node == (void*)0xdeadbeef, "got %p\n", node); + /* document to element */ V_VT(&v) = VT_DISPATCH; V_DISPATCH(&v) = NULL; hr = IXMLDOMElement_insertBefore(elem1, (IXMLDOMNode*)doc, v, NULL); - ok(hr == E_FAIL, "got 0x%08x\n", hr); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); V_VT(&v) = VT_DISPATCH; V_DISPATCH(&v) = NULL; node = NULL; hr = IXMLDOMElement_insertBefore(elem1, (IXMLDOMNode*)elem4, v, &node); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(node == (void*)elem4, "got %p\n", node); EXPECT_CHILDREN(elem1); hr = IXMLDOMElement_removeChild(elem1, (IXMLDOMNode*)elem4, NULL); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMElement_Release(elem4); EXPECT_NO_CHILDREN(elem1); @@ -9262,7 +9776,7 @@ static void test_insertBefore(void) V_VT(&v) = VT_NULL; node = NULL; hr = IXMLDOMElement_insertBefore(elem1, (IXMLDOMNode*)elem2, v, &node); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(node == (void*)elem2, "got %p\n", node); EXPECT_CHILDREN(elem1); @@ -9273,7 +9787,7 @@ static void test_insertBefore(void) V_VT(&v) = VT_NULL; node = NULL; hr = IXMLDOMElement_insertBefore(elem1, (IXMLDOMNode*)elem2, v, &node); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(node == (void*)elem2, "got %p\n", node); EXPECT_CHILDREN(elem1); @@ -9286,7 +9800,7 @@ static void test_insertBefore(void) V_VT(&v) = VT_NULL; node = (void*)0xdeadbeef; hr = IXMLDOMElement_insertBefore(elem3, (IXMLDOMNode*)elem2, v, &node); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(node == (void*)elem2, "got %p\n", node); EXPECT_CHILDREN(elem3); @@ -9298,19 +9812,19 @@ static void test_insertBefore(void) doc2 = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_createElement(doc2, _bstr_("elem4"), &elem4); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine EXPECT_REF(elem4, 2); /* same name, another instance */ hr = IXMLDOMDocument_createElement(doc2, _bstr_("elem4"), &elem5); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine EXPECT_REF(elem5, 2); todo_wine EXPECT_REF(elem3, 2); V_VT(&v) = VT_NULL; node = NULL; hr = IXMLDOMElement_insertBefore(elem3, (IXMLDOMNode*)elem4, v, &node); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(node == (void*)elem4, "got %p\n", node); todo_wine EXPECT_REF(elem4, 3); todo_wine EXPECT_REF(elem3, 2); @@ -9319,7 +9833,7 @@ static void test_insertBefore(void) V_VT(&v) = VT_NULL; node = NULL; hr = IXMLDOMElement_insertBefore(elem3, (IXMLDOMNode*)elem5, v, &node); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(node == (void*)elem5, "got %p\n", node); todo_wine EXPECT_REF(elem4, 2); todo_wine EXPECT_REF(elem5, 3); @@ -9338,46 +9852,46 @@ static void test_insertBefore(void) V_I4(&v) = NODE_ELEMENT; elem1 = NULL; hr = IXMLDOMDocument_createNode(doc, v, _bstr_("elem1"), _bstr_("http://winehq.org/default"), (IXMLDOMNode**)&elem1); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(elem1 != NULL, "got %p\n", elem1); V_VT(&v) = VT_I4; V_I4(&v) = NODE_ELEMENT; elem2 = NULL; hr = IXMLDOMDocument_createNode(doc, v, _bstr_("elem2"), _bstr_("http://winehq.org/default"), (IXMLDOMNode**)&elem2); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(elem2 != NULL, "got %p\n", elem2); /* check contents so far */ p = NULL; hr = IXMLDOMElement_get_xml(elem1, &p); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(!lstrcmpW(p, _bstr_("")), "got %s\n", wine_dbgstr_w(p)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(p, L""), "got %s\n", wine_dbgstr_w(p)); SysFreeString(p); p = NULL; hr = IXMLDOMElement_get_xml(elem2, &p); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(!lstrcmpW(p, _bstr_("")), "got %s\n", wine_dbgstr_w(p)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(p, L""), "got %s\n", wine_dbgstr_w(p)); SysFreeString(p); V_VT(&v) = VT_NULL; hr = IXMLDOMElement_insertBefore(elem1, (IXMLDOMNode*)elem2, v, NULL); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* get_xml depends on context, for top node it omits child namespace attribute, but at child level it's still returned */ p = NULL; hr = IXMLDOMElement_get_xml(elem1, &p); - ok(hr == S_OK, "got 0x%08x\n", hr); - todo_wine ok(!lstrcmpW(p, _bstr_("")), + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + todo_wine ok(!lstrcmpW(p, L""), "got %s\n", wine_dbgstr_w(p)); SysFreeString(p); p = NULL; hr = IXMLDOMElement_get_xml(elem2, &p); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(!lstrcmpW(p, _bstr_("")), "got %s\n", wine_dbgstr_w(p)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(p, L""), "got %s\n", wine_dbgstr_w(p)); SysFreeString(p); IXMLDOMElement_Release(elem1); @@ -9388,35 +9902,35 @@ static void test_insertBefore(void) V_I4(&v) = NODE_ELEMENT; elem1 = NULL; hr = IXMLDOMDocument_createNode(doc, v, _bstr_("elem1"), _bstr_("http://winehq.org/default"), (IXMLDOMNode**)&elem1); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(elem1 != NULL, "got %p\n", elem1); V_VT(&v) = VT_I4; V_I4(&v) = NODE_ELEMENT; elem2 = NULL; hr = IXMLDOMDocument_createNode(doc, v, _bstr_("elem2"), NULL, (IXMLDOMNode**)&elem2); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(elem2 != NULL, "got %p\n", elem2); EXPECT_REF(elem2, 1); V_VT(&v) = VT_NULL; hr = IXMLDOMElement_insertBefore(elem1, (IXMLDOMNode*)elem2, v, NULL); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(elem2, 1); p = NULL; hr = IXMLDOMElement_get_xml(elem2, &p); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(!lstrcmpW(p, _bstr_("")), "got %s\n", wine_dbgstr_w(p)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(p, L""), "got %s\n", wine_dbgstr_w(p)); SysFreeString(p); hr = IXMLDOMElement_removeChild(elem1, (IXMLDOMNode*)elem2, NULL); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); p = NULL; hr = IXMLDOMElement_get_xml(elem2, &p); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(!lstrcmpW(p, _bstr_("")), "got %s\n", wine_dbgstr_w(p)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(p, L""), "got %s\n", wine_dbgstr_w(p)); SysFreeString(p); IXMLDOMElement_Release(elem1); @@ -9434,10 +9948,10 @@ static void test_appendChild(void) doc2 = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_createElement(doc, _bstr_("elem"), &elem); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_createElement(doc2, _bstr_("elem2"), &elem2); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(doc, 1); todo_wine EXPECT_REF(elem, 2); @@ -9447,14 +9961,14 @@ static void test_appendChild(void) EXPECT_NO_CHILDREN(doc2); hr = IXMLDOMDocument_appendChild(doc2, NULL, NULL); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_appendChild(elem, NULL, NULL); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); /* append from another document */ hr = IXMLDOMDocument_appendChild(doc2, (IXMLDOMNode*)elem, NULL); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(doc, 1); todo_wine EXPECT_REF(elem, 2); @@ -9471,7 +9985,6 @@ static void test_appendChild(void) static void test_get_doctype(void) { - static const WCHAR emailW[] = {'e','m','a','i','l',0}; IXMLDOMDocumentType *doctype; IXMLDOMDocument *doc; VARIANT_BOOL b; @@ -9481,33 +9994,33 @@ static void test_get_doctype(void) doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_get_doctype(doc, NULL); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); doctype = (void*)0xdeadbeef; hr = IXMLDOMDocument_get_doctype(doc, &doctype); - ok(hr == S_FALSE, "got 0x%08x\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(doctype == NULL, "got %p\n", doctype); hr = IXMLDOMDocument_loadXML(doc, _bstr_(szEmailXML), &b); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML string\n"); doctype = NULL; hr = IXMLDOMDocument_get_doctype(doc, &doctype); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(doctype != NULL, "got %p\n", doctype); hr = IXMLDOMDocumentType_get_name(doctype, NULL); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocumentType_get_name(doctype, &s); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(!lstrcmpW(emailW, s), "got name %s\n", wine_dbgstr_w(s)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(L"email", s), "got name %s\n", wine_dbgstr_w(s)); SysFreeString(s); hr = IXMLDOMDocumentType_get_nodeName(doctype, &s); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(!lstrcmpW(emailW, s), "got name %s\n", wine_dbgstr_w(s)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(L"email", s), "got name %s\n", wine_dbgstr_w(s)); SysFreeString(s); IXMLDOMDocumentType_Release(doctype); @@ -9524,24 +10037,24 @@ static void test_get_tagName(void) doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_createElement(doc, _bstr_("element"), &elem); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_get_tagName(elem, NULL); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); str = NULL; hr = IXMLDOMElement_get_tagName(elem, &str); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(!lstrcmpW(str, _bstr_("element")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"element"), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); hr = IXMLDOMDocument_createElement(doc, _bstr_("s:element"), &elem2); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); str = NULL; hr = IXMLDOMElement_get_tagName(elem2, &str); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(!lstrcmpW(str, _bstr_("s:element")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"s:element"), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); IXMLDOMElement_Release(elem); @@ -9588,11 +10101,11 @@ static void test_get_dataType(void) ok(hr == S_OK, "failed to create node, type %d\n", entry->type); hr = IXMLDOMNode_get_dataType(node, NULL); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); VariantInit(&type); hr = IXMLDOMNode_get_dataType(node, &type); - ok(hr == entry->hr, "got 0x%08x, expected 0x%08x. node type %d\n", + ok(hr == entry->hr, "Unexpected hr %#lx, expected %#lx. node type %d\n", hr, entry->hr, entry->type); ok(V_VT(&type) == entry->vt, "got %d, expected %d. node type %d\n", V_VT(&type), entry->vt, entry->type); @@ -9634,8 +10147,8 @@ static void test_get_nodeTypeString(void) doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_get_nodeTypeString(doc, &str); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(!lstrcmpW(str, _bstr_("document")), "got string %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"document"), "got string %s\n", wine_dbgstr_w(str)); SysFreeString(str); while (entry->type) @@ -9649,10 +10162,10 @@ static void test_get_nodeTypeString(void) ok(hr == S_OK, "failed to create node, type %d\n", entry->type); hr = IXMLDOMNode_get_nodeTypeString(node, NULL); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_nodeTypeString(node, &str); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!lstrcmpW(str, _bstr_(entry->string)), "got string %s, expected %s. node type %d\n", wine_dbgstr_w(str), entry->string, entry->type); SysFreeString(str); @@ -9683,6 +10196,13 @@ static const get_attributes_t get_attributes[] = { static void test_get_attributes(void) { + const WCHAR *namespaces[] = + { + L"xmlns:oslc_am", + L"xmlns:rdf", + L"xmlns:dcterms", + L"xmlns:foaf" + }; const get_attributes_t *entry = get_attributes; IXMLDOMNamedNodeMap *map; IXMLDOMDocument *doc, *doc2; @@ -9692,37 +10212,37 @@ static void test_get_attributes(void) HRESULT hr; VARIANT v; BSTR str; - LONG length; + LONG length, i; doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_loadXML(doc, _bstr_(complete4A), &b); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_get_attributes(doc, NULL); - ok(hr == E_INVALIDARG, "got %08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); map = (void*)0xdeadbeef; hr = IXMLDOMDocument_get_attributes(doc, &map); - ok(hr == S_FALSE, "got %08x\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(map == NULL, "got %p\n", map); /* first child is */ hr = IXMLDOMDocument_get_firstChild(doc, &node); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_attributes(node, &map); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); node2 = (void*)0xdeadbeef; hr = IXMLDOMNamedNodeMap_getNamedItem(map, _bstr_("attr"), &node2); - ok(hr == S_FALSE, "got %08x\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(node2 == NULL, "got %p\n", node2); length = -1; hr = IXMLDOMNamedNodeMap_get_length(map, &length); - EXPECT_HR(hr, S_OK); - todo_wine ok(length == 1, "got %d\n", length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + todo_wine ok(length == 1, "got %ld\n", length); if (hr == S_OK && length == 1) { @@ -9732,91 +10252,91 @@ static void test_get_attributes(void) node2 = NULL; hr = IXMLDOMNamedNodeMap_get_item(map, 0, &node2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(node != NULL, "got %p\n", node2); hr = IXMLDOMNode_get_nodeName(node2, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(str, _bstr_("version")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"version"), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); length = -1; hr = IXMLDOMNamedNodeMap_get_length(map, &length); - EXPECT_HR(hr, S_OK); - ok(length == 1, "got %d\n", length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 1, "got %ld\n", length); type = -1; hr = IXMLDOMNode_get_nodeType(node2, &type); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(type == NODE_ATTRIBUTE, "got %d\n", type); hr = IXMLDOMNode_get_xml(node, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(str, _bstr_("")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L""), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); hr = IXMLDOMNode_get_text(node, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(str, _bstr_("version=\"1.0\"")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"version=\"1.0\""), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); hr = IXMLDOMNamedNodeMap_removeNamedItem(map, _bstr_("version"), NULL); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); length = -1; hr = IXMLDOMNamedNodeMap_get_length(map, &length); - EXPECT_HR(hr, S_OK); - ok(length == 0, "got %d\n", length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 0, "got %ld\n", length); hr = IXMLDOMNode_get_xml(node, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(str, _bstr_("")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L""), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); hr = IXMLDOMNode_get_text(node, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(str, _bstr_("")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L""), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); IXMLDOMNamedNodeMap_Release(map); hr = IXMLDOMNode_get_attributes(node, &map); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); length = -1; hr = IXMLDOMNamedNodeMap_get_length(map, &length); - EXPECT_HR(hr, S_OK); - ok(length == 0, "got %d\n", length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 0, "got %ld\n", length); hr = IXMLDOMDocument_createAttribute(doc, _bstr_("encoding"), &attr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&v) = VT_BSTR; V_BSTR(&v) = _bstr_("UTF-8"); hr = IXMLDOMAttribute_put_nodeValue(attr, v); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(attr, 2); hr = IXMLDOMNamedNodeMap_setNamedItem(map, (IXMLDOMNode*)attr, NULL); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(attr, 2); hr = IXMLDOMNode_get_attributes(node, &map); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); length = -1; hr = IXMLDOMNamedNodeMap_get_length(map, &length); - EXPECT_HR(hr, S_OK); - ok(length == 1, "got %d\n", length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 1, "got %ld\n", length); hr = IXMLDOMNode_get_xml(node, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(str, _bstr_("")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L""), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); hr = IXMLDOMNode_get_text(node, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(str, _bstr_("encoding=\"UTF-8\"")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"encoding=\"UTF-8\""), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); IXMLDOMNamedNodeMap_Release(map); @@ -9828,18 +10348,18 @@ static void test_get_attributes(void) /* last child is element */ EXPECT_REF(doc, 1); hr = IXMLDOMDocument_get_lastChild(doc, &node); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(doc, 1); EXPECT_REF(node, 1); hr = IXMLDOMNode_get_attributes(node, &map); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(node, 1); EXPECT_REF(doc, 1); EXPECT_REF(map, 1); hr = IXMLDOMNamedNodeMap_get_item(map, 0, &node2); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(node, 1); EXPECT_REF(node2, 1); EXPECT_REF(map, 1); @@ -9851,12 +10371,12 @@ static void test_get_attributes(void) length = 0; hr = IXMLDOMNamedNodeMap_get_length(map, &length); - ok(hr == S_OK, "got %08x\n", hr); - ok(length == 1, "got %d\n", length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 1, "got %ld\n", length); node2 = NULL; hr = IXMLDOMNamedNodeMap_get_item(map, 0, &node2); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(node2, 1); IXMLDOMNode_Release(node2); @@ -9864,25 +10384,25 @@ static void test_get_attributes(void) /* append created element a different document, map still works */ hr = IXMLDOMDocument_createElement(doc, _bstr_("test"), &elem); - ok(hr == S_OK, "createElement failed: %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&v) = VT_I4; V_I4(&v) = 1; hr = IXMLDOMElement_setAttribute(elem, _bstr_("testattr"), v); - ok(hr == S_OK, "setAttribute failed: %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_get_attributes(elem, &map); - ok(hr == S_OK, "get_attributes failed: %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); length = 0; hr = IXMLDOMNamedNodeMap_get_length(map, &length); - ok(hr == S_OK, "got %08x\n", hr); - ok(length == 1, "got %d\n", length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 1, "got %ld\n", length); doc2 = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_appendChild(doc2, (IXMLDOMNode*)elem, &node); - ok(hr == S_OK, "appendChild failed: %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(node == (IXMLDOMNode*)elem, "node != elem\n"); IXMLDOMNode_Release(node); IXMLDOMElement_Release(elem); @@ -9890,8 +10410,8 @@ static void test_get_attributes(void) length = 0; hr = IXMLDOMNamedNodeMap_get_length(map, &length); - ok(hr == S_OK, "got %08x\n", hr); - ok(length == 1, "got %d\n", length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 1, "got %ld\n", length); IXMLDOMNamedNodeMap_Release(map); @@ -9907,11 +10427,11 @@ static void test_get_attributes(void) 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); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\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", + ok(hr == entry->hr, "Unexpected hr %#lx, expected %#lx. node type %d\n", hr, entry->hr, entry->type); ok(map == NULL, "got %p\n", map); @@ -9921,6 +10441,49 @@ static void test_get_attributes(void) } IXMLDOMDocument_Release(doc); + + str = SysAllocString(L"" + L"" + L""); + + doc = create_document(&IID_IXMLDOMDocument2); + + hr = IXMLDOMDocument_loadXML(doc, str, &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(b == VARIANT_TRUE, "got %d\n", b); + + hr = IXMLDOMDocument_get_documentElement(doc, &elem); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMElement_get_attributes(elem, &map); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + length = -1; + hr = IXMLDOMNamedNodeMap_get_length(map, &length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 4, "length %#lx.\n", length); + + for(i=0; i < length; i++) + { + hr = IXMLDOMNamedNodeMap_get_item(map, i, &node2); + ok( hr == S_OK, "Unexpected hr %#lx (%ld).\n", hr, i); + + hr = IXMLDOMNode_get_nodeName(node2, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, namespaces[i]), "got %s\n", wine_dbgstr_w(str)); + SysFreeString(str); + + IXMLDOMNode_Release(node2); + } + + IXMLDOMNamedNodeMap_Release(map); + IXMLDOMElement_Release(elem); + + IXMLDOMDocument_Release(doc); + free_bstrs(); } @@ -9935,9 +10498,9 @@ static void test_selection(void) IXMLDOMNode *node; IDispatch *disp; VARIANT_BOOL b; + VARIANT v[3]; HRESULT hr; DISPID did; - VARIANT v; BSTR name; ULONG ret; LONG len; @@ -9945,47 +10508,47 @@ static void test_selection(void) doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_loadXML(doc, _bstr_(szExampleXML), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_selectNodes(doc, _bstr_("root"), &list); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNodeList_QueryInterface(list, &IID_IXMLDOMSelection, (void**)&selection); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMSelection_Release(selection); /* collection disp id */ hr = IXMLDOMSelection_QueryInterface(selection, &IID_IDispatchEx, (void**)&dispex); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); did = 0; hr = IDispatchEx_GetDispID(dispex, _bstr_("0"), 0, &did); - EXPECT_HR(hr, S_OK); - ok(did == DISPID_DOM_COLLECTION_BASE, "got %d\n", did); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(did == DISPID_DOM_COLLECTION_BASE, "got %ld\n", did); len = 0; hr = IXMLDOMSelection_get_length(selection, &len); - EXPECT_HR(hr, S_OK); - ok(len == 1, "got %d\n", len); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(len == 1, "got %ld\n", len); hr = IDispatchEx_GetDispID(dispex, _bstr_("10"), 0, &did); - EXPECT_HR(hr, S_OK); - ok(did == DISPID_DOM_COLLECTION_BASE+10, "got %d\n", did); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(did == DISPID_DOM_COLLECTION_BASE+10, "got %ld\n", did); IDispatchEx_Release(dispex); /* IEnumVARIANT tests */ enum1 = NULL; hr = IXMLDOMSelection_QueryInterface(selection, &IID_IEnumVARIANT, (void**)&enum1); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(enum1 != NULL, "got %p\n", enum1); EXPECT_REF(enum1, 2); EXPECT_REF(selection, 1); hr = IXMLDOMSelection_QueryInterface(selection, &IID_IUnknown, (void**)&unk1); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(selection, 2); EXPECT_REF(enum1, 2); /* enumerator and selection object return same IUnknown* */ hr = IEnumVARIANT_QueryInterface(enum1, &IID_IUnknown, (void**)&unk2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(selection, 3); EXPECT_REF(enum1, 2); ok(unk2 == unk1, "got %p, %p\n", unk1, unk2); @@ -9998,7 +10561,7 @@ static void test_selection(void) enum3 = NULL; hr = IXMLDOMSelection_QueryInterface(selection, &IID_IEnumVARIANT, (void**)&enum3); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(enum3 != NULL, "got %p\n", enum3); ok(enum1 == enum3, "got %p and %p\n", enum1, enum3); EXPECT_REF(enum1, 3); @@ -10009,7 +10572,7 @@ static void test_selection(void) enum2 = NULL; hr = IXMLDOMSelection_get__newEnum(selection, (IUnknown**)&enum2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(enum2 != NULL, "got %p\n", enum2); EXPECT_REF(selection, 3); @@ -10019,7 +10582,7 @@ static void test_selection(void) ok(enum1 != enum2, "got %p, %p\n", enum1, enum2); hr = IEnumVARIANT_QueryInterface(enum2, &IID_IUnknown, (void**)&unk2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(selection, 3); EXPECT_REF(enum2, 2); ok(unk2 != unk1, "got %p, %p\n", unk1, unk2); @@ -10028,7 +10591,7 @@ static void test_selection(void) selection2 = NULL; hr = IEnumVARIANT_QueryInterface(enum1, &IID_IXMLDOMSelection, (void**)&selection2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(selection2 == selection, "got %p and %p\n", selection, selection2); EXPECT_REF(selection, 3); EXPECT_REF(enum1, 2); @@ -10036,12 +10599,12 @@ static void test_selection(void) IXMLDOMSelection_Release(selection2); hr = IEnumVARIANT_QueryInterface(enum1, &IID_IDispatch, (void**)&disp); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(selection, 3); IDispatch_Release(disp); hr = IEnumVARIANT_QueryInterface(enum1, &IID_IEnumVARIANT, (void**)&enum3); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(enum3 == enum1, "got %p and %p\n", enum3, enum1); EXPECT_REF(selection, 2); EXPECT_REF(enum1, 3); @@ -10052,14 +10615,14 @@ static void test_selection(void) enum1 = NULL; hr = IXMLDOMSelection_get__newEnum(selection, (IUnknown**)&enum1); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(enum1 != NULL, "got %p\n", enum1); EXPECT_REF(enum1, 1); EXPECT_REF(selection, 2); enum2 = NULL; hr = IXMLDOMSelection_get__newEnum(selection, (IUnknown**)&enum2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(enum2 != NULL, "got %p\n", enum2); EXPECT_REF(enum2, 1); EXPECT_REF(selection, 3); @@ -10080,92 +10643,163 @@ static void test_selection(void) IXMLDOMNodeList_Release(list); hr = IXMLDOMDocument_get_childNodes(doc, &list); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNodeList_QueryInterface(list, &IID_IXMLDOMSelection, (void**)&selection); - EXPECT_HR(hr, E_NOINTERFACE); + ok(hr == E_NOINTERFACE, "Unexpected hr %#lx.\n", hr); IXMLDOMNodeList_Release(list); /* test if IEnumVARIANT touches selection context */ hr = IXMLDOMDocument_loadXML(doc, _bstr_(xpath_simple_list), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_selectNodes(doc, _bstr_("root/*"), &list); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNodeList_QueryInterface(list, &IID_IXMLDOMSelection, (void**)&selection); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = 0; hr = IXMLDOMSelection_get_length(selection, &len); - EXPECT_HR(hr, S_OK); - ok(len == 4, "got %d\n", len); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(len == 4, "got %ld\n", len); enum1 = NULL; hr = IXMLDOMSelection_get__newEnum(selection, (IUnknown**)&enum1); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* no-op if zero count */ - V_VT(&v) = VT_I2; - hr = IEnumVARIANT_Next(enum1, 0, &v, NULL); - EXPECT_HR(hr, S_OK); - ok(V_VT(&v) == VT_I2, "got var type %d\n", V_VT(&v)); + V_VT(&v[0]) = VT_I2; + hr = IEnumVARIANT_Next(enum1, 0, &v[0], NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(V_VT(&v[0]) == VT_I2, "got var type %d\n", V_VT(&v[0])); /* positive count, null array pointer */ hr = IEnumVARIANT_Next(enum1, 1, NULL, NULL); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - ret = 1; hr = IEnumVARIANT_Next(enum1, 1, NULL, &ret); - EXPECT_HR(hr, E_INVALIDARG); - ok(ret == 0, "got %d\n", ret); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + ok(ret == 0, "got %ld\n", ret); - V_VT(&v) = VT_I2; - hr = IEnumVARIANT_Next(enum1, 1, &v, NULL); - EXPECT_HR(hr, S_OK); - ok(V_VT(&v) == VT_DISPATCH, "got var type %d\n", V_VT(&v)); + V_VT(&v[0]) = VT_I2; + hr = IEnumVARIANT_Next(enum1, 1, &v[0], NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(V_VT(&v[0]) == VT_DISPATCH, "got var type %d\n", V_VT(&v[0])); - hr = IDispatch_QueryInterface(V_DISPATCH(&v), &IID_IXMLDOMNode, (void**)&node); - EXPECT_HR(hr, S_OK); + hr = IDispatch_QueryInterface(V_DISPATCH(&v[0]), &IID_IXMLDOMNode, (void**)&node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_nodeName(node, &name); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(name, _bstr_("a")), "got node name %s\n", wine_dbgstr_w(name)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(name, L"a"), "got node name %s\n", wine_dbgstr_w(name)); SysFreeString(name); IXMLDOMNode_Release(node); - VariantClear(&v); + VariantClear(&v[0]); /* list cursor is updated */ hr = IXMLDOMSelection_nextNode(selection, &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_nodeName(node, &name); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(name, _bstr_("c")), "got node name %s\n", wine_dbgstr_w(name)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(name, L"c"), "got node name %s\n", wine_dbgstr_w(name)); IXMLDOMNode_Release(node); SysFreeString(name); - V_VT(&v) = VT_I2; - hr = IEnumVARIANT_Next(enum1, 1, &v, NULL); - EXPECT_HR(hr, S_OK); - ok(V_VT(&v) == VT_DISPATCH, "got var type %d\n", V_VT(&v)); - hr = IDispatch_QueryInterface(V_DISPATCH(&v), &IID_IXMLDOMNode, (void**)&node); - EXPECT_HR(hr, S_OK); + V_VT(&v[0]) = VT_I2; + hr = IEnumVARIANT_Next(enum1, 1, &v[0], NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(V_VT(&v[0]) == VT_DISPATCH, "got var type %d\n", V_VT(&v[0])); + hr = IDispatch_QueryInterface(V_DISPATCH(&v[0]), &IID_IXMLDOMNode, (void**)&node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_nodeName(node, &name); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(name, _bstr_("b")), "got node name %s\n", wine_dbgstr_w(name)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(name, L"b"), "got node name %s\n", wine_dbgstr_w(name)); SysFreeString(name); IXMLDOMNode_Release(node); - VariantClear(&v); - IEnumVARIANT_Release(enum1); + VariantClear(&v[0]); hr = IXMLDOMSelection_nextNode(selection, &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_nodeName(node, &name); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(name, _bstr_("d")), "got node name %s\n", wine_dbgstr_w(name)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(name, L"d"), "got node name %s\n", wine_dbgstr_w(name)); IXMLDOMNode_Release(node); SysFreeString(name); + hr = IEnumVARIANT_Reset(enum1); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + /* getting multiple elements */ + V_VT(&v[1]) = VT_EMPTY; + V_VT(&v[0]) = VT_EMPTY; + hr = IEnumVARIANT_Next(enum1, 2, v, &ret); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(ret == 2, "got %ld, expected 2\n", ret); + ok(V_VT(&v[0]) == VT_DISPATCH, "got var type %d\n", V_VT(&v[0])); + ok(V_VT(&v[1]) == VT_DISPATCH, "got var type %d\n", V_VT(&v[1])); + + hr = IDispatch_QueryInterface(V_DISPATCH(&v[0]), &IID_IXMLDOMNode, (void**)&node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNode_get_nodeName(node, &name); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(name, L"a"), "got node name %s\n", wine_dbgstr_w(name)); + SysFreeString(name); + IXMLDOMNode_Release(node); + + hr = IDispatch_QueryInterface(V_DISPATCH(&v[1]), &IID_IXMLDOMNode, (void**)&node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNode_get_nodeName(node, &name); + ok(!lstrcmpW(name, L"b"), "got node name %s\n", wine_dbgstr_w(name)); + SysFreeString(name); + IXMLDOMNode_Release(node); + + VariantClear(&v[1]); + VariantClear(&v[0]); + + /* IEnumVARIANT_Next makes the IXMLDOMSelection cursor advance one step more */ + hr = IXMLDOMSelection_nextNode(selection, &node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNode_get_nodeName(node, &name); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(name, L"d"), "got node name %s\n", wine_dbgstr_w(name)); + SysFreeString(name); + IXMLDOMNode_Release(node); + + /* The IEnumVARIANT cursor is still at position '2', */ + /* therefore attempting to fetch 4 elements yields 'c' and 'd' */ + V_VT(&v[2]) = VT_NULL; + V_VT(&v[1]) = VT_EMPTY; + V_VT(&v[0]) = VT_EMPTY; + hr = IEnumVARIANT_Next(enum1, 4, v, &ret); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + ok(ret == 2, "got %ld, expected 2\n", ret); + + ok(V_VT(&v[0]) == VT_DISPATCH, "got var type %d\n", V_VT(&v[0])); + hr = IDispatch_QueryInterface(V_DISPATCH(&v[0]), &IID_IXMLDOMNode, (void**)&node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNode_get_nodeName(node, &name); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(name, L"c"), "got node name %s\n", wine_dbgstr_w(name)); + SysFreeString(name); + IXMLDOMNode_Release(node); + + ok(V_VT(&v[1]) == VT_DISPATCH, "got var type %d\n", V_VT(&v[1])); + hr = IDispatch_QueryInterface(V_DISPATCH(&v[1]), &IID_IXMLDOMNode, (void**)&node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNode_get_nodeName(node, &name); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(name, L"d"), "got node name %s\n", wine_dbgstr_w(name)); + SysFreeString(name); + IXMLDOMNode_Release(node); + + ok(V_VT(&v[2]) == VT_EMPTY, "got var type %d, expected %d (VT_EMPTY)\n", V_VT(&v[2]), VT_EMPTY); + + VariantClear(&v[1]); + VariantClear(&v[0]); + + IEnumVARIANT_Release(enum1); + IXMLDOMSelection_Release(selection); IXMLDOMNodeList_Release(list); IXMLDOMDocument_Release(doc); @@ -10183,12 +10817,15 @@ static void write_to_file(const char *name, const char *data) ok(hfile != INVALID_HANDLE_VALUE, "failed to create test file: %s\n", name); ret = WriteFile(hfile, data, strlen(data), &written, NULL); - ok(ret, "WriteFile failed: %s, %d\n", name, GetLastError()); + ok(ret, "WriteFile failed: %s, %ld\n", name, GetLastError()); CloseHandle(hfile); } -static void test_doc_load_from_path(IXMLDOMDocument *doc, const char *path) +#define TEST_DOC_LOAD_FROM_PATH(doc,path,expected_hr, expected_ret) \ + _test_doc_load_from_path(doc, path, expected_hr, expected_ret, __LINE__) +static void _test_doc_load_from_path(IXMLDOMDocument *doc, const char *path, + HRESULT expected_hr, VARIANT_BOOL expected_ret, int line) { IXMLDOMDocument *doc2; IXMLDOMElement *elem; @@ -10202,29 +10839,32 @@ static void test_doc_load_from_path(IXMLDOMDocument *doc, const char *path) V_VT(&src) = VT_BSTR; V_BSTR(&src) = url; hr = IXMLDOMDocument_load(doc, src, &b); - ok(hr == S_OK, "Failed to load document, %#x.\n", hr); - ok(b == VARIANT_TRUE, "got %d\n", b); + ok_(__FILE__, line)(hr == expected_hr, "Failed to load document, %#lx.\n", hr); + ok_(__FILE__, line)(b == expected_ret, "got %d\n", b); V_VT(&src) = VT_BSTR | VT_BYREF; V_BSTRREF(&src) = &url; hr = IXMLDOMDocument_load(doc, src, &b); - ok(hr == S_OK, "Failed to load document, %#x.\n", hr); - ok(b == VARIANT_TRUE, "got %d\n", b); + ok_(__FILE__, line)(hr == expected_hr, "Failed to load document, %#lx.\n", hr); + ok_(__FILE__, line)(b == expected_ret, "got %d\n", b); + + if (expected_hr != S_OK) + return; url = NULL; hr = IXMLDOMDocument_get_url(doc, &url); - ok(hr == S_OK, "Failed to get document url, hr %#x.\n", hr); + ok_(__FILE__, line)(hr == S_OK, "Failed to get document url, hr %#lx.\n", hr); hr = IXMLDOMDocument_get_documentElement(doc, &elem); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* Create another instance for the same document, check url */ hr = IXMLDOMElement_get_ownerDocument(elem, &doc2); - ok(hr == S_OK, "Failed to get owner document, hr %#x.\n", hr); + ok_(__FILE__, line)(hr == S_OK, "Failed to get owner document, hr %#lx.\n", hr); hr = IXMLDOMDocument_get_url(doc2, &url2); - ok(hr == S_OK, "Failed to get document url, hr %#x.\n", hr); - ok(!lstrcmpW(url, url2), "Unexpected url %s.\n", wine_dbgstr_w(url2)); + ok_(__FILE__, line)(hr == S_OK, "Failed to get document url, hr %#lx.\n", hr); + ok_(__FILE__, line)(!lstrcmpW(url, url2), "Unexpected url %s.\n", wine_dbgstr_w(url2)); IXMLDOMDocument_Release(doc2); IXMLDOMElement_Release(elem); @@ -10250,10 +10890,25 @@ static void test_load(void) IXMLDOMNodeList *list; IXMLDOMDocument *doc; BSTR bstr1, bstr2; + IStream *stream; VARIANT_BOOL b; VARIANT src; HRESULT hr; void* ptr; + int n; + struct encoding_test + { + const char *xml; + HRESULT expected_hr; + VARIANT_BOOL expected_ret; + } encoding_tests[] = + { + { gbkxml, S_OK, VARIANT_TRUE }, + { iso8859_1_xml, S_OK, VARIANT_TRUE }, + { win1252xml, S_OK, VARIANT_TRUE }, + { win936xml, S_FALSE, VARIANT_FALSE }, + }; + GetTempPathA(MAX_PATH, path); strcat(path, "winetest.xml"); @@ -10267,42 +10922,58 @@ static void test_load(void) V_VT(&src) = VT_UNKNOWN; V_UNKNOWN(&src) = NULL; hr = IXMLDOMDocument_load(doc, src, &b); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_FALSE, "got %d\n", b); /* "file://" url */ strcpy(path2, "file://"); strcat(path2, path); - test_doc_load_from_path(doc, path2); + TEST_DOC_LOAD_FROM_PATH(doc, path2, S_OK, VARIANT_TRUE); /* file:// url, forward slashes */ url_forward_slash(path2); - test_doc_load_from_path(doc, path2); + TEST_DOC_LOAD_FROM_PATH(doc, path2, S_OK, VARIANT_TRUE); /* "file:/" url */ strcpy(path2, "file:/"); strcat(path2, path); - test_doc_load_from_path(doc, path); + TEST_DOC_LOAD_FROM_PATH(doc, path, S_OK, VARIANT_TRUE); /* file:/ with forward slashes. */ url_forward_slash(path2); - test_doc_load_from_path(doc, path2); + TEST_DOC_LOAD_FROM_PATH(doc, path2, S_OK, VARIANT_TRUE); /* Regular local path. */ - test_doc_load_from_path(doc, path); + TEST_DOC_LOAD_FROM_PATH(doc, path, S_OK, VARIANT_TRUE); /* load from a path: VT_BSTR|VT_BYREF, null ptr */ V_VT(&src) = VT_BSTR | VT_BYREF; V_BSTRREF(&src) = NULL; hr = IXMLDOMDocument_load(doc, src, &b); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_FALSE, "got %d\n", b); bstr1 = NULL; hr = IXMLDOMDocument_get_url(doc, &bstr1); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); SysFreeString(bstr1); + /* Regular local path with some URL encoded characters. */ + strcpy(path2, path); + n = strlen(path2); + strcpy(&path2[n-1], "%6C"); /* C:\path\to\winetest.xm%6C */ + TEST_DOC_LOAD_FROM_PATH(doc, path2, S_OK, VARIANT_TRUE); + + /* Both spaces and %20s work. */ + GetTempPathA(MAX_PATH, path2); + strcat(path2, "wine test.xml"); + write_to_file(path2, win1252xml); + TEST_DOC_LOAD_FROM_PATH(doc, path2, S_OK, VARIANT_TRUE); + GetTempPathA(MAX_PATH, path2); + strcat(path2, "wine%20test.xml"); + TEST_DOC_LOAD_FROM_PATH(doc, path2, S_OK, VARIANT_TRUE); + DeleteFileA(path2); + DeleteFileA(path); /* load from existing path, no xml content */ @@ -10312,12 +10983,12 @@ static void test_load(void) V_BSTR(&src) = _bstr_(path); b = VARIANT_TRUE; hr = IXMLDOMDocument_load(doc, src, &b); - ok(hr == S_FALSE, "got 0x%08x\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_FALSE, "got %d\n", b); bstr1 = (void *)0xdeadbeef; hr = IXMLDOMDocument_get_url(doc, &bstr1); - ok(hr == S_FALSE, "got 0x%08x\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(bstr1 == NULL, "got %p\n", bstr1); DeleteFileA(path); @@ -10326,15 +10997,15 @@ static void test_load(void) doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_loadXML(doc, _bstr_(szExampleXML), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "got %d\n", b); hr = IXMLDOMDocument_selectNodes(doc, _bstr_("//*"), &list); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); bstr1 = _bstr_(list_to_string(list)); hr = IXMLDOMNodeList_reset(list); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMDocument_Release(doc); @@ -10346,23 +11017,23 @@ static void test_load(void) ok(V_ARRAY(&src) != NULL, "SafeArrayCreateVector() returned NULL\n"); ptr = NULL; hr = SafeArrayAccessData(V_ARRAY(&src), &ptr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(ptr != NULL, "SafeArrayAccessData() returned NULL\n"); memcpy(ptr, szExampleXML, lstrlenA(szExampleXML)); hr = SafeArrayUnlock(V_ARRAY(&src)); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_load(doc, src, &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "got %d\n", b); hr = IXMLDOMDocument_selectNodes(doc, _bstr_("//*"), &list); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); bstr2 = _bstr_(list_to_string(list)); hr = IXMLDOMNodeList_reset(list); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(lstrcmpW(bstr1, bstr2) == 0, "strings not equal: %s : %s\n", wine_dbgstr_w(bstr1), wine_dbgstr_w(bstr2)); @@ -10379,16 +11050,16 @@ static void test_load(void) ok(V_ARRAY(&src) != NULL, "SafeArrayCreateVector() returned NULL\n"); ptr = NULL; hr = SafeArrayAccessData(V_ARRAY(&src), &ptr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(ptr != NULL, "SafeArrayAccessData() returned NULL\n"); memcpy(ptr, szComplete1, lstrlenW(szComplete1) * sizeof(WCHAR)); hr = SafeArrayUnlock(V_ARRAY(&src)); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_load(doc, src, &b); - todo_wine EXPECT_HR(hr, S_FALSE); - todo_wine ok(b == VARIANT_FALSE, "got %d\n", b); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + ok(b == VARIANT_FALSE, "got %d\n", b); VariantClear(&src); @@ -10398,26 +11069,60 @@ static void test_load(void) ok(V_ARRAY(&src) != NULL, "SafeArrayCreateVector() returned NULL\n"); ptr = NULL; hr = SafeArrayAccessData(V_ARRAY(&src), &ptr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(ptr != NULL, "SafeArrayAccessData() returned NULL\n"); memcpy(ptr, szComplete1, lstrlenW(szComplete1) * sizeof(WCHAR)); hr = SafeArrayUnlock(V_ARRAY(&src)); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_load(doc, src, &b); - todo_wine EXPECT_HR(hr, E_INVALIDARG); + todo_wine ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_FALSE, "got %d\n", b); VariantClear(&src); + + /* test istream with empty content */ + stream = SHCreateMemStream((const BYTE*)nocontent, strlen(nocontent)); + V_VT(&src) = VT_UNKNOWN; + V_UNKNOWN(&src) = (IUnknown*)stream; + b = VARIANT_TRUE; + hr = IXMLDOMDocument_load(doc, src, &b); + todo_wine ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + ok(b == VARIANT_FALSE, "got %d\n", b); + EXPECT_PARSE_ERROR(doc, XML_E_INVALIDATROOTLEVEL, TRUE); + VariantClear(&src); + + /* test istream with valid xml */ + stream = SHCreateMemStream((const BYTE*)complete4A, strlen(complete4A)); + V_VT(&src) = VT_UNKNOWN; + V_UNKNOWN(&src) = (IUnknown*)stream; + b = VARIANT_FALSE; + hr = IXMLDOMDocument_load(doc, src, &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(b == VARIANT_TRUE, "got %d\n", b); + EXPECT_PARSE_ERROR(doc, S_OK, FALSE); + VariantClear(&src); + IXMLDOMDocument_Release(doc); + /* Encoding tests. */ + for (n = 0; n < ARRAY_SIZE(encoding_tests); n++) + { + GetTempPathA(MAX_PATH, path); + strcat(path, "codepage_test.xml"); + write_to_file(path, encoding_tests[n].xml); + doc = create_document(&IID_IXMLDOMDocument); + TEST_DOC_LOAD_FROM_PATH(doc, path, encoding_tests[n].expected_hr, encoding_tests[n].expected_ret); + DeleteFileA(path); + IXMLDOMDocument_Release(doc); + } + free_bstrs(); } static void test_domobj_dispex(IUnknown *obj) { - static const WCHAR testW[] = {'t','e','s','t','p','r','o','p',0}; DISPID dispid = DISPID_XMLDOM_NODELIST_RESET; IDispatchEx *dispex; IUnknown *unk; @@ -10427,42 +11132,42 @@ static void test_domobj_dispex(IUnknown *obj) BSTR name; hr = IUnknown_QueryInterface(obj, &IID_IDispatchEx, (void**)&dispex); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); if (FAILED(hr)) return; ticnt = 0; hr = IDispatchEx_GetTypeInfoCount(dispex, &ticnt); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(ticnt == 1, "ticnt=%u\n", ticnt); - name = SysAllocString(szstar); + name = SysAllocString(L"*"); hr = IDispatchEx_DeleteMemberByName(dispex, name, fdexNameCaseSensitive); - EXPECT_HR(hr, E_NOTIMPL); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); SysFreeString(name); hr = IDispatchEx_DeleteMemberByDispID(dispex, dispid); - EXPECT_HR(hr, E_NOTIMPL); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); props = 0; hr = IDispatchEx_GetMemberProperties(dispex, dispid, grfdexPropCanAll, &props); - EXPECT_HR(hr, E_NOTIMPL); - ok(props == 0, "expected 0 got %d\n", props); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); + ok(props == 0, "expected 0 got %ld\n", props); hr = IDispatchEx_GetMemberName(dispex, dispid, &name); - EXPECT_HR(hr, E_NOTIMPL); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); if (SUCCEEDED(hr)) SysFreeString(name); hr = IDispatchEx_GetNextDispID(dispex, fdexEnumDefault, DISPID_XMLDOM_NODELIST_RESET, &dispid); - EXPECT_HR(hr, E_NOTIMPL); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); unk = (IUnknown*)0xdeadbeef; hr = IDispatchEx_GetNameSpaceParent(dispex, &unk); - EXPECT_HR(hr, E_NOTIMPL); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); ok(unk == (IUnknown*)0xdeadbeef, "got %p\n", unk); - name = SysAllocString(testW); + name = SysAllocString(L"testprop"); hr = IDispatchEx_GetDispID(dispex, name, fdexNameEnsure, &dispid); - ok(hr == DISP_E_UNKNOWNNAME, "got 0x%08x\n", hr); + ok(hr == DISP_E_UNKNOWNNAME, "Unexpected hr %#lx.\n", hr); SysFreeString(name); IDispatchEx_Release(dispex); @@ -10476,29 +11181,28 @@ static void test_mxnamespacemanager(void) IMXNamespaceManager *nsmgr; IUnknown *unk1, *unk2; WCHAR buffW[250]; - IDispatch *disp; IUnknown *unk; HRESULT hr; INT len; hr = CoCreateInstance(&CLSID_MXNamespaceManager40, NULL, CLSCTX_INPROC_SERVER, &IID_IMXNamespaceManager, (void**)&nsmgr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - /* IMXNamespaceManager inherits from IUnknown */ - hr = IMXNamespaceManager_QueryInterface(nsmgr, &IID_IDispatch, (void**)&disp); - EXPECT_HR(hr, S_OK); - IDispatch_Release(disp); + check_interface(nsmgr, &IID_IDispatch, TRUE); + check_interface(nsmgr, &IID_IDispatchEx, TRUE); + check_interface(nsmgr, &IID_IMXNamespaceManager, TRUE); + check_interface(nsmgr, &IID_IVBMXNamespaceManager, TRUE); hr = IMXNamespaceManager_QueryInterface(nsmgr, &IID_IVBMXNamespaceManager, (void**)&mgr2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(nsmgr, 2); EXPECT_REF(mgr2, 2); prefixes = NULL; hr = IVBMXNamespaceManager_getDeclaredPrefixes(mgr2, &prefixes); -todo_wine - ok(hr == S_OK, "got 0x%08x\n", hr); + todo_wine + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); if (hr == S_OK) { IDispatchEx *dispex; @@ -10520,7 +11224,7 @@ todo_wine IUnknown_Release(unk2); hr = IMXNamespacePrefixes_QueryInterface(prefixes, &IID_IDispatchEx, (void**)&dispex); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&arg) = VT_I4; V_I4(&arg) = 0; @@ -10532,7 +11236,7 @@ todo_wine V_VT(&ret) = VT_EMPTY; V_DISPATCH(&ret) = (void*)0x1; hr = IDispatchEx_Invoke(dispex, DISPID_VALUE, &IID_NULL, 0, DISPATCH_METHOD, &dispparams, &ret, NULL, NULL); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&ret) == VT_BSTR, "got %d\n", V_VT(&ret)); ok(V_BSTR(&ret) != NULL, "got %p\n", V_BSTR(&ret)); VariantClear(&ret); @@ -10543,94 +11247,94 @@ todo_wine IVBMXNamespaceManager_Release(mgr2); hr = IMXNamespaceManager_declarePrefix(nsmgr, NULL, NULL); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* prefix already added */ hr = IMXNamespaceManager_declarePrefix(nsmgr, NULL, _bstr_("ns0 uri")); - EXPECT_HR(hr, S_FALSE); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); hr = IMXNamespaceManager_declarePrefix(nsmgr, _bstr_("ns0"), NULL); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); /* "xml" and "xmlns" are not allowed here */ hr = IMXNamespaceManager_declarePrefix(nsmgr, _bstr_("xml"), _bstr_("uri1")); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IMXNamespaceManager_declarePrefix(nsmgr, _bstr_("xmlns"), _bstr_("uri1")); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); todo_wine { hr = IMXNamespaceManager_getDeclaredPrefix(nsmgr, -1, NULL, NULL); - EXPECT_HR(hr, E_FAIL); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); } hr = IMXNamespaceManager_getDeclaredPrefix(nsmgr, 0, NULL, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); len = -1; hr = IMXNamespaceManager_getDeclaredPrefix(nsmgr, 0, NULL, &len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(len == 3, "got %d\n", len); len = -1; buffW[0] = 0x1; hr = IMXNamespaceManager_getDeclaredPrefix(nsmgr, 0, buffW, &len); - EXPECT_HR(hr, E_XML_BUFFERTOOSMALL); + ok(hr == E_XML_BUFFERTOOSMALL, "Unexpected hr %#lx.\n", hr); ok(len == -1, "got %d\n", len); ok(buffW[0] == 0x1, "got %x\n", buffW[0]); len = 10; buffW[0] = 0x1; hr = IMXNamespaceManager_getDeclaredPrefix(nsmgr, 0, buffW, &len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(len == 3, "got %d\n", len); - ok(!lstrcmpW(buffW, _bstr_("xml")), "got prefix %s\n", wine_dbgstr_w(buffW)); + ok(!lstrcmpW(buffW, L"xml"), "got prefix %s\n", wine_dbgstr_w(buffW)); /* getURI */ hr = IMXNamespaceManager_getURI(nsmgr, NULL, NULL, NULL, NULL); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); len = -1; hr = IMXNamespaceManager_getURI(nsmgr, NULL, NULL, NULL, &len); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok(len == -1, "got %d\n", len); hr = IMXNamespaceManager_getURI(nsmgr, _bstr_("xml"), NULL, NULL, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); len = -1; hr = IMXNamespaceManager_getURI(nsmgr, _bstr_("xml"), NULL, NULL, &len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* length of "xml" uri is constant */ ok(len == strlen(xmluriA), "got %d\n", len); len = 100; hr = IMXNamespaceManager_getURI(nsmgr, _bstr_("xml"), NULL, buffW, &len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(len == strlen(xmluriA), "got %d\n", len); ok(!lstrcmpW(buffW, _bstr_(xmluriA)), "got prefix %s\n", wine_dbgstr_w(buffW)); len = strlen(xmluriA)-1; buffW[0] = 0x1; hr = IMXNamespaceManager_getURI(nsmgr, _bstr_("xml"), NULL, buffW, &len); - EXPECT_HR(hr, E_XML_BUFFERTOOSMALL); + ok(hr == E_XML_BUFFERTOOSMALL, "Unexpected hr %#lx.\n", hr); ok(len == strlen(xmluriA)-1, "got %d\n", len); ok(buffW[0] == 0x1, "got %x\n", buffW[0]); /* prefix xml1 not defined */ len = -1; hr = IMXNamespaceManager_getURI(nsmgr, _bstr_("xml1"), NULL, NULL, &len); - EXPECT_HR(hr, S_FALSE); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(len == 0, "got %d\n", len); len = 100; buffW[0] = 0x1; hr = IMXNamespaceManager_getURI(nsmgr, _bstr_("xml1"), NULL, buffW, &len); - EXPECT_HR(hr, S_FALSE); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(buffW[0] == 0, "got %x\n", buffW[0]); ok(len == 0, "got %d\n", len); /* IDispatchEx tests */ hr = IMXNamespaceManager_QueryInterface(nsmgr, &IID_IUnknown, (void**)&unk); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); test_domobj_dispex(unk); IUnknown_Release(unk); @@ -10639,136 +11343,136 @@ todo_wine { /* ::getPrefix() */ hr = CoCreateInstance(&CLSID_MXNamespaceManager40, NULL, CLSCTX_INPROC_SERVER, &IID_IMXNamespaceManager, (void**)&nsmgr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXNamespaceManager_getPrefix(nsmgr, NULL, 0, NULL, NULL); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); len = -1; hr = IMXNamespaceManager_getPrefix(nsmgr, NULL, 0, NULL, &len); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok(len == -1, "got %d\n", len); len = 100; buffW[0] = 0x1; hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns0 uri"), 0, buffW, &len); - EXPECT_HR(hr, E_FAIL); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(buffW[0] == 0x1, "got %x\n", buffW[0]); ok(len == 100, "got %d\n", len); len = 0; buffW[0] = 0x1; hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns0 uri"), 0, buffW, &len); - EXPECT_HR(hr, E_FAIL); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(buffW[0] == 0x1, "got %x\n", buffW[0]); ok(len == 0, "got %d\n", len); hr = IMXNamespaceManager_declarePrefix(nsmgr, _bstr_("ns1"), _bstr_("ns1 uri")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = 100; buffW[0] = 0x1; hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns1 uri"), 0, buffW, &len); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(buffW, _bstr_("ns1")), "got %s\n", wine_dbgstr_w(buffW)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(buffW, L"ns1"), "got %s\n", wine_dbgstr_w(buffW)); ok(len == 3, "got %d\n", len); len = 100; buffW[0] = 0x1; hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("http://www.w3.org/XML/1998/namespace"), 0, buffW, &len); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(buffW, _bstr_("xml")), "got %s\n", wine_dbgstr_w(buffW)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(buffW, L"xml"), "got %s\n", wine_dbgstr_w(buffW)); ok(len == 3, "got %d\n", len); /* with null buffer it's possible to get required length */ len = 100; hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("http://www.w3.org/XML/1998/namespace"), 0, NULL, &len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(len == 3, "got %d\n", len); len = 0; hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("http://www.w3.org/XML/1998/namespace"), 0, NULL, &len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(len == 3, "got %d\n", len); len = 100; buffW[0] = 0x1; hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns1 uri"), 1, buffW, &len); - EXPECT_HR(hr, E_FAIL); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(buffW[0] == 0x1, "got %x\n", buffW[0]); ok(len == 100, "got %d\n", len); len = 100; buffW[0] = 0x1; hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns1 uri"), 2, buffW, &len); - EXPECT_HR(hr, E_FAIL); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(buffW[0] == 0x1, "got %x\n", buffW[0]); ok(len == 100, "got %d\n", len); len = 100; buffW[0] = 0x1; hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_(""), 0, buffW, &len); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok(buffW[0] == 0x1, "got %x\n", buffW[0]); ok(len == 100, "got %d\n", len); len = 100; buffW[0] = 0x1; hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_(""), 1, buffW, &len); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok(buffW[0] == 0x1, "got %x\n", buffW[0]); ok(len == 100, "got %d\n", len); len = 100; buffW[0] = 0x1; hr = IMXNamespaceManager_getPrefix(nsmgr, NULL, 0, buffW, &len); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok(buffW[0] == 0x1, "got %x\n", buffW[0]); ok(len == 100, "got %d\n", len); len = 100; buffW[0] = 0x1; hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns0 uri"), 1, buffW, &len); - EXPECT_HR(hr, E_FAIL); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(buffW[0] == 0x1, "got %x\n", buffW[0]); ok(len == 100, "got %d\n", len); len = 100; buffW[0] = 0x1; hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_(""), 1, buffW, &len); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok(buffW[0] == 0x1, "got %x\n", buffW[0]); ok(len == 100, "got %d\n", len); /* declare another one, indices are shifted */ hr = IMXNamespaceManager_declarePrefix(nsmgr, _bstr_("ns2"), _bstr_("ns2 uri")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = 100; buffW[0] = 0x1; hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns1 uri"), 0, buffW, &len); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(buffW, _bstr_("ns1")), "got %s\n", wine_dbgstr_w(buffW)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(buffW, L"ns1"), "got %s\n", wine_dbgstr_w(buffW)); ok(len == 3, "got %d\n", len); len = 100; buffW[0] = 0x1; hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns2 uri"), 0, buffW, &len); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(buffW, _bstr_("ns2")), "got %s\n", wine_dbgstr_w(buffW)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(buffW, L"ns2"), "got %s\n", wine_dbgstr_w(buffW)); ok(len == 3, "got %d\n", len); len = 100; buffW[0] = 0x1; hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns2 uri"), 1, buffW, &len); - EXPECT_HR(hr, E_FAIL); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(buffW[0] == 0x1, "got %x\n", buffW[0]); ok(len == 100, "got %d\n", len); len = 100; buffW[0] = 0x1; hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_(""), 1, buffW, &len); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok(buffW[0] == 0x1, "got %x\n", buffW[0]); ok(len == 100, "got %d\n", len); @@ -10777,79 +11481,79 @@ todo_wine { /* push/pop tests */ hr = CoCreateInstance(&CLSID_MXNamespaceManager40, NULL, CLSCTX_INPROC_SERVER, &IID_IMXNamespaceManager, (void**)&nsmgr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* pop with empty stack */ hr = IMXNamespaceManager_popContext(nsmgr); - EXPECT_HR(hr, E_FAIL); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); hr = IMXNamespaceManager_declarePrefix(nsmgr, _bstr_("ns1"), _bstr_("ns1 uri")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = 100; buffW[0] = 0x1; hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns1 uri"), 0, buffW, &len); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(buffW, _bstr_("ns1")), "got %s\n", wine_dbgstr_w(buffW)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(buffW, L"ns1"), "got %s\n", wine_dbgstr_w(buffW)); ok(len == 3, "got %d\n", len); hr = IMXNamespaceManager_pushContext(nsmgr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = 100; buffW[0] = 0x1; hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns1 uri"), 0, buffW, &len); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(buffW, _bstr_("ns1")), "got %s\n", wine_dbgstr_w(buffW)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(buffW, L"ns1"), "got %s\n", wine_dbgstr_w(buffW)); ok(len == 3, "got %d\n", len); hr = IMXNamespaceManager_declarePrefix(nsmgr, _bstr_("ns2"), _bstr_("ns2 uri")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = 100; buffW[0] = 0x1; hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns2 uri"), 0, buffW, &len); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(buffW, _bstr_("ns2")), "got %s\n", wine_dbgstr_w(buffW)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(buffW, L"ns2"), "got %s\n", wine_dbgstr_w(buffW)); ok(len == 3, "got %d\n", len); hr = IMXNamespaceManager_pushContext(nsmgr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXNamespaceManager_declarePrefix(nsmgr, _bstr_("ns3"), _bstr_("ns3 uri")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = 100; buffW[0] = 0x1; hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns2 uri"), 0, buffW, &len); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(buffW, _bstr_("ns2")), "got %s\n", wine_dbgstr_w(buffW)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(buffW, L"ns2"), "got %s\n", wine_dbgstr_w(buffW)); ok(len == 3, "got %d\n", len); len = 100; buffW[0] = 0x1; hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns1 uri"), 0, buffW, &len); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(buffW, _bstr_("ns1")), "got %s\n", wine_dbgstr_w(buffW)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(buffW, L"ns1"), "got %s\n", wine_dbgstr_w(buffW)); ok(len == 3, "got %d\n", len); hr = IMXNamespaceManager_popContext(nsmgr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXNamespaceManager_popContext(nsmgr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = 100; buffW[0] = 0x1; hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns2 uri"), 0, buffW, &len); - EXPECT_HR(hr, E_FAIL); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(buffW[0] == 0x1, "got %x\n", buffW[0]); ok(len == 100, "got %d\n", len); len = 100; buffW[0] = 0x1; hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns1 uri"), 0, buffW, &len); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(buffW, _bstr_("ns1")), "got %s\n", wine_dbgstr_w(buffW)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(buffW, L"ns1"), "got %s\n", wine_dbgstr_w(buffW)); ok(len == 3, "got %d\n", len); IMXNamespaceManager_Release(nsmgr); @@ -10867,96 +11571,96 @@ static void test_mxnamespacemanager_override(void) hr = CoCreateInstance(&CLSID_MXNamespaceManager40, NULL, CLSCTX_INPROC_SERVER, &IID_IMXNamespaceManager, (void**)&nsmgr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = ARRAY_SIZE(buffW); buffW[0] = 0; hr = IMXNamespaceManager_getDeclaredPrefix(nsmgr, 0, buffW, &len); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(buffW, _bstr_("xml")), "got prefix %s\n", wine_dbgstr_w(buffW)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(buffW, L"xml"), "got prefix %s\n", wine_dbgstr_w(buffW)); len = ARRAY_SIZE(buffW); buffW[0] = 0; hr = IMXNamespaceManager_getDeclaredPrefix(nsmgr, 1, buffW, &len); - EXPECT_HR(hr, E_FAIL); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); hr = IMXNamespaceManager_getAllowOverride(nsmgr, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); b = VARIANT_FALSE; hr = IMXNamespaceManager_getAllowOverride(nsmgr, &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "got %d\n", b); hr = IMXNamespaceManager_putAllowOverride(nsmgr, VARIANT_FALSE); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXNamespaceManager_declarePrefix(nsmgr, NULL, _bstr_("ns0 uri")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = ARRAY_SIZE(buffW); buffW[0] = 0; hr = IMXNamespaceManager_getURI(nsmgr, _bstr_(""), NULL, buffW, &len); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(buffW, _bstr_("ns0 uri")), "got uri %s\n", wine_dbgstr_w(buffW)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(buffW, L"ns0 uri"), "got uri %s\n", wine_dbgstr_w(buffW)); hr = IMXNamespaceManager_declarePrefix(nsmgr, _bstr_("ns0"), _bstr_("ns0 uri")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = ARRAY_SIZE(buffW); buffW[0] = 0; hr = IMXNamespaceManager_getDeclaredPrefix(nsmgr, 0, buffW, &len); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(buffW, _bstr_("xml")), "got prefix %s\n", wine_dbgstr_w(buffW)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(buffW, L"xml"), "got prefix %s\n", wine_dbgstr_w(buffW)); len = ARRAY_SIZE(buffW); buffW[0] = 0; hr = IMXNamespaceManager_getDeclaredPrefix(nsmgr, 1, buffW, &len); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(buffW, _bstr_("ns0")), "got prefix %s\n", wine_dbgstr_w(buffW)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(buffW, L"ns0"), "got prefix %s\n", wine_dbgstr_w(buffW)); len = ARRAY_SIZE(buffW); buffW[0] = 0; hr = IMXNamespaceManager_getDeclaredPrefix(nsmgr, 2, buffW, &len); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(buffW, _bstr_("")), "got prefix %s\n", wine_dbgstr_w(buffW)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(buffW, L""), "got prefix %s\n", wine_dbgstr_w(buffW)); /* new prefix placed at index 1 always */ hr = IMXNamespaceManager_declarePrefix(nsmgr, _bstr_("ns1"), _bstr_("ns1 uri")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = ARRAY_SIZE(buffW); buffW[0] = 0; hr = IMXNamespaceManager_getDeclaredPrefix(nsmgr, 1, buffW, &len); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(buffW, _bstr_("ns1")), "got prefix %s\n", wine_dbgstr_w(buffW)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(buffW, L"ns1"), "got prefix %s\n", wine_dbgstr_w(buffW)); hr = IMXNamespaceManager_declarePrefix(nsmgr, _bstr_(""), NULL); - todo_wine EXPECT_HR(hr, E_FAIL); + todo_wine ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); hr = IMXNamespaceManager_declarePrefix(nsmgr, NULL, NULL); - EXPECT_HR(hr, E_FAIL); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); hr = IMXNamespaceManager_declarePrefix(nsmgr, NULL, _bstr_("ns0 uri")); - EXPECT_HR(hr, E_FAIL); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); hr = IMXNamespaceManager_putAllowOverride(nsmgr, VARIANT_TRUE); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXNamespaceManager_declarePrefix(nsmgr, NULL, _bstr_("ns0 uri override")); - EXPECT_HR(hr, S_FALSE); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); len = ARRAY_SIZE(buffW); buffW[0] = 0; hr = IMXNamespaceManager_getURI(nsmgr, _bstr_(""), NULL, buffW, &len); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(buffW, _bstr_("ns0 uri override")), "got uri %s\n", wine_dbgstr_w(buffW)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(buffW, L"ns0 uri override"), "got uri %s\n", wine_dbgstr_w(buffW)); len = ARRAY_SIZE(buffW); buffW[0] = 0; hr = IMXNamespaceManager_getDeclaredPrefix(nsmgr, 3, buffW, &len); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(buffW, _bstr_("")), "got prefix %s\n", wine_dbgstr_w(buffW)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(buffW, L""), "got prefix %s\n", wine_dbgstr_w(buffW)); IMXNamespaceManager_Release(nsmgr); @@ -11000,7 +11704,7 @@ static void test_dispex(void) doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_QueryInterface(doc, &IID_IUnknown, (void**)&unk); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); test_domobj_dispex(unk); IUnknown_Release(unk); @@ -11024,37 +11728,37 @@ static void test_dispex(void) /* IXMLDOMNodeList */ hr = IXMLDOMDocument_getElementsByTagName(doc, _bstr_("*"), &node_list); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNodeList_QueryInterface(node_list, &IID_IUnknown, (void**)&unk); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); test_domobj_dispex(unk); IUnknown_Release(unk); IXMLDOMNodeList_Release(node_list); /* IXMLDOMNodeList for children list */ hr = IXMLDOMDocument_get_childNodes(doc, &node_list); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNodeList_QueryInterface(node_list, &IID_IUnknown, (void**)&unk); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); test_domobj_dispex(unk); IUnknown_Release(unk); /* collection dispex test, empty collection */ hr = IXMLDOMNodeList_QueryInterface(node_list, &IID_IDispatchEx, (void**)&dispex); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); did = 0; hr = IDispatchEx_GetDispID(dispex, _bstr_("0"), 0, &did); - EXPECT_HR(hr, S_OK); - ok(did == DISPID_DOM_COLLECTION_BASE, "got 0x%08x\n", did); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(did == DISPID_DOM_COLLECTION_BASE, "Unexpected value %ld.\n", did); hr = IDispatchEx_GetDispID(dispex, _bstr_("1"), 0, &did); - EXPECT_HR(hr, S_OK); - ok(did == DISPID_DOM_COLLECTION_BASE+1, "got 0x%08x\n", did); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(did == DISPID_DOM_COLLECTION_BASE+1, "Unexpected value %ld.\n", did); IDispatchEx_Release(dispex); did = -1; hr = IDispatchEx_GetDispID(dispex, _bstr_("item"), 0, &did); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(did == DISPID_VALUE, "got %d\n", did); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(did == DISPID_VALUE, "got %ld\n", did); V_VT(&arg) = VT_I4; V_I4(&arg) = 0; @@ -11066,9 +11770,9 @@ static void test_dispex(void) V_VT(&ret) = VT_EMPTY; V_DISPATCH(&ret) = (void*)0x1; hr = IDispatchEx_Invoke(dispex, DISPID_VALUE, &IID_NULL, 0, DISPATCH_METHOD, &dispparams, &ret, NULL, NULL); - ok(hr == DISP_E_BADPARAMCOUNT, "got 0x%08x\n", hr); + ok(hr == DISP_E_BADPARAMCOUNT, "Unexpected hr %#lx.\n", hr); ok(V_VT(&ret) == VT_EMPTY, "got %d\n", V_VT(&ret)); -todo_wine + todo_wine ok(broken(V_DISPATCH(&ret) == (void*)0x1) || (V_DISPATCH(&ret) == NULL), "got %p\n", V_DISPATCH(&ret)); V_VT(&arg) = VT_I4; @@ -11081,9 +11785,9 @@ todo_wine V_VT(&ret) = VT_EMPTY; V_DISPATCH(&ret) = (void*)0x1; hr = IDispatchEx_Invoke(dispex, DISPID_VALUE, &IID_NULL, 0, DISPATCH_METHOD, &dispparams, &ret, NULL, NULL); - ok(hr == DISP_E_BADPARAMCOUNT, "got 0x%08x\n", hr); + ok(hr == DISP_E_BADPARAMCOUNT, "Unexpected hr %#lx.\n", hr); ok(V_VT(&ret) == VT_EMPTY, "got %d\n", V_VT(&ret)); -todo_wine + todo_wine ok(broken(V_DISPATCH(&ret) == (void*)0x1) || (V_DISPATCH(&ret) == NULL), "got %p\n", V_DISPATCH(&ret)); V_VT(&arg) = VT_I4; @@ -11096,21 +11800,21 @@ todo_wine V_VT(&ret) = VT_EMPTY; V_DISPATCH(&ret) = (void*)0x1; hr = IDispatchEx_Invoke(dispex, DISPID_VALUE, &IID_NULL, 0, DISPATCH_METHOD, &dispparams, &ret, NULL, NULL); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&ret) == VT_DISPATCH, "got %d\n", V_VT(&ret)); ok(V_DISPATCH(&ret) == NULL, "got %p\n", V_DISPATCH(&ret)); V_VT(&ret) = VT_EMPTY; V_DISPATCH(&ret) = (void*)0x1; hr = IDispatchEx_Invoke(dispex, DISPID_VALUE, &IID_NULL, 0, DISPATCH_PROPERTYGET, &dispparams, &ret, NULL, NULL); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&ret) == VT_DISPATCH, "got %d\n", V_VT(&ret)); ok(V_DISPATCH(&ret) == NULL, "got %p\n", V_DISPATCH(&ret)); V_VT(&ret) = VT_EMPTY; V_DISPATCH(&ret) = (void*)0x1; hr = IDispatchEx_Invoke(dispex, DISPID_VALUE, &IID_NULL, 0, DISPATCH_PROPERTYGET|DISPATCH_METHOD, &dispparams, &ret, NULL, NULL); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&ret) == VT_DISPATCH, "got %d\n", V_VT(&ret)); ok(V_DISPATCH(&ret) == NULL, "got %p\n", V_DISPATCH(&ret)); @@ -11122,9 +11826,9 @@ todo_wine V_VT(&ret) = VT_EMPTY; V_I4(&ret) = 1; hr = IDispatchEx_Invoke(dispex, DISPID_DOM_NODELIST_LENGTH, &IID_NULL, 0, DISPATCH_PROPERTYGET, &dispparams, &ret, NULL, NULL); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&ret) == VT_I4, "got %d\n", V_VT(&ret)); - ok(V_I4(&ret) == 0, "got %d\n", V_I4(&ret)); + ok(V_I4(&ret) == 0, "got %ld\n", V_I4(&ret)); dispparams.cArgs = 0; dispparams.cNamedArgs = 0; @@ -11134,21 +11838,21 @@ todo_wine V_VT(&ret) = VT_EMPTY; V_I4(&ret) = 1; hr = IDispatchEx_Invoke(dispex, DISPID_DOM_NODELIST_LENGTH, &IID_NULL, 0, DISPATCH_METHOD, &dispparams, &ret, NULL, NULL); - ok(hr == DISP_E_MEMBERNOTFOUND, "got 0x%08x\n", hr); + ok(hr == DISP_E_MEMBERNOTFOUND, "Unexpected hr %#lx.\n", hr); ok(V_VT(&ret) == VT_EMPTY, "got %d\n", V_VT(&ret)); -todo_wine - ok(broken(V_I4(&ret) == 1) || (V_I4(&ret) == 0), "got %d\n", V_I4(&ret)); + todo_wine + ok(broken(V_I4(&ret) == 1) || (V_I4(&ret) == 0), "got %ld\n", V_I4(&ret)); IXMLDOMNodeList_Release(node_list); /* IXMLDOMParseError */ hr = IXMLDOMDocument_get_parseError(doc, &error); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMParseError_QueryInterface(error, &IID_IUnknown, (void**)&unk); test_domobj_dispex(unk); hr = IXMLDOMParseError_QueryInterface(error, &IID_IDispatchEx, (void**)&dispex); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&arg) = VT_I4; V_I4(&arg) = 0; @@ -11160,9 +11864,9 @@ todo_wine V_VT(&ret) = VT_EMPTY; V_DISPATCH(&ret) = (void*)0x1; hr = IDispatchEx_Invoke(dispex, DISPID_VALUE, &IID_NULL, 0, DISPATCH_METHOD, &dispparams, &ret, NULL, NULL); - ok(hr == DISP_E_MEMBERNOTFOUND, "got 0x%08x\n", hr); + ok(hr == DISP_E_MEMBERNOTFOUND, "Unexpected hr %#lx.\n", hr); ok(V_VT(&ret) == VT_EMPTY, "got %d\n", V_VT(&ret)); -todo_wine + todo_wine ok(broken(V_DISPATCH(&ret) == (void*)0x1) || (V_DISPATCH(&ret) == NULL), "got %p\n", V_DISPATCH(&ret)); IDispatchEx_Release(dispex); @@ -11172,58 +11876,58 @@ todo_wine /* IXMLDOMNamedNodeMap */ hr = IXMLDOMDocument_loadXML(doc, _bstr_(xpath_simple_list), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_selectNodes(doc, _bstr_("root/a"), &node_list); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNodeList_get_item(node_list, 0, &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNodeList_Release(node_list); hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMElement, (void**)&elem); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(node); hr = IXMLDOMElement_get_attributes(elem, &map); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNamedNodeMap_QueryInterface(map, &IID_IUnknown, (void**)&unk); test_domobj_dispex(unk); IUnknown_Release(unk); /* collection dispex test */ hr = IXMLDOMNamedNodeMap_QueryInterface(map, &IID_IDispatchEx, (void**)&dispex); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); did = 0; hr = IDispatchEx_GetDispID(dispex, _bstr_("0"), 0, &did); - EXPECT_HR(hr, S_OK); - ok(did == DISPID_DOM_COLLECTION_BASE, "got 0x%08x\n", did); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(did == DISPID_DOM_COLLECTION_BASE, "Unexpected value %ld.\n", did); IDispatchEx_Release(dispex); IXMLDOMNamedNodeMap_Release(map); hr = IXMLDOMDocument_selectNodes(doc, _bstr_("root/b"), &node_list); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNodeList_get_item(node_list, 0, &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNodeList_Release(node_list); hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMElement, (void**)&elem); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(node); hr = IXMLDOMElement_get_attributes(elem, &map); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* collection dispex test, empty collection */ hr = IXMLDOMNamedNodeMap_QueryInterface(map, &IID_IDispatchEx, (void**)&dispex); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); did = 0; hr = IDispatchEx_GetDispID(dispex, _bstr_("0"), 0, &did); - EXPECT_HR(hr, S_OK); - ok(did == DISPID_DOM_COLLECTION_BASE, "got 0x%08x\n", did); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(did == DISPID_DOM_COLLECTION_BASE, "Unexpected value %ld\n", did); hr = IDispatchEx_GetDispID(dispex, _bstr_("1"), 0, &did); - EXPECT_HR(hr, S_OK); - ok(did == DISPID_DOM_COLLECTION_BASE+1, "got 0x%08x\n", did); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(did == DISPID_DOM_COLLECTION_BASE+1, "Unexpected value %ld.\n", did); IXMLDOMNamedNodeMap_Release(map); did = -1; hr = IDispatchEx_GetDispID(dispex, _bstr_("item"), 0, &did); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(did == DISPID_VALUE, "got %d\n", did); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(did == DISPID_VALUE, "got %ld\n", did); V_VT(&arg) = VT_I4; V_I4(&arg) = 0; @@ -11236,7 +11940,7 @@ todo_wine V_DISPATCH(&ret) = (void*)0x1; hr = IDispatchEx_Invoke(dispex, DISPID_VALUE, &IID_NULL, 0, DISPATCH_METHOD, &dispparams, &ret, NULL, NULL); todo_wine { - ok(hr == DISP_E_BADPARAMCOUNT, "got 0x%08x\n", hr); + ok(hr == DISP_E_BADPARAMCOUNT, "Unexpected hr %#lx.\n", hr); ok(V_VT(&ret) == VT_EMPTY, "got %d\n", V_VT(&ret)); } ok(broken(V_DISPATCH(&ret) == (void*)0x1) || (V_DISPATCH(&ret) == NULL), "got %p\n", V_DISPATCH(&ret)); @@ -11252,7 +11956,7 @@ todo_wine { V_DISPATCH(&ret) = (void*)0x1; hr = IDispatchEx_Invoke(dispex, DISPID_VALUE, &IID_NULL, 0, DISPATCH_METHOD, &dispparams, &ret, NULL, NULL); todo_wine { - ok(hr == DISP_E_BADPARAMCOUNT, "got 0x%08x\n", hr); + ok(hr == DISP_E_BADPARAMCOUNT, "Unexpected hr %#lx.\n", hr); ok(V_VT(&ret) == VT_EMPTY, "got %d\n", V_VT(&ret)); } ok(broken(V_DISPATCH(&ret) == (void*)0x1) || (V_DISPATCH(&ret) == NULL), "got %p\n", V_DISPATCH(&ret)); @@ -11267,22 +11971,22 @@ todo_wine { V_VT(&ret) = VT_EMPTY; V_DISPATCH(&ret) = (void*)0x1; hr = IDispatchEx_Invoke(dispex, DISPID_VALUE, &IID_NULL, 0, DISPATCH_METHOD, &dispparams, &ret, NULL, NULL); -todo_wine - ok(hr == S_OK, "got 0x%08x\n", hr); + todo_wine + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&ret) == VT_DISPATCH, "got %d\n", V_VT(&ret)); ok(V_DISPATCH(&ret) == NULL, "got %p\n", V_DISPATCH(&ret)); V_VT(&ret) = VT_EMPTY; V_DISPATCH(&ret) = (void*)0x1; hr = IDispatchEx_Invoke(dispex, DISPID_VALUE, &IID_NULL, 0, DISPATCH_PROPERTYGET, &dispparams, &ret, NULL, NULL); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&ret) == VT_DISPATCH, "got %d\n", V_VT(&ret)); ok(V_DISPATCH(&ret) == NULL, "got %p\n", V_DISPATCH(&ret)); V_VT(&ret) = VT_EMPTY; V_DISPATCH(&ret) = (void*)0x1; hr = IDispatchEx_Invoke(dispex, DISPID_VALUE, &IID_NULL, 0, DISPATCH_PROPERTYGET|DISPATCH_METHOD, &dispparams, &ret, NULL, NULL); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&ret) == VT_DISPATCH, "got %d\n", V_VT(&ret)); ok(V_DISPATCH(&ret) == NULL, "got %p\n", V_DISPATCH(&ret)); @@ -11294,9 +11998,9 @@ todo_wine V_VT(&ret) = VT_EMPTY; V_I4(&ret) = 1; hr = IDispatchEx_Invoke(dispex, DISPID_DOM_NODELIST_LENGTH, &IID_NULL, 0, DISPATCH_PROPERTYGET, &dispparams, &ret, NULL, NULL); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&ret) == VT_I4, "got %d\n", V_VT(&ret)); - ok(V_I4(&ret) == 0, "got %d\n", V_I4(&ret)); + ok(V_I4(&ret) == 0, "got %ld\n", V_I4(&ret)); dispparams.cArgs = 0; dispparams.cNamedArgs = 0; @@ -11306,20 +12010,20 @@ todo_wine V_VT(&ret) = VT_EMPTY; V_I4(&ret) = 1; hr = IDispatchEx_Invoke(dispex, DISPID_DOM_NODELIST_LENGTH, &IID_NULL, 0, DISPATCH_METHOD, &dispparams, &ret, NULL, NULL); - ok(hr == DISP_E_MEMBERNOTFOUND, "got 0x%08x\n", hr); -todo_wine + ok(hr == DISP_E_MEMBERNOTFOUND, "Unexpected hr %#lx.\n", hr); + todo_wine ok(V_VT(&ret) == VT_EMPTY, "got %d\n", V_VT(&ret)); - ok(broken(V_I4(&ret) == 1) || (V_I4(&ret) == 0), "got %d\n", V_I4(&ret)); + ok(broken(V_I4(&ret) == 1) || (V_I4(&ret) == 0), "got %ld\n", V_I4(&ret)); IDispatchEx_Release(dispex); IXMLDOMElement_Release(elem); /* IXMLDOMImplementation */ hr = IXMLDOMDocument_get_implementation(doc, &impl); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMImplementation_QueryInterface(impl, &IID_IDispatchEx, (void**)&dispex); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IDispatchEx_Release(dispex); IXMLDOMImplementation_Release(impl); @@ -11331,38 +12035,38 @@ todo_wine if (hr == S_OK) { hr = IXMLHTTPRequest_QueryInterface(req, &IID_IDispatchEx, (void**)&dispex); - EXPECT_HR(hr, E_NOINTERFACE); + ok(hr == E_NOINTERFACE, "Unexpected hr %#lx.\n", hr); IXMLHTTPRequest_Release(req); } /* IXSLTemplate */ template = create_xsltemplate(&IID_IXSLTemplate); hr = IXSLTemplate_QueryInterface(template, &IID_IDispatchEx, (void**)&dispex); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IDispatchEx_QueryInterface(dispex, &IID_IUnknown, (void**)&unk); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); test_domobj_dispex(unk); IUnknown_Release(unk); IDispatchEx_Release(dispex); /* IXSLProcessor */ hr = CoCreateInstance(&CLSID_FreeThreadedDOMDocument, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument, (void**)&doc); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); b = VARIANT_FALSE; hr = IXMLDOMDocument_loadXML(doc, _bstr_(szTransformSSXML), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "got %d\n", b); hr = IXSLTemplate_putref_stylesheet(template, (IXMLDOMNode*)doc); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMDocument_Release(doc); hr = IXSLTemplate_createProcessor(template, &processor); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXSLProcessor_QueryInterface(processor, &IID_IDispatchEx, (void**)&dispex); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IDispatchEx_QueryInterface(dispex, &IID_IUnknown, (void**)&unk); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); test_domobj_dispex(unk); IUnknown_Release(unk); IDispatchEx_Release(dispex); @@ -11390,16 +12094,16 @@ static void test_parseerror(void) doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_get_parseError(doc, &error); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMParseError_get_line(error, NULL); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMParseError_get_srcText(error, NULL); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMParseError_get_linepos(error, NULL); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); IXMLDOMParseError_Release(error); IXMLDOMDocument_Release(doc); @@ -11408,9 +12112,9 @@ static void test_parseerror(void) doc = create_document_version(60, &IID_IXMLDOMDocument); hr = IXMLDOMDocument_get_parseError(doc, &error); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMParseError_QueryInterface(error, &IID_IXMLDOMParseError2, (void**)&error2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMParseError2_Release(error2); IXMLDOMParseError_Release(error); IXMLDOMDocument_Release(doc); @@ -11428,40 +12132,40 @@ static void test_getAttributeNode(void) doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_loadXML(doc, _bstr_(szExampleXML), &v); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_get_documentElement(doc, &elem); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); str = SysAllocString(nonexistent_fileW); hr = IXMLDOMElement_getAttributeNode(elem, str, NULL); - EXPECT_HR(hr, E_FAIL); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); attr = (IXMLDOMAttribute*)0xdeadbeef; hr = IXMLDOMElement_getAttributeNode(elem, str, &attr); - EXPECT_HR(hr, E_FAIL); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(attr == NULL, "got %p\n", attr); SysFreeString(str); - str = SysAllocString(nonexistent_attrW); + str = SysAllocString(L"nonExistingAttribute"); hr = IXMLDOMElement_getAttributeNode(elem, str, NULL); - EXPECT_HR(hr, S_FALSE); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); attr = (IXMLDOMAttribute*)0xdeadbeef; hr = IXMLDOMElement_getAttributeNode(elem, str, &attr); - EXPECT_HR(hr, S_FALSE); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(attr == NULL, "got %p\n", attr); SysFreeString(str); hr = IXMLDOMElement_getAttributeNode(elem, _bstr_("foo:b"), &attr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMAttribute_Release(attr); hr = IXMLDOMElement_getAttributeNode(elem, _bstr_("b"), &attr); - EXPECT_HR(hr, S_FALSE); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_getAttributeNode(elem, _bstr_("a"), &attr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMAttribute_Release(attr); IXMLDOMElement_Release(elem); @@ -11480,37 +12184,37 @@ static void test_getAttribute(void) doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_loadXML(doc, _bstr_(szExampleXML), &v); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_get_documentElement(doc, &elem); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); VariantInit(&var); hr = IXMLDOMElement_getAttribute( elem, _bstr_("xmlns:foo"), &var ); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( V_VT(&var) == VT_BSTR, "vt = %x\n", V_VT(&var)); - ok( !lstrcmpW(V_BSTR(&var), _bstr_("urn:uuid:86B2F87F-ACB6-45cd-8B77-9BDB92A01A29")), "wrong attr value: %s\n", wine_dbgstr_w(V_BSTR(&var))); + ok(!lstrcmpW(V_BSTR(&var), L"urn:uuid:86B2F87F-ACB6-45cd-8B77-9BDB92A01A29"), "wrong attr value: %s\n", wine_dbgstr_w(V_BSTR(&var))); VariantClear(&var); hr = IXMLDOMElement_getAttribute( elem, _bstr_("a"), &var ); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( V_VT(&var) == VT_BSTR, "vt = %x\n", V_VT(&var)); - ok( !lstrcmpW(V_BSTR(&var), _bstr_("attr a")), "wrong attr value: %s\n", wine_dbgstr_w(V_BSTR(&var))); + ok(!lstrcmpW(V_BSTR(&var), L"attr a"), "wrong attr value: %s\n", wine_dbgstr_w(V_BSTR(&var))); VariantClear(&var); hr = IXMLDOMElement_getAttribute( elem, _bstr_("foo:b"), &var ); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok( V_VT(&var) == VT_BSTR, "vt = %x\n", V_VT(&var)); - ok( !lstrcmpW(V_BSTR(&var), _bstr_("attr b")), "wrong attr value: %s\n", wine_dbgstr_w(V_BSTR(&var))); + ok(!lstrcmpW(V_BSTR(&var), L"attr b"), "wrong attr value: %s\n", wine_dbgstr_w(V_BSTR(&var))); VariantClear(&var); hr = IXMLDOMElement_getAttribute( elem, _bstr_("b"), &var ); - EXPECT_HR(hr, S_FALSE); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok( V_VT(&var) == VT_NULL, "vt = %x\n", V_VT(&var)); VariantClear(&var); hr = IXMLDOMElement_getAttribute( elem, _bstr_("non-existent"), &var ); - EXPECT_HR(hr, S_FALSE); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok( V_VT(&var) == VT_NULL, "vt = %x\n", V_VT(&var)); VariantClear(&var); @@ -11557,7 +12261,7 @@ static void test_supporterrorinfo(void) EXPECT_REF(doc, 1); hr = IXMLDOMDocument_QueryInterface(doc, &IID_ISupportErrorInfo, (void**)&errorinfo); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(doc, 1); ISupportErrorInfo_AddRef(errorinfo); EXPECT_REF(errorinfo, 2); @@ -11565,14 +12269,14 @@ static void test_supporterrorinfo(void) ISupportErrorInfo_Release(errorinfo); hr = IXMLDOMDocument_QueryInterface(doc, &IID_ISupportErrorInfo, (void**)&info2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(errorinfo != info2, "got %p, %p\n", info2, errorinfo); /* error interface can't be queried back for DOM interface */ hr = ISupportErrorInfo_QueryInterface(info2, &IID_IXMLDOMDocument, &dummy); - EXPECT_HR(hr, E_NOINTERFACE); + ok(hr == E_NOINTERFACE, "Unexpected hr %#lx.\n", hr); hr = ISupportErrorInfo_QueryInterface(info2, &IID_IXMLDOMNode, &dummy); - EXPECT_HR(hr, E_NOINTERFACE); + ok(hr == E_NOINTERFACE, "Unexpected hr %#lx.\n", hr); ISupportErrorInfo_Release(info2); @@ -11580,11 +12284,11 @@ static void test_supporterrorinfo(void) while (*iid) { hr = IXMLDOMDocument_QueryInterface(doc, *iid, (void**)&unk); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); if (hr == S_OK) { hr = ISupportErrorInfo_InterfaceSupportsErrorInfo(errorinfo, *iid); - ok(hr == S_OK, "got 0x%08x for %s\n", hr, wine_dbgstr_guid(*iid)); + ok(hr == S_OK, "Unexpected hr %#lx. for %s\n", hr, wine_dbgstr_guid(*iid)); IUnknown_Release(unk); } @@ -11602,15 +12306,15 @@ static void test_supporterrorinfo(void) V_I1(&type) = ptr->type; hr = IXMLDOMDocument_createNode(doc, type, _bstr_(ptr->name), NULL, &node); - ok(hr == S_OK, "%d: got 0x%08x\n", ptr->type, hr); + ok(hr == S_OK, "%d: Unexpected hr %#lx.\n", ptr->type, hr); EXPECT_REF(node, 1); hr = IXMLDOMNode_QueryInterface(node, &IID_ISupportErrorInfo, (void**)&errorinfo); - ok(hr == S_OK, "%d: got 0x%08x\n", ptr->type, hr); + ok(hr == S_OK, "%d: Unexpected hr %#lx.\n", ptr->type, hr); EXPECT_REF(node, 1); hr = ISupportErrorInfo_QueryInterface(errorinfo, &IID_IXMLDOMNode, &dummy); - ok(hr == E_NOINTERFACE, "%d: got 0x%08x\n", ptr->type, hr); + ok(hr == E_NOINTERFACE, "%d: Unexpected hr %#lx.\n", ptr->type, hr); iid = ptr->iids; @@ -11620,7 +12324,7 @@ static void test_supporterrorinfo(void) if (hr == S_OK) { hr = ISupportErrorInfo_InterfaceSupportsErrorInfo(errorinfo, *iid); - ok(hr == S_OK, "%d: got 0x%08x for %s\n", ptr->type, hr, wine_dbgstr_guid(*iid)); + ok(hr == S_OK, "%d: unexpected hr %#lx for %s\n", ptr->type, hr, wine_dbgstr_guid(*iid)); IUnknown_Release(unk); } @@ -11635,31 +12339,31 @@ static void test_supporterrorinfo(void) /* IXMLDOMNamedNodeMap */ b = VARIANT_FALSE; hr = IXMLDOMDocument_loadXML(doc, _bstr_(complete4A), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "got %d\n", b); hr = IXMLDOMDocument_get_documentElement(doc, &elem); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_get_attributes(elem, &map); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(map, 1); hr = IXMLDOMNamedNodeMap_QueryInterface(map, &IID_ISupportErrorInfo, (void**)&errorinfo); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(map, 2); hr = ISupportErrorInfo_InterfaceSupportsErrorInfo(errorinfo, &IID_IXMLDOMNamedNodeMap); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISupportErrorInfo_QueryInterface(errorinfo, &IID_IXMLDOMNamedNodeMap, (void**)&map2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(map == map2, "got %p\n", map2); IXMLDOMNamedNodeMap_Release(map2); EXPECT_REF(errorinfo, 2); hr = ISupportErrorInfo_QueryInterface(errorinfo, &IID_IUnknown, (void**)&unk); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(errorinfo, 3); EXPECT_REF(map, 3); IUnknown_Release(unk); @@ -11672,13 +12376,13 @@ static void test_supporterrorinfo(void) /* IXMLDOMSchemaCollection */ hr = CoCreateInstance(&CLSID_XMLSchemaCache, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMSchemaCollection, (void**)&schemacache); - ok(hr == S_OK, "failed to create schema collection, 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMSchemaCollection_QueryInterface(schemacache, &IID_ISupportErrorInfo, (void**)&errorinfo); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISupportErrorInfo_InterfaceSupportsErrorInfo(errorinfo, &IID_IXMLDOMSchemaCollection); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ISupportErrorInfo_Release(errorinfo); IXMLDOMSchemaCollection_Release(schemacache); @@ -11727,16 +12431,16 @@ static void test_nodeValue(void) ok(hr == S_OK, "failed to create node type %d\n", ptr->type); hr = IXMLDOMNode_get_nodeValue(node, NULL); - ok(hr == E_INVALIDARG, "%d: got 0x%08x\n", ptr->type, hr); + ok(hr == E_INVALIDARG, "%d: unexpected hr %#lx\n", ptr->type, hr); V_VT(&v) = VT_BSTR; V_BSTR(&v) = _bstr_(ptr->put_content); hr = IXMLDOMNode_put_nodeValue(node, v); - ok(hr == ptr->put_hr, "%d: got 0x%08x\n", ptr->type, hr); + ok(hr == ptr->put_hr, "%d: unexpected hr %#lx\n", ptr->type, hr); V_VT(&v) = VT_EMPTY; hr = IXMLDOMNode_get_nodeValue(node, &v); - ok(hr == ptr->get_hr, "%d: got 0x%08x, expected 0x%08x\n", ptr->type, hr, ptr->get_hr); + ok(hr == ptr->get_hr, "%d: unexpected hr %#lx, expected %#lx.\n", ptr->type, hr, ptr->get_hr); ok(V_VT(&v) == ptr->get_vt, "%d: got %d, expected %d\n", ptr->type, V_VT(&v), ptr->get_vt); if (hr == S_OK) ok(!lstrcmpW(V_BSTR(&v), _bstr_(ptr->put_content)), "%d: got %s\n", ptr->type, @@ -11764,32 +12468,32 @@ static void test_xmlns_attribute(void) doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_createElement(doc, _bstr_("Testing"), &root); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_appendChild(doc, (IXMLDOMNode*)root, NULL); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_createAttribute(doc, _bstr_("xmlns:dt"), &pAttribute); - ok( hr == S_OK, "returns %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); V_VT(&v) = VT_BSTR; V_BSTR(&v) = _bstr_("urn:schemas-microsoft-com:datatypes"); hr = IXMLDOMAttribute_put_nodeValue(pAttribute, v); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMElement_setAttributeNode(root, pAttribute, NULL); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMNode_put_dataType((IXMLDOMNode*)root, _bstr_("bin.base64")); - ok(hr == S_OK, "ret %08x\n", hr ); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr ); hr = IXMLDOMDocument_get_documentElement(doc, &elem); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); str = NULL; hr = IXMLDOMElement_get_xml(elem, &str); - ok( hr == S_OK, "got 0x%08x\n", hr); - todo_wine ok( lstrcmpW(str, _bstr_("")) == 0, + ok( hr == S_OK, "Unexpected hr %#lx.\n", hr); + todo_wine ok(lstrcmpW(str, L"") == 0, "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); @@ -11833,8 +12537,9 @@ static void test_get_namespaces(void) IUnknown *unk1, *unk2; IXMLDOMNode *node; VARIANT_BOOL b; + ULONG fetched; + VARIANT v[2]; HRESULT hr; - VARIANT v; LONG len; BSTR s; @@ -11843,12 +12548,12 @@ static void test_get_namespaces(void) /* null pointer */ hr = IXMLDOMDocument2_get_namespaces(doc, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); /* no document loaded */ collection = (void*)0xdeadbeef; hr = IXMLDOMDocument2_get_namespaces(doc, &collection); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); if (hr != S_OK) { IXMLDOMDocument2_Release(doc); @@ -11858,106 +12563,128 @@ static void test_get_namespaces(void) collection2 = (void*)0xdeadbeef; hr = IXMLDOMDocument2_get_namespaces(doc, &collection2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(collection == collection2, "got %p\n", collection2); EXPECT_REF(collection, 3); IXMLDOMSchemaCollection_Release(collection); len = -1; hr = IXMLDOMSchemaCollection_get_length(collection, &len); - EXPECT_HR(hr, S_OK); - ok(len == 0, "got %d\n", len); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(len == 0, "got %ld\n", len); IXMLDOMSchemaCollection_Release(collection); /* now with document */ hr = IXMLDOMDocument2_loadXML(doc, _bstr_(namespacesA), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument2_get_namespaces(doc, &collection); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = -1; hr = IXMLDOMSchemaCollection_get_length(collection, &len); - EXPECT_HR(hr, S_OK); - ok(len == 2, "got %d\n", len); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(len == 2, "got %ld\n", len); /* try to lookup some uris */ node = (void*)0xdeadbeef; hr = IXMLDOMSchemaCollection_get(collection, _bstr_("http://blah.org"), &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(node == NULL, "got %p\n", node); node = (void*)0xdeadbeef; hr = IXMLDOMSchemaCollection_get(collection, _bstr_("http://blah1.org"), &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(node == NULL, "got %p\n", node); /* load schema and try to add it */ doc2 = create_document(&IID_IXMLDOMDocument2); hr = IXMLDOMDocument2_loadXML(doc2, _bstr_(xsd_schema1_xml), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - V_VT(&v) = VT_DISPATCH; - V_DISPATCH(&v) = (IDispatch*)doc2; - hr = IXMLDOMSchemaCollection_add(collection, _bstr_(xsd_schema1_uri), v); - EXPECT_HR(hr, E_FAIL); + V_VT(&v[0]) = VT_DISPATCH; + V_DISPATCH(&v[0]) = (IDispatch*)doc2; + hr = IXMLDOMSchemaCollection_add(collection, _bstr_(xsd_schema1_uri), v[0]); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMSchemaCollection_get_namespaceURI(collection, 0, &s); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(s, _bstr_("http://blah.org")), "got %s\n", wine_dbgstr_w(s)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(s, L"http://blah.org"), "got %s\n", wine_dbgstr_w(s)); SysFreeString(s); hr = IXMLDOMSchemaCollection_get_namespaceURI(collection, 1, &s); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(s, _bstr_("http://blahblah.org")), "got %s\n", wine_dbgstr_w(s)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(s, L"http://blahblah.org"), "got %s\n", wine_dbgstr_w(s)); SysFreeString(s); s = (void*)0xdeadbeef; hr = IXMLDOMSchemaCollection_get_namespaceURI(collection, 2, &s); - EXPECT_HR(hr, E_FAIL); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(s == (void*)0xdeadbeef, "got %p\n", s); /* enumerate */ enumv = (void*)0xdeadbeef; EXPECT_REF(collection, 2); hr = IXMLDOMSchemaCollection_get__newEnum(collection, (IUnknown**)&enumv); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(collection, 3); ok(enumv != NULL, "got %p\n", enumv); hr = IXMLDOMSchemaCollection_QueryInterface(collection, &IID_IUnknown, (void**)&unk1); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IEnumVARIANT_QueryInterface(enumv, &IID_IUnknown, (void**)&unk2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(unk1 != unk2, "got %p, %p\n", unk1, unk2); IUnknown_Release(unk1); IUnknown_Release(unk2); hr = IXMLDOMSchemaCollection_QueryInterface(collection, &IID_IEnumVARIANT, (void**)&enum2); - EXPECT_HR(hr, E_NOINTERFACE); + ok(hr == E_NOINTERFACE, "Unexpected hr %#lx.\n", hr); - V_VT(&v) = VT_EMPTY; - hr = IEnumVARIANT_Next(enumv, 1, &v, NULL); - EXPECT_HR(hr, S_OK); - ok(V_VT(&v) == VT_BSTR, "got %d\n", V_VT(&v)); - ok(!lstrcmpW(V_BSTR(&v), _bstr_("http://blah.org")), "got %s\n", wine_dbgstr_w(V_BSTR(&v))); - VariantClear(&v); + V_VT(&v[0]) = VT_EMPTY; + hr = IEnumVARIANT_Next(enumv, 1, &v[0], NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(V_VT(&v[0]) == VT_BSTR, "got %d\n", V_VT(&v[0])); + ok(!lstrcmpW(V_BSTR(&v[0]), L"http://blah.org"), "got %s\n", wine_dbgstr_w(V_BSTR(&v[0]))); + VariantClear(&v[0]); - V_VT(&v) = VT_EMPTY; - hr = IEnumVARIANT_Next(enumv, 1, &v, NULL); - EXPECT_HR(hr, S_OK); - ok(V_VT(&v) == VT_BSTR, "got %d\n", V_VT(&v)); - ok(!lstrcmpW(V_BSTR(&v), _bstr_("http://blahblah.org")), "got %s\n", wine_dbgstr_w(V_BSTR(&v))); - VariantClear(&v); + V_VT(&v[0]) = VT_EMPTY; + hr = IEnumVARIANT_Next(enumv, 1, &v[0], &fetched); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(fetched == 1, "got %ld, expected 1\n", fetched); + ok(V_VT(&v[0]) == VT_BSTR, "got %d\n", V_VT(&v[0])); + ok(!lstrcmpW(V_BSTR(&v[0]), L"http://blahblah.org"), "got %s\n", wine_dbgstr_w(V_BSTR(&v[0]))); + VariantClear(&v[0]); - V_VT(&v) = VT_NULL; - hr = IEnumVARIANT_Next(enumv, 1, &v, NULL); - EXPECT_HR(hr, S_FALSE); - ok(V_VT(&v) == VT_EMPTY, "got %d\n", V_VT(&v)); + V_VT(&v[0]) = VT_NULL; + hr = IEnumVARIANT_Next(enumv, 1, &v[0], &fetched); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + ok(fetched == 0, "got %ld, expected 0\n", fetched); + ok(V_VT(&v[0]) == VT_EMPTY, "got %d\n", V_VT(&v[0])); + + hr = IEnumVARIANT_Reset(enumv); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + V_VT(&v[1]) = VT_EMPTY; + V_VT(&v[0]) = VT_EMPTY; + hr = IEnumVARIANT_Next(enumv, 2, v, &fetched); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(fetched == 2, "got %ld, expected 2\n", fetched); + ok(V_VT(&v[0]) == VT_BSTR, "got %d\n", V_VT(&v[0])); + ok(V_VT(&v[1]) == VT_BSTR, "got %d\n", V_VT(&v[1])); + ok(!lstrcmpW(V_BSTR(&v[0]), L"http://blah.org"), "got %s\n", wine_dbgstr_w(V_BSTR(&v[0]))); + ok(!lstrcmpW(V_BSTR(&v[1]), L"http://blahblah.org"), "got %s\n", wine_dbgstr_w(V_BSTR(&v[1]))); + VariantClear(&v[1]); + VariantClear(&v[0]); + + V_VT(&v[0]) = VT_NULL; + hr = IEnumVARIANT_Next(enumv, 1, v, &fetched); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + ok(fetched == 0, "got %ld, expected 0\n", fetched); + ok(V_VT(&v[0]) == VT_EMPTY, "got %d\n", V_VT(&v[0])); IEnumVARIANT_Release(enumv); IXMLDOMSchemaCollection_Release(collection); - IXMLDOMDocument2_Release(doc); /* now with CLSID_DOMDocument60 */ @@ -11966,12 +12693,12 @@ static void test_get_namespaces(void) /* null pointer */ hr = IXMLDOMDocument2_get_namespaces(doc, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); /* no document loaded */ collection = (void*)0xdeadbeef; hr = IXMLDOMDocument2_get_namespaces(doc, &collection); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); if (hr != S_OK) { IXMLDOMDocument2_Release(doc); @@ -11981,85 +12708,106 @@ static void test_get_namespaces(void) collection2 = (void*)0xdeadbeef; hr = IXMLDOMDocument2_get_namespaces(doc, &collection2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(collection == collection2, "got %p\n", collection2); EXPECT_REF(collection, 3); IXMLDOMSchemaCollection_Release(collection); len = -1; hr = IXMLDOMSchemaCollection_get_length(collection, &len); - EXPECT_HR(hr, S_OK); - ok(len == 0, "got %d\n", len); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(len == 0, "got %ld\n", len); IXMLDOMSchemaCollection_Release(collection); /* now with document */ hr = IXMLDOMDocument2_loadXML(doc, _bstr_(namespacesA), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument2_get_namespaces(doc, &collection); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = -1; hr = IXMLDOMSchemaCollection_get_length(collection, &len); - EXPECT_HR(hr, S_OK); - ok(len == 2, "got %d\n", len); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(len == 2, "got %ld\n", len); /* try to lookup some uris */ node = (void*)0xdeadbeef; hr = IXMLDOMSchemaCollection_get(collection, _bstr_("http://blah.org"), &node); - EXPECT_HR(hr, E_NOTIMPL); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); ok(broken(node == (void*)0xdeadbeef) || (node == NULL), "got %p\n", node); /* load schema and try to add it */ doc2 = create_document(&IID_IXMLDOMDocument2); hr = IXMLDOMDocument2_loadXML(doc2, _bstr_(xsd_schema1_xml), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - V_VT(&v) = VT_DISPATCH; - V_DISPATCH(&v) = (IDispatch*)doc2; - hr = IXMLDOMSchemaCollection_add(collection, _bstr_(xsd_schema1_uri), v); - EXPECT_HR(hr, E_FAIL); + V_VT(&v[0]) = VT_DISPATCH; + V_DISPATCH(&v[0]) = (IDispatch*)doc2; + hr = IXMLDOMSchemaCollection_add(collection, _bstr_(xsd_schema1_uri), v[0]); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); IXMLDOMDocument2_Release(doc2); hr = IXMLDOMSchemaCollection_get_namespaceURI(collection, 0, &s); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(s, _bstr_("http://blah.org")), "got %s\n", wine_dbgstr_w(s)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(s, L"http://blah.org"), "got %s\n", wine_dbgstr_w(s)); SysFreeString(s); hr = IXMLDOMSchemaCollection_get_namespaceURI(collection, 1, &s); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(s, _bstr_("http://blahblah.org")), "got %s\n", wine_dbgstr_w(s)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(s, L"http://blahblah.org"), "got %s\n", wine_dbgstr_w(s)); SysFreeString(s); s = (void*)0xdeadbeef; hr = IXMLDOMSchemaCollection_get_namespaceURI(collection, 2, &s); - EXPECT_HR(hr, E_FAIL); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(broken(s == (void*)0xdeadbeef) || (s == NULL), "got %p\n", s); /* enumerate */ enumv = (void*)0xdeadbeef; hr = IXMLDOMSchemaCollection_get__newEnum(collection, (IUnknown**)&enumv); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(enumv != NULL, "got %p\n", enumv); - V_VT(&v) = VT_EMPTY; - hr = IEnumVARIANT_Next(enumv, 1, &v, NULL); - EXPECT_HR(hr, S_OK); - ok(V_VT(&v) == VT_BSTR, "got %d\n", V_VT(&v)); - ok(!lstrcmpW(V_BSTR(&v), _bstr_("http://blah.org")), "got %s\n", wine_dbgstr_w(V_BSTR(&v))); - VariantClear(&v); + V_VT(&v[0]) = VT_EMPTY; + hr = IEnumVARIANT_Next(enumv, 1, &v[0], NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(V_VT(&v[0]) == VT_BSTR, "got %d\n", V_VT(&v[0])); + ok(!lstrcmpW(V_BSTR(&v[0]), L"http://blah.org"), "got %s\n", wine_dbgstr_w(V_BSTR(&v[0]))); + VariantClear(&v[0]); - V_VT(&v) = VT_EMPTY; - hr = IEnumVARIANT_Next(enumv, 1, &v, NULL); - EXPECT_HR(hr, S_OK); - ok(V_VT(&v) == VT_BSTR, "got %d\n", V_VT(&v)); - ok(!lstrcmpW(V_BSTR(&v), _bstr_("http://blahblah.org")), "got %s\n", wine_dbgstr_w(V_BSTR(&v))); - VariantClear(&v); + V_VT(&v[0]) = VT_EMPTY; + hr = IEnumVARIANT_Next(enumv, 1, &v[0], NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(V_VT(&v[0]) == VT_BSTR, "got %d\n", V_VT(&v[0])); + ok(!lstrcmpW(V_BSTR(&v[0]), L"http://blahblah.org"), "got %s\n", wine_dbgstr_w(V_BSTR(&v[0]))); + VariantClear(&v[0]); - V_VT(&v) = VT_NULL; - hr = IEnumVARIANT_Next(enumv, 1, &v, NULL); - EXPECT_HR(hr, S_FALSE); - ok(V_VT(&v) == VT_EMPTY, "got %d\n", V_VT(&v)); + V_VT(&v[0]) = VT_NULL; + hr = IEnumVARIANT_Next(enumv, 1, &v[0], NULL); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + ok(V_VT(&v[0]) == VT_EMPTY, "got %d\n", V_VT(&v[0])); + + hr = IEnumVARIANT_Reset(enumv); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + V_VT(&v[1]) = VT_EMPTY; + V_VT(&v[0]) = VT_EMPTY; + hr = IEnumVARIANT_Next(enumv, 2, v, &fetched); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(fetched == 2, "got %ld, expected 2\n", fetched); + ok(V_VT(&v[0]) == VT_BSTR, "got %d\n", V_VT(&v[0])); + ok(V_VT(&v[1]) == VT_BSTR, "got %d\n", V_VT(&v[1])); + ok(!lstrcmpW(V_BSTR(&v[0]), L"http://blah.org"), "got %s\n", wine_dbgstr_w(V_BSTR(&v[0]))); + ok(!lstrcmpW(V_BSTR(&v[1]), L"http://blahblah.org"), "got %s\n", wine_dbgstr_w(V_BSTR(&v[0]))); + VariantClear(&v[1]); + VariantClear(&v[0]); + + V_VT(&v[0]) = VT_NULL; + hr = IEnumVARIANT_Next(enumv, 1, v, &fetched); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + ok(fetched == 0, "got %ld, expected 0\n", fetched); + ok(V_VT(&v[0]) == VT_EMPTY, "got %d\n", V_VT(&v[0])); IEnumVARIANT_Release(enumv); IXMLDOMSchemaCollection_Release(collection); @@ -12077,7 +12825,6 @@ static const DOMNodeType put_data_types[] = { static void test_put_data(void) { - static const WCHAR test_data[] = {'t','e','s','t',' ','n','o','d','e',' ','d','a','t','a',0}; WCHAR buff[100], *data; IXMLDOMDocument *doc; const DOMNodeType *type; @@ -12089,7 +12836,7 @@ static void test_put_data(void) doc = create_document(&IID_IXMLDOMDocument); - memcpy(&buff[2], test_data, sizeof(test_data)); + memcpy(&buff[2], L"test node data", 15 * sizeof(WCHAR)); /* just a big length */ *(DWORD*)buff = 0xf0f0; data = &buff[2]; @@ -12101,7 +12848,7 @@ static void test_put_data(void) V_I2(&v) = *type; hr = IXMLDOMDocument_createNode(doc, v, _bstr_("name"), NULL, &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* put_data() is interface-specific */ switch (*type) @@ -12109,12 +12856,12 @@ static void test_put_data(void) case NODE_TEXT: { hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMText, (void**)&text); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMText_put_data(text, data); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMText_get_data(text, &get_data); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMText_Release(text); break; @@ -12124,12 +12871,12 @@ static void test_put_data(void) IXMLDOMCDATASection *cdata; hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMCDATASection, (void**)&cdata); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMCDATASection_put_data(cdata, data); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMCDATASection_get_data(cdata, &get_data); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMCDATASection_Release(cdata); break; @@ -12139,12 +12886,12 @@ static void test_put_data(void) IXMLDOMProcessingInstruction *pi; hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMProcessingInstruction, (void**)&pi); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMProcessingInstruction_put_data(pi, data); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMProcessingInstruction_get_data(pi, &get_data); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMProcessingInstruction_Release(pi); break; @@ -12154,12 +12901,12 @@ static void test_put_data(void) IXMLDOMComment *comment; hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMComment, (void**)&comment); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMComment_put_data(comment, data); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMComment_get_data(comment, &get_data); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMComment_Release(comment); break; @@ -12206,64 +12953,64 @@ static void test_newline_normalization(void) } hr = CoCreateInstance(table->clsid, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument, (void**)&doc); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_createNode(doc, v, _bstr_("name"), NULL, &node); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMText, (void**)&text); /* \r\n is normalized to \n and back to \r\n */ hr = IXMLDOMText_put_data(text, _bstr_("\r\n")); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMText_get_data(text, &s); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(!lstrcmpW(s, _bstr_("\n")), "got %s\n", wine_dbgstr_w(s)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(s, L"\n"), "got %s\n", wine_dbgstr_w(s)); SysFreeString(s); hr = IXMLDOMText_get_length(text, &length); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(length == 1, "got %d, expected 1\n", length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 1, "got %ld, expected 1\n", length); hr = IXMLDOMText_get_xml(text, &s); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(!lstrcmpW(s, _bstr_("\r\n")), "got %s\n", wine_dbgstr_w(s)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(s, L"\r\n"), "got %s\n", wine_dbgstr_w(s)); SysFreeString(s); /* \r\r\n is normalized to \n\n and back to \r\n\r\n */ hr = IXMLDOMText_put_data(text, _bstr_("\r\r\n")); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMText_get_data(text, &s); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(!lstrcmpW(s, _bstr_("\n\n")), "got %s\n", wine_dbgstr_w(s)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(s, L"\n\n"), "got %s\n", wine_dbgstr_w(s)); SysFreeString(s); hr = IXMLDOMText_get_length(text, &length); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(length == 2, "got %d, expected 2\n", length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 2, "got %ld, expected 2\n", length); hr = IXMLDOMText_get_xml(text, &s); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(!lstrcmpW(s, _bstr_("\r\n\r\n")), "got %s\n", wine_dbgstr_w(s)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(s, L"\r\n\r\n"), "got %s\n", wine_dbgstr_w(s)); SysFreeString(s); /* the same normalizations are applied when loading a document as a whole */ hr = IXMLDOMDocument_loadXML(doc, _bstr_("foo\n\r\n\r\r\nbar"), &b); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_get_text(doc, &s); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(!lstrcmpW(s, _bstr_("foo\n\n\n\nbar")), "got %s\n", wine_dbgstr_w(s)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(s, L"foo\n\n\n\nbar"), "got %s\n", wine_dbgstr_w(s)); SysFreeString(s); hr = IXMLDOMDocument_get_xml(doc, &s); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(!lstrcmpW(s, _bstr_("\r\nfoo\r\n\r\n\r\n\r\nbar\r\n")), + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(s, L"\r\nfoo\r\n\r\n\r\n\r\nbar\r\n"), "got %s\n", wine_dbgstr_w(s)); SysFreeString(s); @@ -12271,15 +13018,15 @@ static void test_newline_normalization(void) hr = IXMLDOMDocument_loadXML(doc, _bstr_("" "foo\n\r\n\r\r\nbar"), &b); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_get_text(doc, &s); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(!lstrcmpW(s, _bstr_("foo\n\n\n\nbar")), "got %s\n", wine_dbgstr_w(s)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(s, L"foo\n\n\n\nbar"), "got %s\n", wine_dbgstr_w(s)); SysFreeString(s); hr = IXMLDOMDocument_get_xml(doc, &s); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!lstrcmpW(s, _bstr_("\r\n" "foo\r\n\r\n\r\n\r\nbar\r\n")), "got %s\n", wine_dbgstr_w(s)); @@ -12288,28 +13035,28 @@ static void test_newline_normalization(void) /* or preserveWhiteSpace is set */ hr = IXMLDOMDocument_put_preserveWhiteSpace(doc, VARIANT_TRUE); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_loadXML(doc, _bstr_("foo\n\r\n\r\r\nbar"), &b); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_get_text(doc, &s); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(!lstrcmpW(s, _bstr_("foo\n\n\n\nbar")), "got %s\n", wine_dbgstr_w(s)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(s, L"foo\n\n\n\nbar"), "got %s\n", wine_dbgstr_w(s)); SysFreeString(s); hr = IXMLDOMDocument_get_xml(doc, &s); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); if (IsEqualGUID(table->clsid, &CLSID_DOMDocument60)) { /* DOMDocument60 does the newline normalization but does not insert line breaks around the root node */ -todo_wine - ok(!lstrcmpW(s, _bstr_("foo\r\n\r\n\r\n\r\nbar")), + todo_wine + ok(!lstrcmpW(s, L"foo\r\n\r\n\r\n\r\nbar"), "got %s\n", wine_dbgstr_w(s)); } else { - ok(!lstrcmpW(s, _bstr_("\r\nfoo\r\n\r\n\r\n\r\nbar\r\n")), + ok(!lstrcmpW(s, L"\r\nfoo\r\n\r\n\r\n\r\nbar\r\n"), "got %s\n", wine_dbgstr_w(s)); } SysFreeString(s); @@ -12339,33 +13086,33 @@ static void test_putref_schemas(void) V_VT(&schema) = VT_DISPATCH; V_DISPATCH(&schema) = NULL; hr = IXMLDOMDocument2_putref_schemas(doc, schema); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&schema) = VT_UNKNOWN; V_UNKNOWN(&schema) = NULL; hr = IXMLDOMDocument2_putref_schemas(doc, schema); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* set as VT_DISPATCH, reset with it */ V_VT(&schema) = VT_DISPATCH; V_DISPATCH(&schema) = (IDispatch*)cache; hr = IXMLDOMDocument2_putref_schemas(doc, schema); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_DISPATCH(&schema) = NULL; hr = IXMLDOMDocument2_get_schemas(doc, &schema); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_DISPATCH(&schema) == (IDispatch*)cache, "got %p\n", V_DISPATCH(&schema)); V_VT(&schema) = VT_DISPATCH; V_DISPATCH(&schema) = NULL; hr = IXMLDOMDocument2_putref_schemas(doc, schema); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_DISPATCH(&schema) = (IDispatch*)0xdeadbeef; V_VT(&schema) = VT_I2; hr = IXMLDOMDocument2_get_schemas(doc, &schema); - EXPECT_HR(hr, S_FALSE); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(V_DISPATCH(&schema) == NULL, "got %p\n", V_DISPATCH(&schema)); ok(V_VT(&schema) == VT_NULL, "got %d\n", V_VT(&schema)); @@ -12373,22 +13120,22 @@ static void test_putref_schemas(void) V_VT(&schema) = VT_UNKNOWN; V_UNKNOWN(&schema) = (IUnknown*)cache; hr = IXMLDOMDocument2_putref_schemas(doc, schema); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_DISPATCH(&schema) = NULL; hr = IXMLDOMDocument2_get_schemas(doc, &schema); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_DISPATCH(&schema) == (IDispatch*)cache, "got %p\n", V_DISPATCH(&schema)); V_VT(&schema) = VT_UNKNOWN; V_UNKNOWN(&schema) = NULL; hr = IXMLDOMDocument2_putref_schemas(doc, schema); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_DISPATCH(&schema) = (IDispatch*)0xdeadbeef; V_VT(&schema) = VT_I2; hr = IXMLDOMDocument2_get_schemas(doc, &schema); - EXPECT_HR(hr, S_FALSE); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(V_DISPATCH(&schema) == NULL, "got %p\n", V_DISPATCH(&schema)); ok(V_VT(&schema) == VT_NULL, "got %d\n", V_VT(&schema)); @@ -12405,40 +13152,41 @@ static void test_namedmap_newenum(void) IXMLDOMElement *elem; IXMLDOMNode *node; VARIANT_BOOL b; + ULONG fetched; + VARIANT v[3]; HRESULT hr; - VARIANT v; BSTR str; doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_loadXML(doc, _bstr_(attributes_map), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_get_documentElement(doc, &elem); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_get_attributes(elem, &map); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMElement_Release(elem); enum1 = NULL; EXPECT_REF(map, 1); hr = IXMLDOMNamedNodeMap_QueryInterface(map, &IID_IEnumVARIANT, (void**)&enum1); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(enum1 != NULL, "got %p\n", enum1); EXPECT_REF(map, 1); EXPECT_REF(enum1, 2); enum2 = NULL; hr = IXMLDOMNamedNodeMap_QueryInterface(map, &IID_IEnumVARIANT, (void**)&enum2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(enum2 == enum1, "got %p\n", enum2); IEnumVARIANT_Release(enum2); EXPECT_REF(map, 1); hr = IXMLDOMNamedNodeMap__newEnum(map, (IUnknown**)&enum2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(map, 2); EXPECT_REF(enum2, 1); ok(enum2 != enum1, "got %p, %p\n", enum2, enum1); @@ -12447,9 +13195,9 @@ static void test_namedmap_newenum(void) /* enumerator created with _newEnum() doesn't share IUnknown* with main object */ hr = IXMLDOMNamedNodeMap_QueryInterface(map, &IID_IUnknown, (void**)&unk1); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IEnumVARIANT_QueryInterface(enum2, &IID_IUnknown, (void**)&unk2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(map, 3); EXPECT_REF(enum2, 2); ok(unk1 != unk2, "got %p, %p\n", unk1, unk2); @@ -12457,49 +13205,102 @@ static void test_namedmap_newenum(void) IUnknown_Release(unk2); hr = IXMLDOMNamedNodeMap__newEnum(map, (IUnknown**)&enum3); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(enum2 != enum3, "got %p, %p\n", enum2, enum3); IEnumVARIANT_Release(enum3); /* iteration tests */ hr = IXMLDOMNamedNodeMap_get_item(map, 0, &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_nodeName(node, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(str, _bstr_("attr1")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"attr1"), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); IXMLDOMNode_Release(node); hr = IXMLDOMNamedNodeMap_nextNode(map, &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_nodeName(node, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(str, _bstr_("attr1")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"attr1"), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); IXMLDOMNode_Release(node); - V_VT(&v) = VT_EMPTY; - hr = IEnumVARIANT_Next(enum2, 1, &v, NULL); - EXPECT_HR(hr, S_OK); - ok(V_VT(&v) == VT_DISPATCH, "got var type %d\n", V_VT(&v)); - hr = IDispatch_QueryInterface(V_DISPATCH(&v), &IID_IXMLDOMNode, (void**)&node); - EXPECT_HR(hr, S_OK); + V_VT(&v[0]) = VT_EMPTY; + hr = IEnumVARIANT_Next(enum2, 1, &v[0], NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(V_VT(&v[0]) == VT_DISPATCH, "got var type %d\n", V_VT(&v[0])); + hr = IDispatch_QueryInterface(V_DISPATCH(&v[0]), &IID_IXMLDOMNode, (void**)&node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_nodeName(node, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(str, _bstr_("attr1")), "got node name %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"attr1"), "got node name %s\n", wine_dbgstr_w(str)); SysFreeString(str); IXMLDOMNode_Release(node); - VariantClear(&v); + VariantClear(&v[0]); hr = IXMLDOMNamedNodeMap_nextNode(map, &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_nodeName(node, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(str, _bstr_("attr2")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"attr2"), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); IXMLDOMNode_Release(node); + hr = IEnumVARIANT_Reset(enum2); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + V_VT(&v[1]) = VT_EMPTY; + V_VT(&v[0]) = VT_EMPTY; + hr = IEnumVARIANT_Next(enum2, 2, v, &fetched); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(fetched == 2, "got %ld, expected 2\n", fetched); + ok(V_VT(&v[0]) == VT_DISPATCH, "got var type %d\n", V_VT(&v[0])); + ok(V_VT(&v[1]) == VT_DISPATCH, "got var type %d\n", V_VT(&v[1])); + hr = IDispatch_QueryInterface(V_DISPATCH(&v[0]), &IID_IXMLDOMNode, (void**)&node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNode_get_nodeName(node, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"attr1"), "got node name %s\n", wine_dbgstr_w(str)); + SysFreeString(str); + IXMLDOMNode_Release(node); + hr = IDispatch_QueryInterface(V_DISPATCH(&v[1]), &IID_IXMLDOMNode, (void**)&node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNode_get_nodeName(node, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"attr2"), "got node name %s\n", wine_dbgstr_w(str)); + SysFreeString(str); + IXMLDOMNode_Release(node); + VariantClear(&v[1]); + VariantClear(&v[0]); + + V_VT(&v[2]) = VT_NULL; + V_VT(&v[1]) = VT_EMPTY; + V_VT(&v[0]) = VT_EMPTY; + hr = IEnumVARIANT_Next(enum2, 3, v, &fetched); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + ok(fetched == 2, "got %ld, expected 2\n", fetched); + ok(V_VT(&v[0]) == VT_DISPATCH, "got var type %d\n", V_VT(&v[0])); + ok(V_VT(&v[1]) == VT_DISPATCH, "got var type %d\n", V_VT(&v[1])); + ok(V_VT(&v[2]) == VT_EMPTY, "got var type %d\n", V_VT(&v[2])); + hr = IDispatch_QueryInterface(V_DISPATCH(&v[0]), &IID_IXMLDOMNode, (void**)&node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNode_get_nodeName(node, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"attr3"), "got node name %s\n", wine_dbgstr_w(str)); + SysFreeString(str); + IXMLDOMNode_Release(node); + hr = IDispatch_QueryInterface(V_DISPATCH(&v[1]), &IID_IXMLDOMNode, (void**)&node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNode_get_nodeName(node, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"attr4"), "got node name %s\n", wine_dbgstr_w(str)); + SysFreeString(str); + IXMLDOMNode_Release(node); + VariantClear(&v[1]); + VariantClear(&v[0]); IEnumVARIANT_Release(enum2); + IXMLDOMNamedNodeMap_Release(map); IXMLDOMDocument_Release(doc); } @@ -12548,25 +13349,25 @@ static void test_xsltext(void) doc2 = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_loadXML(doc, _bstr_(xsltext_xsl), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_loadXML(doc2, _bstr_(""), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_transformNode(doc2, (IXMLDOMNode*)doc, &ret); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(ret, _bstr_("testdata")), "transform result %s\n", wine_dbgstr_w(ret)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(ret, L"testdata"), "transform result %s\n", wine_dbgstr_w(ret)); SysFreeString(ret); /* omit-xml-declaration */ hr = IXMLDOMDocument_loadXML(doc, _bstr_(omitxmldecl_xsl), &b); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_loadXML(doc2, _bstr_(omitxmldecl_doc), &b); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_transformNode(doc2, (IXMLDOMNode*)doc, &ret); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(!lstrcmpW(ret, _bstr_("item1item2")), "transform result %s\n", wine_dbgstr_w(ret)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(ret, L"item1item2"), "transform result %s\n", wine_dbgstr_w(ret)); SysFreeString(ret); IXMLDOMDocument_Release(doc2); @@ -12592,6 +13393,7 @@ static struct attrtest_t attrtests[] = { { 0 } }; +/* see dlls/msxml[46]/tests/domdoc.c */ static void test_create_attribute(void) { struct attrtest_t *ptr = attrtests; @@ -12610,25 +13412,25 @@ static void test_create_attribute(void) V_VT(&var) = VT_I1; V_I1(&var) = NODE_ATTRIBUTE; hr = IXMLDOMDocument_createNode(doc, var, _bstr_(ptr->name), _bstr_(ptr->uri), &node); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); str = NULL; hr = IXMLDOMNode_get_prefix(node, &str); if (ptr->prefix) { - ok(hr == S_OK, "%d: got 0x%08x\n", i, hr); + ok(hr == S_OK, "%d: unexpected hr %#lx\n", i, hr); ok(!lstrcmpW(str, _bstr_(ptr->prefix)), "%d: got prefix %s, expected %s\n", i, wine_dbgstr_w(str), ptr->prefix); } else { - ok(hr == S_FALSE, "%d: got 0x%08x\n", i, hr); + ok(hr == S_FALSE, "%d: unexpected hr %#lx\n", i, hr); ok(str == NULL, "%d: got prefix %s\n", i, wine_dbgstr_w(str)); } SysFreeString(str); str = NULL; hr = IXMLDOMNode_get_namespaceURI(node, &str); - ok(hr == S_OK, "%d: got 0x%08x\n", i, hr); + ok(hr == S_OK, "%d: unexpected hr %#lx\n", i, hr); ok(!lstrcmpW(str, _bstr_(ptr->href)), "%d: got uri %s, expected %s\n", i, wine_dbgstr_w(str), ptr->href); SysFreeString(str); @@ -12642,24 +13444,24 @@ static void test_create_attribute(void) V_VT(&var) = VT_I1; V_I1(&var) = NODE_ELEMENT; hr = IXMLDOMDocument_createNode(doc, var, _bstr_("e"), NULL, &node2); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_QueryInterface(node2, &IID_IXMLDOMElement, (void**)&el); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IXMLDOMNode_Release(node2); V_VT(&var) = VT_I1; V_I1(&var) = NODE_ATTRIBUTE; hr = IXMLDOMDocument_createNode(doc, var, _bstr_("xmlns:a"), _bstr_("http://www.w3.org/2000/xmlns/"), &node); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_setAttributeNode(el, (IXMLDOMAttribute*)node, NULL); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* for some reason default namespace uri is not reported */ hr = IXMLDOMNode_get_namespaceURI(node, &str); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(!lstrcmpW(str, _bstr_("")), "got uri %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L""), "got uri %s\n", wine_dbgstr_w(str)); SysFreeString(str); IXMLDOMNode_Release(node); @@ -12677,11 +13479,11 @@ static void test_url(void) doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_get_url(doc, NULL); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); s = (void *)0xdeadbeef; hr = IXMLDOMDocument_get_url(doc, &s); - ok(hr == S_FALSE, "got 0x%08x\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(s == NULL, "got %s\n", wine_dbgstr_w(s)); IXMLDOMDocument_Release(doc); @@ -12702,22 +13504,22 @@ static void test_merging_text(void) doc = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_createElement(doc, _bstr_("Testing"), &root); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_appendChild(doc, (IXMLDOMNode*)root, NULL); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* test xmlAddChild */ for (i = 0; i < 10; i++) { - str = SysAllocString(szstr1); + str = SysAllocString(L"str1"); hr = IXMLDOMDocument_createTextNode(doc, str, &nodetext); SysFreeString(str); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); newtext = NULL; hr = IXMLDOMElement_appendChild(root, (IXMLDOMNode*)nodetext, (IXMLDOMNode**)&newtext); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(nodetext == newtext, "expected %p, got %p\n", nodetext, newtext); IXMLDOMText_Release(newtext); @@ -12726,19 +13528,19 @@ static void test_merging_text(void) /* test xmlAddPrevSibling */ hr = IXMLDOMElement_get_firstChild(root, &first); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&v) = VT_UNKNOWN; V_UNKNOWN(&v) = (IUnknown*)first; for (i = 0; i < 10; i++) { - str = SysAllocString(szstr2); + str = SysAllocString(L"str2"); hr = IXMLDOMDocument_createTextNode(doc, str, &nodetext); SysFreeString(str); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); newtext = NULL; hr = IXMLDOMElement_insertBefore(root, (IXMLDOMNode*)nodetext, v, (IXMLDOMNode**)&newtext); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(nodetext == newtext, "expected %p, got %p\n", nodetext, newtext); IXMLDOMText_Release(newtext); @@ -12759,9 +13561,9 @@ static HRESULT WINAPI transformdest_QueryInterface(IUnknown *iface, REFIID riid, IsEqualIID(riid, &IID_IServiceProvider) || IsEqualIID(riid, &IID_IStream) || IsEqualIID(riid, &IID_ISequentialStream) || - IsEqualIID(riid, &IID_IRequestDictionary); + IsEqualIID(riid, &IID_IResponse); -todo_wine_if(IsEqualIID(riid, &IID_IXMLDOMDocument)) + todo_wine_if(IsEqualIID(riid, &IID_IXMLDOMDocument)) ok(known_iid, "Unexpected riid %s\n", wine_dbgstr_guid(riid)); return E_NOINTERFACE; @@ -12788,7 +13590,12 @@ static void test_transformNodeToObject(void) { IUnknown transformdest = { &transformdestvtbl }; IXMLDOMDocument *doc, *doc2, *doc3; + ISequentialStream *sstream; + LARGE_INTEGER off; + WCHAR buffer[256]; + IStream *istream; VARIANT_BOOL b; + ULONG nread; HRESULT hr; VARIANT v; @@ -12797,29 +13604,74 @@ static void test_transformNodeToObject(void) doc3 = create_document(&IID_IXMLDOMDocument); hr = IXMLDOMDocument_loadXML(doc, _bstr_(szTransformXML), &b); - ok(hr == S_OK, "Failed to load document, hr %#x.\n", hr); + ok(hr == S_OK, "Failed to load document, hr %#lx.\n", hr); hr = IXMLDOMDocument_loadXML(doc2, _bstr_(szTransformSSXML), &b); - ok(hr == S_OK, "Failed to load document, hr %#x.\n", hr); + ok(hr == S_OK, "Failed to load document, hr %#lx.\n", hr); V_VT(&v) = VT_UNKNOWN; V_UNKNOWN(&v) = &transformdest; hr = IXMLDOMDocument_transformNodeToObject(doc, (IXMLDOMNode *)doc2, v); - ok(hr == E_INVALIDARG, "Failed to transform node, hr %#x.\n", hr); + ok(hr == E_INVALIDARG, "Failed to transform node, hr %#lx.\n", hr); V_VT(&v) = VT_UNKNOWN; V_UNKNOWN(&v) = NULL; hr = IXMLDOMDocument_transformNodeToObject(doc, (IXMLDOMNode *)doc2, v); - ok(hr == E_INVALIDARG, "Failed to transform node, hr %#x.\n", hr); + ok(hr == E_INVALIDARG, "Failed to transform node, hr %#lx.\n", hr); V_VT(&v) = VT_DISPATCH; V_DISPATCH(&v) = NULL; hr = IXMLDOMDocument_transformNodeToObject(doc, (IXMLDOMNode *)doc2, v); - ok(hr == E_INVALIDARG, "Failed to transform node, hr %#x.\n", hr); + ok(hr == E_INVALIDARG, "Failed to transform node, hr %#lx.\n", hr); V_VT(&v) = VT_DISPATCH; V_DISPATCH(&v) = (IDispatch *)doc3; hr = IXMLDOMDocument_transformNodeToObject(doc, (IXMLDOMNode *)doc2, v); - ok(hr == S_OK, "Failed to transform node, hr %#x.\n", hr); + ok(hr == S_OK, "Failed to transform node, hr %#lx.\n", hr); + + /* IStream */ + istream = SHCreateMemStream(NULL, 0); + V_VT(&v) = VT_UNKNOWN; + V_UNKNOWN(&v) = (IUnknown *)istream; + hr = IXMLDOMDocument_transformNodeToObject(doc, (IXMLDOMNode *)doc2, v); + ok(hr == S_OK, "Failed to transform node, hr %#lx.\n", hr); + + off.QuadPart = 0; + hr = IStream_Seek(istream, off, STREAM_SEEK_SET, NULL); + ok(hr == S_OK, "Failed to seek, hr %#lx.\n", hr); + + nread = 0; + memset(buffer, 0xcc, sizeof(buffer)); + hr = IStream_Read(istream, buffer, sizeof(buffer), &nread); + ok(hr == S_OK, "Failed to read, hr %#lx.\n", hr); + buffer[nread/2] = 0; + ok(buffer[0] == 0xfeff, "got %x\n", buffer[0]); + ok(compareIgnoreReturns(&buffer[1], _bstr_(szTransformOutput)), "got output %s\n", wine_dbgstr_w(buffer)); + IStream_Release(istream); + + /* ISequentialStream */ + istream = SHCreateMemStream(NULL, 0); + sstream = NULL; + hr = IStream_QueryInterface(istream, &IID_ISequentialStream, (void**)&sstream); + ok(hr == S_OK, "Failed to QI, hr %#lx.\n", hr); + + V_VT(&v) = VT_UNKNOWN; + V_UNKNOWN(&v) = (IUnknown *)sstream; + hr = IXMLDOMDocument_transformNodeToObject(doc, (IXMLDOMNode *)doc2, v); + ok(hr == S_OK, "Failed to transform node, hr %#lx.\n", hr); + + off.QuadPart = 0; + hr = IStream_Seek(istream, off, STREAM_SEEK_SET, NULL); + ok(hr == S_OK, "Failed to seek, hr %#lx.\n", hr); + + nread = 0; + memset(buffer, 0xcc, sizeof(buffer)); + hr = ISequentialStream_Read(sstream, buffer, sizeof(buffer), &nread); + ok(hr == S_OK, "Failed to read, hr %#lx.\n", hr); + buffer[nread/2] = 0; + ok(buffer[0] == 0xfeff, "got %x\n", buffer[0]); + ok(compareIgnoreReturns(&buffer[1], _bstr_(szTransformOutput)), "got output %s\n", wine_dbgstr_w(buffer)); + ISequentialStream_Release(sstream); + IStream_Release(istream); IXMLDOMDocument_Release(doc3); IXMLDOMDocument_Release(doc2); @@ -12845,42 +13697,76 @@ static void test_normalize_attribute_values(void) V_I2(&var) = 10; hr = IXMLDOMDocument2_getProperty(doc, _bstr_("NormalizeAttributeValues"), &var); todo_wine { - ok(hr == S_OK, "Failed to get property value, hr %#x.\n", hr); + ok(hr == S_OK, "Failed to get property value, hr %#lx.\n", hr); ok(V_VT(&var) == VT_BOOL, "Unexpected property value type, vt %d.\n", V_VT(&var)); ok(V_BOOL(&var) == VARIANT_FALSE, "Unexpected property value.\n"); } V_VT(&var) = VT_BOOL; V_BOOL(&var) = VARIANT_TRUE; hr = IXMLDOMDocument2_setProperty(doc, _bstr_("NormalizeAttributeValues"), var); - ok(hr == S_OK, "Failed to set property, hr %#x.\n", hr); + ok(hr == S_OK, "Failed to set property, hr %#lx.\n", hr); V_VT(&var) = VT_I2; V_I2(&var) = 10; hr = IXMLDOMDocument2_getProperty(doc, _bstr_("NormalizeAttributeValues"), &var); todo_wine { - ok(hr == S_OK, "Failed to get property value, hr %#x.\n", hr); + ok(hr == S_OK, "Failed to get property value, hr %#lx.\n", hr); ok(V_VT(&var) == VT_BOOL, "Unexpected property value type, vt %d.\n", V_VT(&var)); ok(V_BOOL(&var) == VARIANT_TRUE, "Unexpected property value.\n"); } IXMLDOMDocument2_Release(doc); } +static void test_max_element_depth_values(void) +{ + IXMLDOMDocument2 *doc; + VARIANT var; + HRESULT hr; + + doc = create_document_version(60, &IID_IXMLDOMDocument2); + + /* The default max element depth value should be 256. */ + V_VT(&var) = VT_UI4; + V_UI4(&var) = 0xdeadbeef; + hr = IXMLDOMDocument2_getProperty(doc, _bstr_("MaxElementDepth"), &var); +todo_wine { + ok(hr == S_OK, "Failed to get property value, hr %#lx.\n", hr); + ok(V_VT(&var) == VT_I4, "Unexpected property value type, vt %d.\n", V_VT(&var)); + ok(V_I4(&var) == 256, "Unexpected property value.\n"); +} + + /* Changes to the depth value should be observable when subsequently retrieved. */ + V_VT(&var) = VT_I4; + V_I4(&var) = 32; + hr = IXMLDOMDocument2_setProperty(doc, _bstr_("MaxElementDepth"), var); + ok(hr == S_OK, "Failed to set property, hr %#lx.\n", hr); + + V_VT(&var) = VT_UI4; + V_UI4(&var) = 0xdeadbeef; + hr = IXMLDOMDocument2_getProperty(doc, _bstr_("MaxElementDepth"), &var); +todo_wine { + ok(hr == S_OK, "Failed to get property value, hr %#lx.\n", hr); + ok(V_VT(&var) == VT_I4, "Unexpected property value type, vt %d.\n", V_VT(&var)); + ok(V_I4(&var) == 32, "Unexpected property value.\n"); +} + + IXMLDOMDocument2_Release(doc); +} + typedef struct _namespace_as_attribute_t { const GUID *guid; const char *clsid; - const char *xmlns_uri; } namespace_as_attribute_t; static const namespace_as_attribute_t namespace_as_attribute_test_data[] = { - { &CLSID_DOMDocument, "CLSID_DOMDocument", "" }, - { &CLSID_DOMDocument2, "CLSID_DOMDocument2", "" }, - { &CLSID_DOMDocument26, "CLSID_DOMDocument26", "" }, - { &CLSID_DOMDocument30, "CLSID_DOMDocument30", "" }, - { &CLSID_DOMDocument40, "CLSID_DOMDocument40", "" }, - { &CLSID_DOMDocument60, "CLSID_DOMDocument60", "http://www.w3.org/2000/xmlns/" }, + { &CLSID_DOMDocument, "CLSID_DOMDocument" }, + { &CLSID_DOMDocument2, "CLSID_DOMDocument2" }, + { &CLSID_DOMDocument26, "CLSID_DOMDocument26" }, + { &CLSID_DOMDocument30, "CLSID_DOMDocument30" }, { 0 } }; +/* see dlls/msxml[46]/tests/domdoc.c */ static void test_namespaces_as_attributes(void) { const namespace_as_attribute_t *entry = namespace_as_attribute_test_data; @@ -12892,6 +13778,7 @@ static void test_namespaces_as_attributes(void) const char *basenames[3]; const char *uris[3]; const char *texts[3]; + const char *xmls[3]; }; static const struct test tests[] = { { @@ -12901,6 +13788,7 @@ static void test_namespaces_as_attributes(void) { "b", "d", "ns" }, /* baseName */ { "nshref", NULL, "" }, /* namespaceURI */ { "b attr", "d attr", "nshref" }, /* text */ + { "ns:b=\"b attr\"", "d=\"d attr\"", "xmlns:ns=\"nshref\"" }, /* xml */ }, /* property only */ { @@ -12910,6 +13798,7 @@ static void test_namespaces_as_attributes(void) { "d" }, /* baseName */ { NULL }, /* namespaceURI */ { "d attr" }, /* text */ + { "d=\"d attr\"" }, /* xml */ }, /* namespace only */ { @@ -12919,6 +13808,17 @@ static void test_namespaces_as_attributes(void) { "ns" }, /* baseName */ { "" }, /* namespaceURI */ { "nshref" }, /* text */ + { "xmlns:ns=\"nshref\"" }, /* xml */ + }, + /* default namespace */ + { + "", 1, + { "xmlns" }, /* nodeName */ + { "xmlns" }, /* prefix */ + { "" }, /* baseName */ + { "" }, /* namespaceURI */ + { "nshref" }, /* text */ + { "xmlns=\"nshref\"" }, /* xml */ }, /* no properties or namespaces */ { @@ -12947,37 +13847,37 @@ static void test_namespaces_as_attributes(void) test = tests; while (test->xml) { hr = CoCreateInstance(entry->guid, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument2, (void **)&doc); - ok(SUCCEEDED(hr), "Failed to create document %s, hr %#x.\n", wine_dbgstr_guid(entry->guid), hr); + ok(hr == S_OK, "Unexpected hr %#lx for %s.\n", hr, wine_dbgstr_guid(entry->guid)); hr = IXMLDOMDocument_loadXML(doc, _bstr_(test->xml), &b); - ok(hr == S_OK, "Failed to load xml, hr %#x.\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); node = NULL; hr = IXMLDOMDocument_selectSingleNode(doc, _bstr_("a"), &node); - ok(SUCCEEDED(hr), "Failed to select a node, hr %#x.\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMNode_get_attributes(node, &map); - ok(SUCCEEDED(hr), "Failed to get attributes, hr %#x.\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = -1; hr = IXMLDOMNamedNodeMap_get_length(map, &len); - ok(SUCCEEDED(hr), "Failed to get map length, hr %#x.\n", hr); - ok(len == test->explen, "got %d\n", len); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(len == test->explen, "got %ld\n", len); item = NULL; hr = IXMLDOMNamedNodeMap_get_item(map, test->explen+1, &item); - ok(hr == S_FALSE, "Failed to get item, hr %#x.\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(!item, "Item should be NULL\n"); for (i = 0; i < len; i++) { item = NULL; hr = IXMLDOMNamedNodeMap_get_item(map, i, &item); - ok(SUCCEEDED(hr), "Failed to get item, hr %#x.\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); str = NULL; hr = IXMLDOMNode_get_nodeName(item, &str); - ok(SUCCEEDED(hr), "Failed to get node name, hr %#x.\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!lstrcmpW(str, _bstr_(test->names[i])), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); @@ -12985,16 +13885,16 @@ static void test_namespaces_as_attributes(void) hr = IXMLDOMNode_get_prefix(item, &str); if (test->prefixes[i]) { - ok(hr == S_OK, "Failed to get node name, hr %#x.\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!lstrcmpW(str, _bstr_(test->prefixes[i])), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); } else - ok(hr == S_FALSE, "Failed to get node name, hr %#x.\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr ); str = NULL; hr = IXMLDOMNode_get_baseName(item, &str); - ok(SUCCEEDED(hr), "Failed to get base name, hr %#x.\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!lstrcmpW(str, _bstr_(test->basenames[i])), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); @@ -13002,22 +13902,28 @@ static void test_namespaces_as_attributes(void) hr = IXMLDOMNode_get_namespaceURI(item, &str); if (test->uris[i]) { - ok(hr == S_OK, "Failed to get node name, hr %#x.\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); if (test->prefixes[i] && !strcmp(test->prefixes[i], "xmlns")) - ok(!lstrcmpW(str, _bstr_(entry->xmlns_uri)), "got %s\n", wine_dbgstr_w(str)); + ok(!SysStringLen(str), "got %s\n", wine_dbgstr_w(str)); else ok(!lstrcmpW(str, _bstr_(test->uris[i])), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); } else - ok(hr == S_FALSE, "Failed to get node name, hr %#x.\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr ); str = NULL; hr = IXMLDOMNode_get_text(item, &str); - ok(SUCCEEDED(hr), "Failed to get node text, hr %#x.\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!lstrcmpW(str, _bstr_(test->texts[i])), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); + str = NULL; + hr = IXMLDOMNode_get_xml(item, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, _bstr_(test->xmls[i])), "got %s\n", wine_dbgstr_w(str)); + SysFreeString(str); + IXMLDOMNode_Release(item); } @@ -13033,9 +13939,340 @@ static void test_namespaces_as_attributes(void) free_bstrs(); } +static const IID *qi_list[32]; +static int qi_count; + +static BOOL qi_list_contains(REFIID iid) +{ + int i; + + for (i = 0; i < qi_count; i++) + { + if (IsEqualGUID(qi_list[i], iid)) + return TRUE; + } + + return FALSE; +} + +static BOOL qi_list_contains_service(REFIID service, REFIID iid) +{ + int i; + + for (i = 0; i < qi_count; i++) + { + if (IsEqualGUID(qi_list[i], service) && IsEqualGUID(qi_list[i + 1], iid)) + return TRUE; + } + + return FALSE; +} + +static HRESULT WINAPI sp_QueryInterface(IServiceProvider *iface, REFIID iid, void **ppv) +{ + if (qi_count < ARRAY_SIZE(qi_list)) + qi_list[qi_count++] = iid; + else + ok(0, "qi_list overflow: %d\n", qi_count); + + if (IsEqualGUID(iid, &IID_IUnknown) || + IsEqualGUID(iid, &IID_IServiceProvider)) + { + *ppv = iface; + return S_OK; + } + + *ppv = NULL; + return E_NOINTERFACE; +} + +static ULONG WINAPI sp_AddRef(IServiceProvider *iface) +{ + return 2; +} + +static ULONG WINAPI sp_Release(IServiceProvider *iface) +{ + return 1; +} + +static HRESULT WINAPI sp_QueryService(IServiceProvider *iface, REFGUID service, + REFIID iid, void **ppv) +{ + if (IsEqualGUID(service, &SID_SContainerDispatch) || + IsEqualGUID(service, &SID_SInternetHostSecurityManager)) + { + if (qi_count + 1 < ARRAY_SIZE(qi_list)) + { + qi_list[qi_count++] = service; + qi_list[qi_count++] = iid; + } + else + ok(0, "qi_list overflow: %d\n", qi_count); + } + + *ppv = NULL; + return E_NOINTERFACE; +} + +static const IServiceProviderVtbl sp_vtbl = +{ + sp_QueryInterface, + sp_AddRef, + sp_Release, + sp_QueryService +}; + +static IServiceProvider sp = { &sp_vtbl }; + +static void test_load_with_site(void) +{ + char path[MAX_PATH]; + IXMLDOMDocument2 *doc; + IObjectWithSite *site; + VARIANT var; + VARIANT_BOOL b; + HRESULT hr; + + GetTempPathA(MAX_PATH, path); + strcat(path, "winetest.xml"); + write_to_file(path, win1252xml); + + doc = create_document(&IID_IXMLDOMDocument2); + + hr = IXMLDOMDocument2_QueryInterface(doc, &IID_IObjectWithSite, (void **)&site); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + qi_count = 0; + hr = IObjectWithSite_SetSite(site, (IUnknown *)&sp); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(qi_count != 0, "got %d QI calls\n", qi_count); + todo_wine + ok(qi_list_contains(&IID_IXMLDOMDocument), "QI(IID_IXMLDOMDocument) was not called\n"); + ok(qi_list_contains(&IID_IHTMLDocument2), "QI(IID_IHTMLDocument2) was not called\n"); + ok(qi_list_contains(&IID_IServiceProvider), "QI(IID_IServiceProvider) was not called\n"); + todo_wine + ok(qi_list_contains(&IID_IOleClientSite), "QI(IID_IOleClientSite) was not called\n"); + ok(qi_list_contains_service(&SID_SContainerDispatch, &IID_IHTMLDocument2), + "QI(SID_SContainerDispatch, IID_IHTMLDocument2) was not called\n"); + todo_wine + ok(qi_list_contains_service(&SID_SInternetHostSecurityManager, &IID_IXMLDOMDocument), + "QI(SID_SInternetHostSecurityManager, IID_IXMLDOMDocument) was not called\n"); + + qi_count = 0; + V_VT(&var) = VT_BSTR; + V_BSTR(&var) = _bstr_(path); + hr = IXMLDOMDocument2_load(doc, var, &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(b == VARIANT_TRUE, "got %d\n", b); + ok(qi_count == 0, "got %d QI calls\n", qi_count); + + IXMLDOMDocument2_Release(doc); + + DeleteFileA(path); + free_bstrs(); +} + +typedef struct _validate_on_parse_test_t +{ + const GUID *guid; + const char *clsid; + HRESULT hr; +} validate_on_parse_test_t; + +static const validate_on_parse_test_t validate_on_parse_tests[] = +{ + { &CLSID_DOMDocument, "CLSID_DOMDocument" , E_FAIL }, + { &CLSID_DOMDocument2, "CLSID_DOMDocument2", E_FAIL }, + { &CLSID_DOMDocument26, "CLSID_DOMDocument26", E_FAIL }, + { &CLSID_DOMDocument30, "CLSID_DOMDocument30", E_FAIL }, + { &CLSID_DOMDocument40, "CLSID_DOMDocument40", S_OK }, + { &CLSID_DOMDocument60, "CLSID_DOMDocument60", S_OK }, + { 0 } +}; + +static void test_validate_on_parse_values(void) +{ + const validate_on_parse_test_t *entry = validate_on_parse_tests; + int i = 0; + + while (entry->guid) + { + IXMLDOMDocument2 *doc, *doc_clone; + IXMLDOMNode *node_clone; + VARIANT var, var_clone; + VARIANT_BOOL b; + HRESULT hr; + + i++; + if (!is_clsid_supported(entry->guid, &IID_IXMLDOMDocument2)) + { + entry++; + continue; + } + + hr = CoCreateInstance(entry->guid, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument2, (void **)&doc); + ok(hr == S_OK, "%d: got %#lx.\n", i, hr); + + V_VT(&var) = VT_I2; + V_I2(&var) = 0; + hr = IXMLDOMDocument2_getProperty(doc, _bstr_("ValidateOnParse"), &var); + ok(hr == entry->hr || broken(hr == E_FAIL) /* win8 */, "%d: got hr %#lx.\n", i, hr); + if (SUCCEEDED(hr)) + { + ok(V_VT(&var) == VT_BOOL, "%d: got property value type %d.\n", i, V_VT(&var)); + ok(V_BOOL(&var) == VARIANT_TRUE, "%d: got property value %d.\n", i, V_BOOL(&var)); + } + else + { + ok(V_VT(&var) == VT_I2, "%d: got property value type %d.\n", i, V_VT(&var)); + ok(V_I2(&var) == 0, "%d: got property value %d.\n", i, V_I2(&var)); + if (IsEqualCLSID(entry->guid, &CLSID_DOMDocument40)) + { + win_skip("Skip tests for CLSID_DOMDocument40 on Windows 8.\n"); + IXMLDOMDocument2_Release(doc); + entry++; + continue; + } + } + + b = VARIANT_FALSE; + hr = IXMLDOMDocument2_get_validateOnParse(doc, &b); + ok(hr == S_OK, "%d: got hr %#lx.\n", i, hr); + ok(b == VARIANT_TRUE, "%d: got property value %d.\n", i, b); + + V_VT(&var) = VT_I2; + V_I2(&var) = 0; + hr = IXMLDOMDocument2_setProperty(doc, _bstr_("ValidateOnParse"), var); + ok(hr == entry->hr, "%d: got hr %#lx.\n", i, hr); + V_VT(&var) = VT_I2; + V_I2(&var) = 10; + hr = IXMLDOMDocument2_getProperty(doc, _bstr_("ValidateOnParse"), &var); + ok(hr == entry->hr, "%d: got hr %#lx.\n", i, hr); + if (SUCCEEDED(hr)) + { + ok(V_VT(&var) == VT_BOOL, "%d: got property value type %d.\n", i, V_VT(&var)); + ok(V_BOOL(&var) == VARIANT_FALSE, "%d: got property value %d.\n", i, V_BOOL(&var)); + } + + V_VT(&var) = VT_BOOL; + V_BOOL(&var) = VARIANT_TRUE; + hr = IXMLDOMDocument2_setProperty(doc, _bstr_("ValidateOnParse"), var); + ok(hr == entry->hr, "%d: got hr %#lx.\n", i, hr); + b = VARIANT_FALSE; + hr = IXMLDOMDocument2_get_validateOnParse(doc, &b); + ok(hr == S_OK, "%d: got hr %#lx.\n", i, hr); + ok(b == VARIANT_TRUE, "%d: got property value %d.\n", i, b); + + V_VT(&var) = VT_I2; + V_I2(&var) = 0; + hr = IXMLDOMDocument2_getProperty(doc, _bstr_("ValidateOnParse"), &var); + ok(hr == entry->hr, "%d: got hr %#lx.\n", i, hr); + if (SUCCEEDED(hr)) + { + ok(V_VT(&var) == VT_BOOL, "%d: got property value type %d.\n", i, V_VT(&var)); + ok(V_BOOL(&var) == VARIANT_TRUE, "%d: got property value %d.\n", i, V_BOOL(&var)); + } + + b = VARIANT_FALSE; + hr = IXMLDOMDocument2_put_validateOnParse(doc, b); + ok(hr == S_OK, "%d: got hr %#lx.\n", i, hr); + V_VT(&var) = VT_I2; + V_I2(&var) = 10; + hr = IXMLDOMDocument2_getProperty(doc, _bstr_("ValidateOnParse"), &var); + ok(hr == entry->hr, "%d: got hr %#lx.\n", i, hr); + if (SUCCEEDED(hr)) + { + ok(V_VT(&var) == VT_BOOL, "%d: got property value type %d.\n", i, V_VT(&var)); + ok(V_BOOL(&var) == VARIANT_FALSE, "%d: got property value %d.\n", i, V_BOOL(&var)); + } + + /* Cloned document inherits the property. */ + hr = IXMLDOMDocument2_cloneNode(doc, VARIANT_TRUE, &node_clone); + ok(hr == S_OK, "%d: got hr %#lx.\n", i, hr); + ok(node_clone != NULL, "%d: got node %p.\n", i, node_clone); + hr = IXMLDOMNode_QueryInterface(node_clone, &IID_IXMLDOMDocument2, (void **)&doc_clone); + ok(hr == S_OK, "%d: got hr %#lx.\n", i, hr); + V_VT(&var) = VT_I2; + V_I2(&var) = 10; + hr = IXMLDOMDocument2_getProperty(doc, _bstr_("ValidateOnParse"), &var); + ok(hr == entry->hr, "%d: got hr %#lx.\n", i, hr); + if (SUCCEEDED(hr)) + { + ok(V_VT(&var) == VT_BOOL, "%d: got property value type %d.\n", i, V_VT(&var)); + ok(V_BOOL(&var) == VARIANT_FALSE, "%d: got property value %d.\n", i, V_BOOL(&var)); + } + V_VT(&var_clone) = VT_I2; + V_I2(&var_clone) = 10; + hr = IXMLDOMDocument2_getProperty(doc_clone, _bstr_("ValidateOnParse"), &var_clone); + ok(hr == entry->hr, "%d: got hr %#lx.\n", i, hr); + if (SUCCEEDED(hr)) + { + ok(V_VT(&var_clone) == V_VT(&var), "%d: got property value type %d.\n", i, V_VT(&var_clone)); + ok(V_BOOL(&var_clone) == V_BOOL(&var), "%d: got property value %d.\n", i, V_BOOL(&var_clone)); + } + b = VARIANT_TRUE; + hr = IXMLDOMDocument2_get_validateOnParse(doc_clone, &b); + ok(hr == S_OK, "%d: got hr %#lx.\n", i, hr); + ok(b == VARIANT_FALSE, "%d: got property value %d.\n", i, b); + IXMLDOMNode_Release(node_clone); + IXMLDOMDocument2_Release(doc_clone); + + IXMLDOMDocument2_Release(doc); + entry++; + } +} + +static void test_indent(void) +{ + HRESULT hr; + VARIANT_BOOL b = VARIANT_FALSE; + BSTR data, str; + const WCHAR *data_expected; + IXMLDOMDocument *doc; + IXMLDOMElement *element = NULL; + + str = SysAllocString(L"\n" + "\n" + "\n" + "\n" + "\n" + "\n"); + hr = CoCreateInstance(&CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument, (void **)&doc); + ok(hr == S_OK, "Unable to create instance hr %#lx.\n", hr); + hr = IXMLDOMDocument_loadXML(doc, str, &b); + ok(hr == S_OK, "Unable to load XML hr %#lx.\n", hr); + hr = IXMLDOMDocument_get_documentElement(doc, &element); + ok(hr == S_OK, "Unable to get element hr %#lx.\n", hr); + hr = IXMLDOMElement_get_xml(element, &data); + ok(hr == S_OK, "Unable to get XML hr %#lx.\n", hr); + + data_expected = L"\r\n" + "\t\r\n" + "\t\t\r\n" + "\t\r\n" + ""; + ok(!lstrcmpW(data, data_expected), "incorrect element string, got '%s'\n", wine_dbgstr_w(data)); + + SysFreeString(str); +} + +static DWORD WINAPI new_thread(void *arg) +{ + HRESULT hr = CoInitialize(NULL); + ok(hr == S_OK, "failed to init com\n"); + if (hr != S_OK) return 1; + + test_indent(); + + CoUninitialize(); + return 0; +} + START_TEST(domdoc) { HRESULT hr; + HANDLE thread; hr = CoInitialize( NULL ); ok( hr == S_OK, "failed to init com\n"); @@ -13049,6 +14286,8 @@ START_TEST(domdoc) return; } + test_createProcessingInstruction(); + test_load_with_site(); test_domdoc(); test_persiststream(); test_domnode(); @@ -13089,7 +14328,6 @@ START_TEST(domdoc) test_default_properties(); test_selectSingleNode(); test_events(); - test_createProcessingInstruction(); test_put_nodeTypedValue(); test_get_xml(); test_insertBefore(); @@ -13118,9 +14356,10 @@ START_TEST(domdoc) test_transformNodeToObject(); test_normalize_attribute_values(); test_namespaces_as_attributes(); - + test_validate_on_parse_values(); test_xsltemplate(); test_xsltext(); + test_max_element_depth_values(); if (is_clsid_supported(&CLSID_MXNamespaceManager40, &IID_IMXNamespaceManager)) { @@ -13128,5 +14367,12 @@ START_TEST(domdoc) test_mxnamespacemanager_override(); } + /* We need to test test_indent in a seperate thread. This is to prevent regressions in multi-threaded + applications where the default indentation is set (e.g. by setting xmlTreeIndentString) in the first + thread but not for new threads, leading to the wrong indentation in subsequent threads. */ + thread = CreateThread(NULL, 0, new_thread, NULL, 0, NULL); + WaitForSingleObject(thread, INFINITE); + CloseHandle(thread); + CoUninitialize(); } diff --git a/modules/rostests/winetests/msxml3/httpreq.c b/modules/rostests/winetests/msxml3/httpreq.c index ae0a95a2f1f..bccfbaf582a 100644 --- a/modules/rostests/winetests/msxml3/httpreq.c +++ b/modules/rostests/winetests/msxml3/httpreq.c @@ -35,19 +35,30 @@ #include "objsafe.h" #include "mshtml.h" -#include "wine/heap.h" #include "wine/test.h" -#define EXPECT_HR(hr,hr_exp) \ - ok(hr == hr_exp, "got 0x%08x, expected 0x%08x\n", hr, hr_exp) - #define EXPECT_REF(node,ref) _expect_ref((IUnknown*)node, ref, __LINE__) static void _expect_ref(IUnknown* obj, ULONG ref, int line) { ULONG rc; IUnknown_AddRef(obj); rc = IUnknown_Release(obj); - ok_(__FILE__, line)(rc == ref, "expected refcount %d, got %d\n", ref, rc); + ok_(__FILE__, line)(rc == ref, "expected refcount %ld, got %ld.\n", ref, rc); +} + +#define check_interface(a, b, c) check_interface_(__LINE__, a, b, c) +static void check_interface_(unsigned int line, void *iface_ptr, REFIID iid, BOOL supported) +{ + IUnknown *iface = iface_ptr; + HRESULT hr, expected_hr; + IUnknown *unk; + + expected_hr = supported ? S_OK : E_NOINTERFACE; + + hr = IUnknown_QueryInterface(iface, iid, (void **)&unk); + ok_(__FILE__, line)(hr == expected_hr, "Got hr %#lx, expected %#lx.\n", hr, expected_hr); + if (SUCCEEDED(hr)) + IUnknown_Release(unk); } static const char xmltestA[] = "http://test.winehq.org/tests/xmltest.xml"; @@ -130,21 +141,6 @@ static void free_bstrs(void) alloced_bstrs_count = 0; } -static BSTR a2bstr(const char *str) -{ - BSTR ret; - int len; - - if(!str) - return NULL; - - len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0); - ret = SysAllocStringLen(NULL, len); - MultiByteToWideChar(CP_ACP, 0, str, -1, ret, len); - - return ret; -} - /* test IHTMLElementCollection */ static HRESULT WINAPI htmlecoll_QueryInterface(IHTMLElementCollection *iface, REFIID riid, void **ppvObject) @@ -250,7 +246,6 @@ static IHTMLElementCollection htmlecoll = { &TestHTMLECollectionVtbl }; /* test IHTMLDocument2 */ static HRESULT WINAPI htmldoc2_QueryInterface(IHTMLDocument2 *iface, REFIID riid, void **ppvObject) { - trace("\n"); *ppvObject = NULL; return E_NOINTERFACE; } @@ -496,7 +491,7 @@ static HRESULT WINAPI htmldoc2_put_URL(IHTMLDocument2 *iface, BSTR v) static HRESULT WINAPI htmldoc2_get_URL(IHTMLDocument2 *iface, BSTR *p) { CHECK_EXPECT2(htmldoc2_get_url); - *p = a2bstr("http://test.winehq.org/"); + *p = SysAllocString(L"http://test.winehq.org/"); return S_OK; } @@ -1254,7 +1249,7 @@ static ULONG WINAPI dispevent_Release(IDispatch *iface) ULONG ref = InterlockedDecrement( &This->ref ); if (ref == 0) - heap_free(This); + free(This); return ref; } @@ -1287,8 +1282,8 @@ static HRESULT WINAPI dispevent_Invoke(IDispatch *iface, DISPID member, REFIID r LONG state; HRESULT hr; - ok(member == 0, "expected 0 member, got %d\n", member); - ok(lcid == LOCALE_SYSTEM_DEFAULT, "expected LOCALE_SYSTEM_DEFAULT, got lcid %x\n", lcid); + ok(!member, "expected 0 member, got %ld.\n", member); + ok(lcid == LOCALE_SYSTEM_DEFAULT, "expected LOCALE_SYSTEM_DEFAULT, got lcid %lx.\n", lcid); ok(flags == DISPATCH_METHOD, "expected DISPATCH_METHOD, got %d\n", flags); ok(params->cArgs == 0, "got %d\n", params->cArgs); @@ -1304,14 +1299,13 @@ static HRESULT WINAPI dispevent_Invoke(IDispatch *iface, DISPID member, REFIID r state = READYSTATE_UNINITIALIZED; hr = IXMLHttpRequest_get_readyState(httpreq, &state); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); if (state == READYSTATE_COMPLETE) { BSTR text = NULL; hr = IXMLHttpRequest_get_responseText(httpreq, &text); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(*text != 0, "got %s\n", wine_dbgstr_w(text)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); SysFreeString(text); } @@ -1331,7 +1325,7 @@ static const IDispatchVtbl dispeventVtbl = static IDispatch* create_dispevent(void) { - dispevent *event = heap_alloc(sizeof(*event)); + dispevent *event = malloc(sizeof(*event)); event->IDispatch_iface.lpVtbl = &dispeventVtbl; event->ref = 1; @@ -1366,10 +1360,10 @@ static void set_safety_opt(IUnknown *unk, DWORD mask, DWORD opts) HRESULT hr; hr = IUnknown_QueryInterface(unk, &IID_IObjectSafety, (void**)&obj_safety); - ok(hr == S_OK, "Could not get IObjectSafety iface: %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IObjectSafety_SetInterfaceSafetyOptions(obj_safety, &IID_IDispatch, mask, mask&opts); - ok(hr == S_OK, "SetInterfaceSafetyOptions failed: %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IObjectSafety_Release(obj_safety); } @@ -1380,7 +1374,7 @@ static void set_xhr_site(IXMLHttpRequest *xhr) HRESULT hr; hr = IXMLHttpRequest_QueryInterface(xhr, &IID_IObjectWithSite, (void**)&obj_site); - ok(hr == S_OK, "Could not get IObjectWithSite iface: %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); g_enablecallchecks = TRUE; @@ -1400,14 +1394,14 @@ static void set_xhr_site(IXMLHttpRequest *xhr) SET_EXPECT(site_qi_IOleClientSite); hr = IObjectWithSite_SetSite(obj_site, &testsite); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); CHECK_CALLED(site_qi_IServiceProvider); -todo_wine + todo_wine CHECK_CALLED(sp_queryservice_SID_SBindHost); CHECK_CALLED(sp_queryservice_SID_SContainerDispatch_htmldoc2); CHECK_CALLED(sp_queryservice_SID_secmgr_htmldoc2); -todo_wine + todo_wine CHECK_CALLED(sp_queryservice_SID_secmgr_xmldomdoc); /* this one isn't very reliable CHECK_CALLED(sp_queryservice_SID_secmgr_secmgr); */ @@ -1438,7 +1432,7 @@ static void _test_open(unsigned line, IXMLHttpRequest *xhr, const char *method, V_BOOL(&vfalse) = VARIANT_FALSE; hr = IXMLHttpRequest_open(xhr, _bstr_(method), _bstr_(url), vfalse, empty, empty); - ok_(__FILE__,line)(hr == exhres, "open(%s %s) failed: %08x, expected %08x\n", method, url, hr, exhres); + ok_(__FILE__,line)(hr == exhres, "open(%s %s) failed: %#lx, expected %#lx.\n", method, url, hr, exhres); } #define test_server_open(a,b,c,d) _test_server_open(__LINE__,a,b,c,d) @@ -1452,7 +1446,7 @@ static void _test_server_open(unsigned line, IServerXMLHTTPRequest *xhr, const c V_BOOL(&vfalse) = VARIANT_FALSE; hr = IServerXMLHTTPRequest_open(xhr, _bstr_(method), _bstr_(url), vfalse, empty, empty); - ok_(__FILE__,line)(hr == exhres, "open(%s %s) failed: %08x, expected %08x\n", method, url, hr, exhres); + ok_(__FILE__,line)(hr == exhres, "open(%s %s) failed: %#lx, expected %#lx.\n", method, url, hr, exhres); } static void test_XMLHTTP(void) @@ -1460,8 +1454,6 @@ static void test_XMLHTTP(void) static const char bodyA[] = "mode=Test"; static const char urlA[] = "http://test.winehq.org/tests/post.php"; static const char referertesturl[] = "http://test.winehq.org/tests/referer.php"; - static const WCHAR wszExpectedResponse[] = {'F','A','I','L','E','D',0}; - static const WCHAR norefererW[] = {'n','o',' ','r','e','f','e','r','e','r',' ','s','e','t',0}; IXMLHttpRequest *xhr; IObjectWithSite *obj_site, *obj_site2; @@ -1476,43 +1468,47 @@ static void test_XMLHTTP(void) xhr = create_xhr(); + check_interface(xhr, &IID_IXMLHttpRequest, TRUE); + check_interface(xhr, &IID_IDispatch, TRUE); + check_interface(xhr, &IID_IDispatchEx, FALSE); + VariantInit(&dummy); V_VT(&dummy) = VT_ERROR; V_ERROR(&dummy) = DISP_E_MEMBERNOTFOUND; hr = IXMLHttpRequest_put_onreadystatechange(xhr, NULL); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLHttpRequest_abort(xhr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&varbody) = VT_I2; V_I2(&varbody) = 1; hr = IXMLHttpRequest_get_responseBody(xhr, &varbody); - EXPECT_HR(hr, E_PENDING); + ok(hr == E_PENDING, "Unexpected hr %#lx.\n", hr); ok(V_VT(&varbody) == VT_EMPTY, "got type %d\n", V_VT(&varbody)); V_VT(&varbody) = VT_I2; V_I2(&varbody) = 1; hr = IXMLHttpRequest_get_responseStream(xhr, &varbody); - EXPECT_HR(hr, E_PENDING); + ok(hr == E_PENDING, "Unexpected hr %#lx.\n", hr); ok(V_VT(&varbody) == VT_EMPTY, "got type %d\n", V_VT(&varbody)); /* send before open */ hr = IXMLHttpRequest_send(xhr, dummy); - ok(hr == E_FAIL || broken(hr == E_UNEXPECTED) /* win2k */, "got 0x%08x\n", hr); + ok(hr == E_FAIL || broken(hr == E_UNEXPECTED) /* win2k */, "Unexpected hr %#lx.\n", hr); /* initial status code */ hr = IXMLHttpRequest_get_status(xhr, NULL); - ok(hr == E_POINTER || broken(hr == E_INVALIDARG) /* sequence) { call_seq->size = 10; - call_seq->sequence = heap_alloc(call_seq->size * sizeof (struct call_entry)); + call_seq->sequence = malloc(call_seq->size * sizeof (struct call_entry)); } if (call_seq->count == call_seq->size) { call_seq->size *= 2; - call_seq->sequence = heap_realloc(call_seq->sequence, call_seq->size * sizeof (struct call_entry)); + call_seq->sequence = realloc(call_seq->sequence, call_seq->size * sizeof (struct call_entry)); } assert(call_seq->sequence); @@ -299,7 +308,7 @@ static inline void flush_sequence(struct call_sequence **seg, int sequence_index SysFreeString(call_seq->sequence[i].attributes[j].qnameW); SysFreeString(call_seq->sequence[i].attributes[j].valueW); } - heap_free(call_seq->sequence[i].attributes); + free(call_seq->sequence[i].attributes); call_seq->sequence[i].attr_count = 0; SysFreeString(call_seq->sequence[i].arg1W); @@ -307,7 +316,7 @@ static inline void flush_sequence(struct call_sequence **seg, int sequence_index SysFreeString(call_seq->sequence[i].arg3W); } - heap_free(call_seq->sequence); + free(call_seq->sequence); call_seq->sequence = NULL; call_seq->count = call_seq->size = 0; } @@ -460,12 +469,12 @@ static void ok_sequence_(struct call_sequence **seq, int sequence_index, { failcount++; ok_(file, line) (FALSE, - "%s: in event %s expecting ret 0x%08x got 0x%08x\n", + "%s: in event %s expecting ret %#lx got %#lx\n", context, get_event_name(actual->id), expected->ret, actual->ret); } else ok_(file, line) (expected->ret == actual->ret, - "%s: in event %s expecting ret 0x%08x got 0x%08x\n", + "%s: in event %s expecting ret %#lx got %#lx\n", context, get_event_name(actual->id), expected->ret, actual->ret); break; case EH_ERROR: @@ -534,30 +543,25 @@ static void init_call_sequences(struct call_sequence **seq, int n) int i; for (i = 0; i < n; i++) - seq[i] = heap_alloc_zero(sizeof(struct call_sequence)); + seq[i] = calloc(1, sizeof(**seq)); } -static const WCHAR szSimpleXML[] = { -'<','?','x','m','l',' ','v','e','r','s','i','o','n','=','\"','1','.','0','\"',' ','?','>','\n', -'<','B','a','n','k','A','c','c','o','u','n','t','>','\n', -' ',' ',' ','<','N','u','m','b','e','r','>','1','2','3','4','<','/','N','u','m','b','e','r','>','\n', -' ',' ',' ','<','N','a','m','e','>','C','a','p','t','a','i','n',' ','A','h','a','b','<','/','N','a','m','e','>','\n', -'<','/','B','a','n','k','A','c','c','o','u','n','t','>','\n','\0' -}; +static const WCHAR szSimpleXML[] = -static const WCHAR carriage_ret_test[] = { -'<','?','x','m','l',' ','v','e','r','s','i','o','n','=','"','1','.','0','"','?','>','\r','\n', -'<','B','a','n','k','A','c','c','o','u','n','t','>','\r','\n', -'\t','<','N','u','m','b','e','r','>','1','2','3','4','<','/','N','u','m','b','e','r','>','\r','\n', -'\t','<','N','a','m','e','>','C','a','p','t','a','i','n',' ','A','h','a','b','<','/','N','a','m','e','>','\r','\n', -'<','/','B','a','n','k','A','c','c','o','u','n','t','>','\r','\n','\0' -}; +L"\n" +"\n" +" 1234\n" +" Captain Ahab\n" +"\n"; -static const WCHAR szUtf16XML[] = { -'<','?','x','m','l',' ','v','e','r','s','i','o','n','=','"','1','.','0','"',' ', -'e','n','c','o','d','i','n','g','=','"','U','T','F','-','1','6','"',' ', -'s','t','a','n','d','a','l','o','n','e','=','"','n','o','"','?','>','\r','\n' -}; +static const WCHAR carriage_ret_test[] = + +L"\r\n" +"\r\n\t1234\r\n\t" +"Captain Ahab\r\n" +"\r\n"; + +static const WCHAR szUtf16XML[] = L"\r\n"; static const CHAR szUtf16BOM[] = {0xff, 0xfe}; @@ -1097,7 +1101,7 @@ static HRESULT WINAPI contentHandler_putDocumentLocator( add_call(sequences, CONTENT_HANDLER_INDEX, &call); hr = ISAXLocator_QueryInterface(pLocator, &IID_IVBSAXLocator, (void**)&unk); - EXPECT_HR(hr, E_NOINTERFACE); + ok(hr == E_NOINTERFACE, "Unexpected hr %#lx.\n", hr); if (msxml_version >= 6) { ISAXAttributes *attr, *attr1; @@ -1105,21 +1109,21 @@ static HRESULT WINAPI contentHandler_putDocumentLocator( EXPECT_REF(pLocator, 1); hr = ISAXLocator_QueryInterface(pLocator, &IID_ISAXAttributes, (void**)&attr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(pLocator, 2); hr = ISAXLocator_QueryInterface(pLocator, &IID_ISAXAttributes, (void**)&attr1); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(pLocator, 3); ok(attr == attr1, "got %p, %p\n", attr, attr1); hr = ISAXAttributes_QueryInterface(attr, &IID_IVBSAXAttributes, (void**)&unk); - EXPECT_HR(hr, E_NOINTERFACE); + ok(hr == E_NOINTERFACE, "Unexpected hr %#lx.\n", hr); hr = ISAXLocator_QueryInterface(pLocator, &IID_IVBSAXAttributes, (void**)&unk); - EXPECT_HR(hr, E_NOINTERFACE); + ok(hr == E_NOINTERFACE, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_QueryInterface(attr, &IID_IMXAttributes, (void**)&mxattr); - EXPECT_HR(hr, E_NOINTERFACE); + ok(hr == E_NOINTERFACE, "Unexpected hr %#lx.\n", hr); ISAXAttributes_Release(attr); ISAXAttributes_Release(attr1); @@ -1207,7 +1211,7 @@ static HRESULT WINAPI contentHandler_startElement( ok(qname != NULL, "qname == NULL\n"); hr = ISAXAttributes_QueryInterface(saxattr, &IID_IMXAttributes, (void**)&mxattr); - EXPECT_HR(hr, E_NOINTERFACE); + ok(hr == E_NOINTERFACE, "Unexpected hr %#lx.\n", hr); init_call_entry(locator, &call); call.id = CH_STARTELEMENT; @@ -1222,7 +1226,7 @@ static HRESULT WINAPI contentHandler_startElement( /* store actual attributes */ len = 0; hr = ISAXAttributes_getLength(saxattr, &len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); if (len) { @@ -1230,11 +1234,11 @@ static HRESULT WINAPI contentHandler_startElement( int i; struct attribute_entry *attr; - attr = heap_alloc_zero(len * sizeof(*attr)); + attr = calloc(len, sizeof(*attr)); v = VARIANT_TRUE; hr = ISAXXMLReader_getFeature(g_reader, _bstr_("http://xml.org/sax/features/namespaces"), &v); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); for (i = 0; i < len; i++) { @@ -1243,10 +1247,10 @@ static HRESULT WINAPI contentHandler_startElement( hr = ISAXAttributes_getName(saxattr, i, &uri, &uri_len, &localname, &local_len, &qname, &qname_len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getValue(saxattr, i, &value, &value_len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* if 'namespaces' switched off uri and local name contains garbage */ if (v == VARIANT_FALSE && msxml_version > 0) @@ -1525,9 +1529,9 @@ static HRESULT WINAPI isaxattributes_getQName( const WCHAR **QName, int *QNameLength) { - static const WCHAR attrqnamesW[][15] = {{'a',':','a','t','t','r','1','j','u','n','k',0}, - {'a','t','t','r','2','j','u','n','k',0}, - {'a','t','t','r','3',0}}; + static const WCHAR attrqnamesW[][15] = {L"a:attr1junk", + L"attr2junk", + L"attr3"}; static const int attrqnamelen[] = {7, 5, 5}; ok(index >= 0 && index <= 2, "invalid index received %d\n", index); @@ -1616,9 +1620,9 @@ static HRESULT WINAPI isaxattributes_getTypeFromQName( static HRESULT WINAPI isaxattributes_getValue(ISAXAttributes* iface, int index, const WCHAR **value, int *nValue) { - static const WCHAR attrvaluesW[][10] = {{'a','1','j','u','n','k',0}, - {'a','2','j','u','n','k',0}, - {'<','&','"','>','\'',0}}; + static const WCHAR attrvaluesW[][10] = {L"a1junk", + L"a2junk", + L"<&\">'"}; static const int attrvalueslen[] = {2, 2, 5}; ok(index >= 0 && index <= 2, "invalid index received %d\n", index); @@ -1922,7 +1926,7 @@ typedef struct mxwriter_stream_test_t { } mxwriter_stream_test; static const mxwriter_write_test *current_write_test; -static DWORD current_stream_test_index; +static unsigned int current_stream_test_index; static HRESULT WINAPI istream_QueryInterface(IStream *iface, REFIID riid, void **ppvObject) { @@ -2030,7 +2034,7 @@ static HRESULT WINAPI mxstream_Write(IStream *iface, const void *pv, ULONG cb, U fail = current_write_test->fail_write; - ok(current_write_test->cb == cb, "Expected %d, but got %d on test %d\n", + ok(current_write_test->cb == cb, "Expected %ld, but got %ld on test %d\n", current_write_test->cb, cb, current_stream_test_index); if(!pcbWritten) @@ -2150,7 +2154,6 @@ static void test_saxreader(void) ULONG written; HANDLE file; static const CHAR testXmlA[] = "test.xml"; - static const WCHAR testXmlW[] = {'t','e','s','t','.','x','m','l',0}; IXMLDOMDocument *doc; char seqname[50]; VARIANT_BOOL v; @@ -2168,7 +2171,7 @@ static void test_saxreader(void) } hr = CoCreateInstance(table->clsid, NULL, CLSCTX_INPROC_SERVER, &IID_ISAXXMLReader, (void**)&reader); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); g_reader = reader; if (IsEqualGUID(table->clsid, &CLSID_SAXXMLReader40)) @@ -2183,31 +2186,31 @@ static void test_saxreader(void) !IsEqualGUID(table->clsid, &CLSID_SAXXMLReader60)) { hr = ISAXXMLReader_getContentHandler(reader, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); hr = ISAXXMLReader_getErrorHandler(reader, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); } hr = ISAXXMLReader_getContentHandler(reader, &content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(content == NULL, "Expected %p, got %p\n", NULL, content); hr = ISAXXMLReader_getErrorHandler(reader, &lpErrorHandler); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(lpErrorHandler == NULL, "Expected %p, got %p\n", NULL, lpErrorHandler); hr = ISAXXMLReader_putContentHandler(reader, NULL); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXXMLReader_putContentHandler(reader, &contentHandler); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXXMLReader_putErrorHandler(reader, &errorHandler); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXXMLReader_getContentHandler(reader, &content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(content == &contentHandler, "Expected %p, got %p\n", &contentHandler, content); V_VT(&var) = VT_BSTR; @@ -2220,7 +2223,7 @@ static void test_saxreader(void) test_seq = content_handler_test1; set_expected_seq(test_seq); hr = ISAXXMLReader_parse(reader, var); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok_sequence(sequences, CONTENT_HANDLER_INDEX, test_seq, "content test 1", FALSE); VariantClear(&var); @@ -2236,7 +2239,7 @@ static void test_saxreader(void) set_expected_seq(test_seq); hr = ISAXXMLReader_parse(reader, var); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok_sequence(sequences, CONTENT_HANDLER_INDEX, test_seq, "content test 1: from safe array", FALSE); SafeArrayDestroy(sa); @@ -2244,12 +2247,12 @@ static void test_saxreader(void) V_VT(&var) = VT_UNKNOWN; V_UNKNOWN(&var) = NULL; hr = ISAXXMLReader_parse(reader, var); - ok(hr == E_INVALIDARG, "got %#x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); V_VT(&var) = VT_DISPATCH; V_DISPATCH(&var) = NULL; hr = ISAXXMLReader_parse(reader, var); - ok(hr == E_INVALIDARG, "got %#x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); stream = create_test_stream(testXML, -1); V_VT(&var) = VT_UNKNOWN; @@ -2257,7 +2260,7 @@ static void test_saxreader(void) set_expected_seq(test_seq); hr = ISAXXMLReader_parse(reader, var); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok_sequence(sequences, CONTENT_HANDLER_INDEX, test_seq, "content test 1: from stream", FALSE); IStream_Release(stream); @@ -2275,7 +2278,7 @@ static void test_saxreader(void) set_expected_seq(test_seq); hr = ISAXXMLReader_parse(reader, var); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); if (IsEqualGUID(table->clsid, &CLSID_SAXXMLReader40) || IsEqualGUID(table->clsid, &CLSID_SAXXMLReader60)) @@ -2292,7 +2295,7 @@ static void test_saxreader(void) read_cnt = 0; set_expected_seq(test_seq); hr = ISAXXMLReader_parse(reader, var); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(read_cnt == 7, "read_cnt = %d\n", read_cnt); ok_sequence(sequences, CONTENT_HANDLER_INDEX, test_seq, "Read call test", FALSE); @@ -2307,25 +2310,41 @@ static void test_saxreader(void) set_expected_seq(test_seq); hr = ISAXXMLReader_parse(reader, var); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok_sequence(sequences, CONTENT_HANDLER_INDEX, test_seq, "content test 2", FALSE); VariantClear(&var); /* from file url */ file = CreateFileA(testXmlA, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); - ok(file != INVALID_HANDLE_VALUE, "Could not create file: %u\n", GetLastError()); + ok(file != INVALID_HANDLE_VALUE, "Could not create file: %lu\n", GetLastError()); WriteFile(file, testXML, sizeof(testXML)-1, &written, NULL); CloseHandle(file); + /* crashes on newer versions */ + if (IsEqualGUID(table->clsid, &CLSID_SAXXMLReader) || + IsEqualGUID(table->clsid, &CLSID_SAXXMLReader30)) + { + IVBSAXXMLReader *vb_reader; + + hr = ISAXXMLReader_parseURL(reader, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + + hr = ISAXXMLReader_QueryInterface(reader, &IID_IVBSAXXMLReader, (void **)&vb_reader); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IVBSAXXMLReader_parseURL(vb_reader, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + IVBSAXXMLReader_Release(vb_reader); + } + if (IsEqualGUID(table->clsid, &CLSID_SAXXMLReader40) || IsEqualGUID(table->clsid, &CLSID_SAXXMLReader60)) test_seq = content_handler_test1_alternate; else test_seq = content_handler_test1; set_expected_seq(test_seq); - hr = ISAXXMLReader_parseURL(reader, testXmlW); - EXPECT_HR(hr, S_OK); + hr = ISAXXMLReader_parseURL(reader, L"test.xml"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok_sequence(sequences, CONTENT_HANDLER_INDEX, test_seq, "content test 1: from file url", FALSE); /* error handler */ @@ -2335,8 +2354,8 @@ static void test_saxreader(void) else test_seq = content_handler_testerror; set_expected_seq(test_seq); - hr = ISAXXMLReader_parseURL(reader, testXmlW); - EXPECT_HR(hr, E_FAIL); + hr = ISAXXMLReader_parseURL(reader, L"test.xml"); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok_sequence(sequences, CONTENT_HANDLER_INDEX, test_seq, "content test error", FALSE); /* callback ret values */ @@ -2345,15 +2364,15 @@ static void test_saxreader(void) { test_seq = content_handler_test_callback_rets_alt; set_expected_seq(test_seq); - hr = ISAXXMLReader_parseURL(reader, testXmlW); - EXPECT_HR(hr, S_OK); + hr = ISAXXMLReader_parseURL(reader, L"test.xml"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); } else { test_seq = content_handler_test_callback_rets; set_expected_seq(test_seq); - hr = ISAXXMLReader_parseURL(reader, testXmlW); - EXPECT_HR(hr, S_FALSE); + hr = ISAXXMLReader_parseURL(reader, L"test.xml"); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); } ok_sequence(sequences, CONTENT_HANDLER_INDEX, test_seq, "content callback ret values", FALSE); @@ -2362,11 +2381,11 @@ static void test_saxreader(void) /* parse from IXMLDOMDocument */ hr = CoCreateInstance(&CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument, (void**)&doc); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); str = SysAllocString(szSimpleXML); hr = IXMLDOMDocument_loadXML(doc, str, &v); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); SysFreeString(str); V_VT(&var) = VT_UNKNOWN; @@ -2380,7 +2399,7 @@ static void test_saxreader(void) set_expected_seq(test_seq); hr = ISAXXMLReader_parse(reader, var); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok_sequence(sequences, CONTENT_HANDLER_INDEX, test_seq, "parse from IXMLDOMDocument", FALSE); IXMLDOMDocument_Release(doc); @@ -2397,7 +2416,7 @@ static void test_saxreader(void) V_VT(&var) = VT_BSTR; V_BSTR(&var) = _bstr_(xmlspace_attr); hr = ISAXXMLReader_parse(reader, var); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); if (IsEqualGUID(table->clsid, &CLSID_SAXXMLReader40) || IsEqualGUID(table->clsid, &CLSID_SAXXMLReader60)) @@ -2409,7 +2428,7 @@ static void test_saxreader(void) /* switch off 'namespaces' feature */ hr = ISAXXMLReader_putFeature(reader, _bstr_("http://xml.org/sax/features/namespaces"), VARIANT_FALSE); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); stream = create_test_stream(test_attributes, -1); V_VT(&var) = VT_UNKNOWN; @@ -2425,15 +2444,15 @@ static void test_saxreader(void) set_expected_seq(test_seq); hr = ISAXXMLReader_parse(reader, var); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok_sequence(sequences, CONTENT_HANDLER_INDEX, test_seq, "content test attributes", TRUE); IStream_Release(stream); hr = ISAXXMLReader_putFeature(reader, _bstr_("http://xml.org/sax/features/namespaces"), VARIANT_TRUE); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* switch off 'namespace-prefixes' feature */ hr = ISAXXMLReader_putFeature(reader, _bstr_("http://xml.org/sax/features/namespace-prefixes"), VARIANT_FALSE); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); stream = create_test_stream(test_attributes, -1); V_VT(&var) = VT_UNKNOWN; @@ -2449,12 +2468,12 @@ static void test_saxreader(void) set_expected_seq(test_seq); hr = ISAXXMLReader_parse(reader, var); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok_sequence(sequences, CONTENT_HANDLER_INDEX, test_seq, "content test attributes", FALSE); IStream_Release(stream); hr = ISAXXMLReader_putFeature(reader, _bstr_("http://xml.org/sax/features/namespace-prefixes"), VARIANT_TRUE); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* attribute normalization */ stream = create_test_stream(attribute_normalize, -1); @@ -2471,17 +2490,17 @@ static void test_saxreader(void) set_expected_seq(test_seq); hr = ISAXXMLReader_parse(reader, var); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok_sequence(sequences, CONTENT_HANDLER_INDEX, test_seq, "attribute value normalization", TRUE); IStream_Release(stream); resolver = (void*)0xdeadbeef; hr = ISAXXMLReader_getEntityResolver(reader, &resolver); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(resolver == NULL, "got %p\n", resolver); hr = ISAXXMLReader_putEntityResolver(reader, NULL); - ok(hr == S_OK || broken(hr == E_FAIL), "got 0x%08x\n", hr); + ok(hr == S_OK || broken(hr == E_FAIL), "Unexpected hr %#lx.\n", hr); /* CDATA sections */ init_saxlexicalhandler(&lexicalhandler, S_OK); @@ -2489,7 +2508,7 @@ static void test_saxreader(void) V_VT(&var) = VT_UNKNOWN; V_UNKNOWN(&var) = (IUnknown*)&lexicalhandler.ISAXLexicalHandler_iface; hr = ISAXXMLReader_putProperty(reader, _bstr_("http://xml.org/sax/properties/lexical-handler"), var); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); stream = create_test_stream(test_cdata_xml, -1); V_VT(&var) = VT_UNKNOWN; @@ -2503,7 +2522,7 @@ static void test_saxreader(void) set_expected_seq(test_seq); hr = ISAXXMLReader_parse(reader, var); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); sprintf(seqname, "%s: cdata test", table->name); ok_sequence(sequences, CONTENT_HANDLER_INDEX, test_seq, seqname, TRUE); @@ -2522,7 +2541,7 @@ static void test_saxreader(void) set_expected_seq(test_seq); hr = ISAXXMLReader_parse(reader, var); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); sprintf(seqname, "%s: cdata test 2", table->name); ok_sequence(sequences, CONTENT_HANDLER_INDEX, test_seq, seqname, TRUE); @@ -2541,7 +2560,7 @@ static void test_saxreader(void) set_expected_seq(test_seq); hr = ISAXXMLReader_parse(reader, var); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); sprintf(seqname, "%s: cdata test 3", table->name); ok_sequence(sequences, CONTENT_HANDLER_INDEX, test_seq, seqname, TRUE); @@ -2576,10 +2595,10 @@ static void test_saxreader_properties(void) hr = CoCreateInstance(&CLSID_SAXXMLReader, NULL, CLSCTX_INPROC_SERVER, &IID_ISAXXMLReader, (void**)&reader); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXXMLReader_getProperty(reader, _bstr_("http://xml.org/sax/properties/lexical-handler"), NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); while (ptr->prop_name) { @@ -2592,7 +2611,7 @@ static void test_saxreader_properties(void) V_VT(&v) = VT_EMPTY; V_UNKNOWN(&v) = (IUnknown*)0xdeadbeef; hr = ISAXXMLReader_getProperty(reader, _bstr_(ptr->prop_name), &v); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&v) == VT_UNKNOWN, "got %d\n", V_VT(&v)); ok(V_UNKNOWN(&v) == NULL, "got %p\n", V_UNKNOWN(&v)); @@ -2601,7 +2620,7 @@ static void test_saxreader_properties(void) V_UNKNOWN(&v) = ptr->iface; ref = get_refcount(ptr->iface); hr = ISAXXMLReader_putProperty(reader, _bstr_(ptr->prop_name), v); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(ref < get_refcount(ptr->iface), "expected inreased refcount\n"); /* VT_DISPATCH */ @@ -2609,8 +2628,8 @@ static void test_saxreader_properties(void) V_UNKNOWN(&v) = ptr->iface; ref = get_refcount(ptr->iface); hr = ISAXXMLReader_putProperty(reader, _bstr_(ptr->prop_name), v); - EXPECT_HR(hr, S_OK); - ok(ref == get_refcount(ptr->iface), "got wrong refcount %d, expected %d\n", get_refcount(ptr->iface), ref); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(ref == get_refcount(ptr->iface), "got wrong refcount %ld, expected %ld\n", get_refcount(ptr->iface), ref); /* VT_VARIANT|VT_BYREF with VT_UNKNOWN in referenced variant */ V_VT(&varref) = VT_UNKNOWN; @@ -2620,8 +2639,8 @@ static void test_saxreader_properties(void) V_VARIANTREF(&v) = &varref; ref = get_refcount(ptr->iface); hr = ISAXXMLReader_putProperty(reader, _bstr_(ptr->prop_name), v); - EXPECT_HR(hr, S_OK); - ok(ref == get_refcount(ptr->iface), "got wrong refcount %d, expected %d\n", get_refcount(ptr->iface), ref); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(ref == get_refcount(ptr->iface), "got wrong refcount %ld, expected %ld\n", get_refcount(ptr->iface), ref); /* VT_VARIANT|VT_BYREF with VT_DISPATCH in referenced variant */ V_VT(&varref) = VT_DISPATCH; @@ -2631,15 +2650,15 @@ static void test_saxreader_properties(void) V_VARIANTREF(&v) = &varref; ref = get_refcount(ptr->iface); hr = ISAXXMLReader_putProperty(reader, _bstr_(ptr->prop_name), v); - EXPECT_HR(hr, S_OK); - ok(ref == get_refcount(ptr->iface), "got wrong refcount %d, expected %d\n", get_refcount(ptr->iface), ref); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(ref == get_refcount(ptr->iface), "got wrong refcount %ld, expected %ld\n", get_refcount(ptr->iface), ref); V_VT(&v) = VT_EMPTY; V_UNKNOWN(&v) = (IUnknown*)0xdeadbeef; ref = get_refcount(ptr->iface); hr = ISAXXMLReader_getProperty(reader, _bstr_(ptr->prop_name), &v); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&v) == VT_UNKNOWN, "got %d\n", V_VT(&v)); ok(V_UNKNOWN(&v) == ptr->iface, "got %p\n", V_UNKNOWN(&v)); ok(ref < get_refcount(ptr->iface), "expected inreased refcount\n"); @@ -2648,30 +2667,30 @@ static void test_saxreader_properties(void) V_VT(&v) = VT_EMPTY; V_UNKNOWN(&v) = (IUnknown*)0xdeadbeef; hr = ISAXXMLReader_putProperty(reader, _bstr_(ptr->prop_name), v); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&v) = VT_EMPTY; V_UNKNOWN(&v) = (IUnknown*)0xdeadbeef; hr = ISAXXMLReader_getProperty(reader, _bstr_(ptr->prop_name), &v); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&v) == VT_UNKNOWN, "got %d\n", V_VT(&v)); ok(V_UNKNOWN(&v) == NULL, "got %p\n", V_UNKNOWN(&v)); V_VT(&v) = VT_UNKNOWN; V_UNKNOWN(&v) = ptr->iface; hr = ISAXXMLReader_putProperty(reader, _bstr_(ptr->prop_name), v); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* only VT_EMPTY seems to be valid to reset property */ V_VT(&v) = VT_I4; V_UNKNOWN(&v) = (IUnknown*)0xdeadbeef; hr = ISAXXMLReader_putProperty(reader, _bstr_(ptr->prop_name), v); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); V_VT(&v) = VT_EMPTY; V_UNKNOWN(&v) = (IUnknown*)0xdeadbeef; hr = ISAXXMLReader_getProperty(reader, _bstr_(ptr->prop_name), &v); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&v) == VT_UNKNOWN, "got %d\n", V_VT(&v)); ok(V_UNKNOWN(&v) == ptr->iface, "got %p\n", V_UNKNOWN(&v)); VariantClear(&v); @@ -2679,12 +2698,12 @@ static void test_saxreader_properties(void) V_VT(&v) = VT_UNKNOWN; V_UNKNOWN(&v) = NULL; hr = ISAXXMLReader_putProperty(reader, _bstr_(ptr->prop_name), v); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&v) = VT_EMPTY; V_UNKNOWN(&v) = (IUnknown*)0xdeadbeef; hr = ISAXXMLReader_getProperty(reader, _bstr_(ptr->prop_name), &v); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&v) == VT_UNKNOWN, "got %d\n", V_VT(&v)); ok(V_UNKNOWN(&v) == NULL, "got %p\n", V_UNKNOWN(&v)); @@ -2692,7 +2711,7 @@ static void test_saxreader_properties(void) V_VT(&v) = VT_UNKNOWN; V_UNKNOWN(&v) = ptr->iface; hr = ISAXXMLReader_putProperty(reader, _bstr_(ptr->prop_name), v); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); init_saxlexicalhandler(&lexicalhandler, E_NOINTERFACE); init_saxdeclhandler(&declhandler, E_NOINTERFACE); @@ -2702,13 +2721,13 @@ static void test_saxreader_properties(void) EXPECT_REF(ptr->iface, 1); ref = get_refcount(ptr->iface); hr = ISAXXMLReader_putProperty(reader, _bstr_(ptr->prop_name), v); - EXPECT_HR(hr, E_NOINTERFACE); + ok(hr == E_NOINTERFACE, "Unexpected hr %#lx.\n", hr); EXPECT_REF(ptr->iface, 1); V_VT(&v) = VT_EMPTY; V_UNKNOWN(&v) = (IUnknown*)0xdeadbeef; hr = ISAXXMLReader_getProperty(reader, _bstr_(ptr->prop_name), &v); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&v) == VT_UNKNOWN, "got %d\n", V_VT(&v)); ok(V_UNKNOWN(&v) != NULL, "got %p\n", V_UNKNOWN(&v)); @@ -2723,13 +2742,13 @@ static void test_saxreader_properties(void) hr = CoCreateInstance(&CLSID_SAXXMLReader40, NULL, CLSCTX_INPROC_SERVER, &IID_ISAXXMLReader, (void**)&reader); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* xmldecl-version property */ V_VT(&v) = VT_EMPTY; V_BSTR(&v) = (void*)0xdeadbeef; hr = ISAXXMLReader_getProperty(reader, _bstr_("xmldecl-version"), &v); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&v) == VT_BSTR, "got %d\n", V_VT(&v)); ok(V_BSTR(&v) == NULL, "got %s\n", wine_dbgstr_w(V_BSTR(&v))); @@ -2737,12 +2756,12 @@ static void test_saxreader_properties(void) V_VT(&v) = VT_BSTR; V_BSTR(&v) = _bstr_(""); hr = ISAXXMLReader_parse(reader, v); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&v) = VT_EMPTY; V_BSTR(&v) = (void*)0xdeadbeef; hr = ISAXXMLReader_getProperty(reader, _bstr_("xmldecl-version"), &v); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&v) == VT_BSTR, "got %d\n", V_VT(&v)); ok(V_BSTR(&v) == NULL, "got %s\n", wine_dbgstr_w(V_BSTR(&v))); @@ -2750,21 +2769,21 @@ static void test_saxreader_properties(void) V_VT(&v) = VT_BSTR; V_BSTR(&v) = _bstr_(""); hr = ISAXXMLReader_parse(reader, v); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* VT_BSTR|VT_BYREF input type */ str = _bstr_(""); V_VT(&v) = VT_BSTR|VT_BYREF; V_BSTRREF(&v) = &str; hr = ISAXXMLReader_parse(reader, v); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&v) = VT_EMPTY; V_BSTR(&v) = (void*)0xdeadbeef; hr = ISAXXMLReader_getProperty(reader, _bstr_("xmldecl-version"), &v); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&v) == VT_BSTR, "got %d\n", V_VT(&v)); - ok(!lstrcmpW(V_BSTR(&v), _bstr_("1.0")), "got %s\n", wine_dbgstr_w(V_BSTR(&v))); + ok(!lstrcmpW(V_BSTR(&v), L"1.0"), "got %s\n", wine_dbgstr_w(V_BSTR(&v))); VariantClear(&v); ISAXXMLReader_Release(reader); @@ -2816,28 +2835,28 @@ static void test_saxreader_features(void) { value = VARIANT_TRUE; hr = ISAXXMLReader_getFeature(reader, _bstr_("exhaustive-errors"), &value); - ok(hr == S_OK, "Failed to get feature value, hr %#x.\n", hr); + ok(hr == S_OK, "Failed to get feature value, hr %#lx.\n", hr); ok(value == VARIANT_FALSE, "Unexpected default feature value.\n"); hr = ISAXXMLReader_putFeature(reader, _bstr_("exhaustive-errors"), VARIANT_FALSE); - ok(hr == S_OK, "Failed to put feature value, hr %#x.\n", hr); + ok(hr == S_OK, "Failed to put feature value, hr %#lx.\n", hr); value = VARIANT_TRUE; hr = ISAXXMLReader_getFeature(reader, _bstr_("schema-validation"), &value); - ok(hr == S_OK, "Failed to get feature value, hr %#x.\n", hr); + ok(hr == S_OK, "Failed to get feature value, hr %#lx.\n", hr); ok(value == VARIANT_FALSE, "Unexpected default feature value.\n"); hr = ISAXXMLReader_putFeature(reader, _bstr_("exhaustive-errors"), VARIANT_FALSE); - ok(hr == S_OK, "Failed to put feature value, hr %#x.\n", hr); + ok(hr == S_OK, "Failed to put feature value, hr %#lx.\n", hr); } else { value = 123; hr = ISAXXMLReader_getFeature(reader, _bstr_("exhaustive-errors"), &value); - ok(hr == E_INVALIDARG, "Failed to get feature value, hr %#x.\n", hr); + ok(hr == E_INVALIDARG, "Failed to get feature value, hr %#lx.\n", hr); ok(value == 123, "Unexpected value %d.\n", value); value = 123; hr = ISAXXMLReader_getFeature(reader, _bstr_("schema-validation"), &value); - ok(hr == E_INVALIDARG, "Failed to get feature value, hr %#x.\n", hr); + ok(hr == E_INVALIDARG, "Failed to get feature value, hr %#lx.\n", hr); ok(value == 123, "Unexpected value %d.\n", value); } @@ -2846,30 +2865,30 @@ static void test_saxreader_features(void) { value = 0xc; hr = ISAXXMLReader_getFeature(reader, _bstr_(*name), &value); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(entry->value == value, "%s: got wrong default value %x, expected %x\n", entry->clsid, value, entry->value); value = 0xc; hr = ISAXXMLReader_putFeature(reader, _bstr_(*name), value); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); value = 0xd; hr = ISAXXMLReader_getFeature(reader, _bstr_(*name), &value); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(entry->value2 == value, "%s: got wrong value %x, expected %x\n", entry->clsid, value, entry->value2); hr = ISAXXMLReader_putFeature(reader, _bstr_(*name), VARIANT_FALSE); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); value = 0xd; hr = ISAXXMLReader_getFeature(reader, _bstr_(*name), &value); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(value == VARIANT_FALSE, "%s: got wrong value %x, expected VARIANT_FALSE\n", entry->clsid, value); hr = ISAXXMLReader_putFeature(reader, _bstr_(*name), VARIANT_TRUE); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); value = 0xd; hr = ISAXXMLReader_getFeature(reader, _bstr_(*name), &value); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(value == VARIANT_TRUE, "%s: got wrong value %x, expected VARIANT_TRUE\n", entry->clsid, value); name++; @@ -2905,7 +2924,6 @@ static const struct enc_test_entry_t encoding_test_data[] = { static void test_saxreader_encoding(void) { const struct enc_test_entry_t *entry = encoding_test_data; - static const WCHAR testXmlW[] = {'t','e','s','t','.','x','m','l',0}; static const CHAR testXmlA[] = "test.xml"; while (entry->guid) @@ -2925,13 +2943,13 @@ static void test_saxreader_encoding(void) } file = CreateFileA(testXmlA, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); - ok(file != INVALID_HANDLE_VALUE, "Could not create file: %u\n", GetLastError()); + ok(file != INVALID_HANDLE_VALUE, "Could not create file: %lu\n", GetLastError()); WriteFile(file, UTF8BOMTest, sizeof(UTF8BOMTest)-1, &written, NULL); CloseHandle(file); - hr = ISAXXMLReader_parseURL(reader, testXmlW); + hr = ISAXXMLReader_parseURL(reader, L"test.xml"); todo_wine_if(entry->todo) - ok(hr == entry->hr, "Expected 0x%08x, got 0x%08x. CLSID %s\n", entry->hr, hr, entry->clsid); + ok(hr == entry->hr, "Expected %#lx, got %#lx. CLSID %s\n", entry->hr, hr, entry->clsid); DeleteFileA(testXmlA); @@ -2939,7 +2957,7 @@ static void test_saxreader_encoding(void) V_VT(&input) = VT_BSTR; V_BSTR(&input) = _bstr_(""); hr = ISAXXMLReader_parse(reader, input); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ISAXXMLReader_Release(reader); @@ -2970,7 +2988,7 @@ static void test_mxwriter_handlers(void) hr = CoCreateInstance(&CLSID_MXXMLWriter, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(writer, 1); @@ -2981,13 +2999,13 @@ static void test_mxwriter_handlers(void) /* handler from IMXWriter */ hr = IMXWriter_QueryInterface(writer, riids[i], (void**)&handler); - ok(hr == S_OK, "%s, expected S_OK, got %08x\n", wine_dbgstr_guid(riids[i]), hr); + ok(hr == S_OK, "%s, unexpected hr %#lx.\n", wine_dbgstr_guid(riids[i]), hr); EXPECT_REF(writer, 2); EXPECT_REF(handler, 2); /* IMXWriter from a handler */ hr = IUnknown_QueryInterface(handler, &IID_IMXWriter, (void**)&writer2); - ok(hr == S_OK, "%s, expected S_OK, got %08x\n", wine_dbgstr_guid(riids[i]), hr); + ok(hr == S_OK, "%s, unexpected hr %#lx.\n", wine_dbgstr_guid(riids[i]), hr); ok(writer2 == writer, "got %p, expected %p\n", writer2, writer); EXPECT_REF(writer, 3); IMXWriter_Release(writer2); @@ -3055,36 +3073,36 @@ static void test_mxwriter_default_properties(const struct mxwriter_props_t *tabl hr = CoCreateInstance(table->clsid, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); b = !table->bom; hr = IMXWriter_get_byteOrderMark(writer, &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(table->bom == b, "test %d: got BOM %d, expected %d\n", i, b, table->bom); b = !table->disable_escape; hr = IMXWriter_get_disableOutputEscaping(writer, &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(table->disable_escape == b, "test %d: got disable escape %d, expected %d\n", i, b, table->disable_escape); b = !table->indent; hr = IMXWriter_get_indent(writer, &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(table->indent == b, "test %d: got indent %d, expected %d\n", i, b, table->indent); b = !table->omitdecl; hr = IMXWriter_get_omitXMLDeclaration(writer, &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(table->omitdecl == b, "test %d: got omitdecl %d, expected %d\n", i, b, table->omitdecl); b = !table->standalone; hr = IMXWriter_get_standalone(writer, &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(table->standalone == b, "test %d: got standalone %d, expected %d\n", i, b, table->standalone); hr = IMXWriter_get_encoding(writer, &encoding); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!lstrcmpW(encoding, _bstr_(table->encoding)), "test %d: got encoding %s, expected %s\n", i, wine_dbgstr_w(encoding), table->encoding); SysFreeString(encoding); @@ -3098,8 +3116,6 @@ static void test_mxwriter_default_properties(const struct mxwriter_props_t *tabl static void test_mxwriter_properties(void) { - static const WCHAR utf16W[] = {'U','T','F','-','1','6',0}; - static const WCHAR testW[] = {'t','e','s','t',0}; ISAXContentHandler *content; IMXWriter *writer; VARIANT_BOOL b; @@ -3111,136 +3127,136 @@ static void test_mxwriter_properties(void) hr = CoCreateInstance(&CLSID_MXXMLWriter, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_get_disableOutputEscaping(writer, NULL); - ok(hr == E_POINTER, "got %08x\n", hr); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_get_byteOrderMark(writer, NULL); - ok(hr == E_POINTER, "got %08x\n", hr); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_get_indent(writer, NULL); - ok(hr == E_POINTER, "got %08x\n", hr); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_get_omitXMLDeclaration(writer, NULL); - ok(hr == E_POINTER, "got %08x\n", hr); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_get_standalone(writer, NULL); - ok(hr == E_POINTER, "got %08x\n", hr); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); /* set and check */ hr = IMXWriter_put_standalone(writer, VARIANT_TRUE); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); b = VARIANT_FALSE; hr = IMXWriter_get_standalone(writer, &b); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "got %d\n", b); hr = IMXWriter_get_encoding(writer, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); /* UTF-16 is a default setting apparently */ str = (void*)0xdeadbeef; hr = IMXWriter_get_encoding(writer, &str); - EXPECT_HR(hr, S_OK); - ok(lstrcmpW(str, utf16W) == 0, "expected empty string, got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"UTF-16"), "Unexpected string %s.\n", wine_dbgstr_w(str)); str2 = (void*)0xdeadbeef; hr = IMXWriter_get_encoding(writer, &str2); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(str != str2, "expected newly allocated, got same %p\n", str); SysFreeString(str2); SysFreeString(str); /* put empty string */ - str = SysAllocString(emptyW); + str = SysAllocString(L""); hr = IMXWriter_put_encoding(writer, str); - ok(hr == E_INVALIDARG, "got %08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); SysFreeString(str); str = (void*)0xdeadbeef; hr = IMXWriter_get_encoding(writer, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(str, _bstr_("UTF-16")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"UTF-16"), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); /* invalid encoding name */ - str = SysAllocString(testW); + str = SysAllocString(L"test"); hr = IMXWriter_put_encoding(writer, str); - ok(hr == E_INVALIDARG, "got %08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); SysFreeString(str); - /* test case sensivity */ + /* test case sensitivity */ hr = IMXWriter_put_encoding(writer, _bstr_("utf-8")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); str = (void*)0xdeadbeef; hr = IMXWriter_get_encoding(writer, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(str, _bstr_("utf-8")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"utf-8"), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); hr = IMXWriter_put_encoding(writer, _bstr_("uTf-16")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); str = (void*)0xdeadbeef; hr = IMXWriter_get_encoding(writer, &str); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(str, _bstr_("uTf-16")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"uTf-16"), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); /* how it affects document creation */ hr = IMXWriter_QueryInterface(writer, &IID_ISAXContentHandler, (void**)&content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_startDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_endDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_("\r\n"), + ok(!lstrcmpW(L"\r\n", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); ISAXContentHandler_Release(content); hr = IMXWriter_get_version(writer, NULL); - ok(hr == E_POINTER, "got %08x\n", hr); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); /* default version is 'surprisingly' 1.0 */ hr = IMXWriter_get_version(writer, &str); - ok(hr == S_OK, "got %08x\n", hr); - ok(!lstrcmpW(str, _bstr_("1.0")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"1.0"), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); /* store version string as is */ hr = IMXWriter_put_version(writer, NULL); - ok(hr == E_INVALIDARG, "got %08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_put_version(writer, _bstr_("1.0")); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_put_version(writer, _bstr_("")); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_get_version(writer, &str); - ok(hr == S_OK, "got %08x\n", hr); - ok(!lstrcmpW(str, _bstr_("")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L""), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); hr = IMXWriter_put_version(writer, _bstr_("a.b")); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_get_version(writer, &str); - ok(hr == S_OK, "got %08x\n", hr); - ok(!lstrcmpW(str, _bstr_("a.b")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"a.b"), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); hr = IMXWriter_put_version(writer, _bstr_("2.0")); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_get_version(writer, &str); - ok(hr == S_OK, "got %08x\n", hr); - ok(!lstrcmpW(str, _bstr_("2.0")), "got %s\n", wine_dbgstr_w(str)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"2.0"), "got %s\n", wine_dbgstr_w(str)); SysFreeString(str); IMXWriter_Release(writer); @@ -3262,185 +3278,185 @@ static void test_mxwriter_flush(void) hr = CoCreateInstance(&CLSID_MXXMLWriter, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(stream, 1); /* detach when nothing was attached */ V_VT(&dest) = VT_EMPTY; hr = IMXWriter_put_output(writer, dest); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* attach stream */ V_VT(&dest) = VT_UNKNOWN; V_UNKNOWN(&dest) = (IUnknown*)stream; hr = IMXWriter_put_output(writer, dest); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine EXPECT_REF(stream, 3); /* detach setting VT_EMPTY destination */ V_VT(&dest) = VT_EMPTY; hr = IMXWriter_put_output(writer, dest); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(stream, 1); V_VT(&dest) = VT_UNKNOWN; V_UNKNOWN(&dest) = (IUnknown*)stream; hr = IMXWriter_put_output(writer, dest); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* flush() doesn't detach a stream */ hr = IMXWriter_flush(writer); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine EXPECT_REF(stream, 3); pos.QuadPart = 0; hr = IStream_Seek(stream, pos, STREAM_SEEK_CUR, &pos2); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(pos2.QuadPart == 0, "expected stream beginning\n"); hr = IMXWriter_QueryInterface(writer, &IID_ISAXContentHandler, (void**)&content); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_startDocument(content); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); pos.QuadPart = 0; hr = IStream_Seek(stream, pos, STREAM_SEEK_CUR, &pos2); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(pos2.QuadPart != 0, "expected stream beginning\n"); /* already started */ hr = ISAXContentHandler_startDocument(content); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_endDocument(content); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* flushed on endDocument() */ pos.QuadPart = 0; hr = IStream_Seek(stream, pos, STREAM_SEEK_CUR, &pos2); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(pos2.QuadPart != 0, "expected stream position moved\n"); IStream_Release(stream); /* auto-flush feature */ hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(stream, 1); V_VT(&dest) = VT_UNKNOWN; V_UNKNOWN(&dest) = (IUnknown*)stream; hr = IMXWriter_put_output(writer, dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_put_byteOrderMark(writer, VARIANT_FALSE); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_put_omitXMLDeclaration(writer, VARIANT_TRUE); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_startDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - hr = ISAXContentHandler_startElement(content, emptyW, 0, emptyW, 0, _bstr_("a"), -1, NULL); - EXPECT_HR(hr, S_OK); + hr = ISAXContentHandler_startElement(content, L"", 0, L"", 0, _bstr_("a"), -1, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* internal buffer is flushed automatically on certain threshold */ pos.QuadPart = 0; pos2.QuadPart = 1; hr = IStream_Seek(stream, pos, STREAM_SEEK_CUR, &pos2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(pos2.QuadPart == 0, "expected stream beginning\n"); len = 2048; - buff = heap_alloc(len + 1); + buff = malloc(len + 1); memset(buff, 'A', len); buff[len] = 0; hr = ISAXContentHandler_characters(content, _bstr_(buff), len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); pos.QuadPart = 0; pos2.QuadPart = 0; hr = IStream_Seek(stream, pos, STREAM_SEEK_CUR, &pos2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(pos2.QuadPart != 0, "unexpected stream beginning\n"); hr = IMXWriter_get_output(writer, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); ref = get_refcount(stream); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_UNKNOWN, "got vt type %d\n", V_VT(&dest)); ok(V_UNKNOWN(&dest) == (IUnknown*)stream, "got pointer %p\n", V_UNKNOWN(&dest)); ok(ref+1 == get_refcount(stream), "expected increased refcount\n"); VariantClear(&dest); hr = ISAXContentHandler_endDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IStream_Release(stream); /* test char count lower than threshold */ hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); EXPECT_REF(stream, 1); hr = ISAXContentHandler_startDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - hr = ISAXContentHandler_startElement(content, emptyW, 0, emptyW, 0, _bstr_("a"), -1, NULL); - EXPECT_HR(hr, S_OK); + hr = ISAXContentHandler_startElement(content, L"", 0, L"", 0, _bstr_("a"), -1, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); pos.QuadPart = 0; pos2.QuadPart = 1; hr = IStream_Seek(stream, pos, STREAM_SEEK_CUR, &pos2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(pos2.QuadPart == 0, "expected stream beginning\n"); memset(buff, 'A', len); buff[len] = 0; hr = ISAXContentHandler_characters(content, _bstr_(buff), len - 8); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); pos.QuadPart = 0; pos2.QuadPart = 1; hr = IStream_Seek(stream, pos, STREAM_SEEK_CUR, &pos2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(pos2.QuadPart == 0, "expected stream beginning\n"); hr = ISAXContentHandler_endDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* test auto-flush function when stream is not set */ V_VT(&dest) = VT_EMPTY; hr = IMXWriter_put_output(writer, dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_startDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - hr = ISAXContentHandler_startElement(content, emptyW, 0, emptyW, 0, _bstr_("a"), -1, NULL); - EXPECT_HR(hr, S_OK); + hr = ISAXContentHandler_startElement(content, L"", 0, L"", 0, _bstr_("a"), -1, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); memset(buff, 'A', len); buff[len] = 0; hr = ISAXContentHandler_characters(content, _bstr_(buff), len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len += strlen(""); ok(SysStringLen(V_BSTR(&dest)) == len, "got len=%d, expected %d\n", SysStringLen(V_BSTR(&dest)), len); VariantClear(&dest); - heap_free(buff); + free(buff); ISAXContentHandler_Release(content); IStream_Release(stream); IMXWriter_Release(writer); @@ -3456,32 +3472,32 @@ static void test_mxwriter_startenddocument(void) hr = CoCreateInstance(&CLSID_MXXMLWriter, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_ISAXContentHandler, (void**)&content); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_startDocument(content); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_endDocument(content); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_("\r\n"), V_BSTR(&dest)), + ok(!lstrcmpW(L"\r\n", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); /* now try another startDocument */ hr = ISAXContentHandler_startDocument(content); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* and get duplicated prolog */ V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); ok(!lstrcmpW(_bstr_("\r\n" "\r\n"), V_BSTR(&dest)), @@ -3494,25 +3510,25 @@ static void test_mxwriter_startenddocument(void) /* now with omitted declaration */ hr = CoCreateInstance(&CLSID_MXXMLWriter, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_ISAXContentHandler, (void**)&content); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_put_omitXMLDeclaration(writer, VARIANT_TRUE); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_startDocument(content); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_endDocument(content); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_(""), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); + ok(!lstrcmpW(L"", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); ISAXContentHandler_Release(content); @@ -3687,21 +3703,21 @@ static void test_mxwriter_startendelement_batch(const struct writer_startendelem hr = CoCreateInstance(table->clsid, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_ISAXContentHandler, (void**)&content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_put_omitXMLDeclaration(writer, VARIANT_TRUE); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_startDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); if (table->type & DisableEscaping) { hr = IMXWriter_put_disableOutputEscaping(writer, VARIANT_TRUE); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); } if (table->type & StartElement) @@ -3709,7 +3725,7 @@ static void test_mxwriter_startendelement_batch(const struct writer_startendelem hr = ISAXContentHandler_startElement(content, _bstr_(table->uri), table->uri ? strlen(table->uri) : 0, _bstr_(table->local_name), table->local_name ? strlen(table->local_name) : 0, _bstr_(table->qname), table->qname ? strlen(table->qname) : 0, table->attr); - ok(hr == table->hr, "test %d: got 0x%08x, expected 0x%08x\n", i, hr, table->hr); + ok(hr == table->hr, "test %d: got %#lx, expected %#lx\n", i, hr, table->hr); } if (table->type & EndElement) @@ -3717,7 +3733,7 @@ static void test_mxwriter_startendelement_batch(const struct writer_startendelem hr = ISAXContentHandler_endElement(content, _bstr_(table->uri), table->uri ? strlen(table->uri) : 0, _bstr_(table->local_name), table->local_name ? strlen(table->local_name) : 0, _bstr_(table->qname), table->qname ? strlen(table->qname) : 0); - ok(hr == table->hr, "test %d: got 0x%08x, expected 0x%08x\n", i, hr, table->hr); + ok(hr == table->hr, "test %d: got %#lx, expected %#lx\n", i, hr, table->hr); } /* test output */ @@ -3727,7 +3743,7 @@ static void test_mxwriter_startendelement_batch(const struct writer_startendelem V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); ok(!lstrcmpW(_bstr_(table->output), V_BSTR(&dest)), "test %d: got wrong content %s, expected %s\n", i, wine_dbgstr_w(V_BSTR(&dest)), table->output); @@ -3788,24 +3804,24 @@ static void test_mxwriter_startendelement_batch2(const struct writer_startendele hr = CoCreateInstance(table->clsid, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_ISAXContentHandler, (void**)&content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_put_omitXMLDeclaration(writer, VARIANT_TRUE); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_startDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_startElement(content, _bstr_(""), 0, _bstr_(""), 0, _bstr_(table->qnamestart), table->qnamestart_len, NULL); - ok(hr == table->hr, "test %d: got 0x%08x, expected 0x%08x\n", i, hr, table->hr); + ok(hr == table->hr, "test %d: got %#lx, expected %#lx\n", i, hr, table->hr); hr = ISAXContentHandler_endElement(content, _bstr_(""), 0, _bstr_(""), 0, _bstr_(table->qnameend), table->qnameend_len); - ok(hr == table->hr, "test %d: got 0x%08x, expected 0x%08x\n", i, hr, table->hr); + ok(hr == table->hr, "test %d: got %#lx, expected %#lx\n", i, hr, table->hr); /* test output */ if (hr == S_OK) @@ -3814,7 +3830,7 @@ static void test_mxwriter_startendelement_batch2(const struct writer_startendele V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); ok(!lstrcmpW(_bstr_(table->output), V_BSTR(&dest)), "test %d: got wrong content %s, expected %s\n", i, wine_dbgstr_w(V_BSTR(&dest)), table->output); @@ -3835,8 +3851,10 @@ static void test_mxwriter_startendelement_batch2(const struct writer_startendele static void test_mxwriter_startendelement(void) { ISAXContentHandler *content; + IVBSAXContentHandler *vb_content; IMXWriter *writer; VARIANT dest; + BSTR bstr_null = NULL, bstr_empty, bstr_a, bstr_b, bstr_ab; HRESULT hr; test_mxwriter_startendelement_batch(writer_startendelement); @@ -3844,110 +3862,187 @@ static void test_mxwriter_startendelement(void) hr = CoCreateInstance(&CLSID_MXXMLWriter, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - - hr = IMXWriter_QueryInterface(writer, &IID_ISAXContentHandler, (void**)&content); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_put_omitXMLDeclaration(writer, VARIANT_TRUE); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IMXWriter_QueryInterface(writer, &IID_IVBSAXContentHandler, (void**)&vb_content); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IVBSAXContentHandler_startDocument(vb_content); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + bstr_empty = SysAllocString(L""); + bstr_a = SysAllocString(L"a"); + bstr_b = SysAllocString(L"b"); + bstr_ab = SysAllocString(L"a:b"); + + hr = IVBSAXContentHandler_startElement(vb_content, &bstr_null, &bstr_empty, &bstr_b, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + + hr = IVBSAXContentHandler_startElement(vb_content, &bstr_empty, &bstr_b, &bstr_empty, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + V_VT(&dest) = VT_EMPTY; + hr = IMXWriter_get_output(writer, &dest); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); + ok(!lstrcmpW(L"<>", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); + VariantClear(&dest); + + hr = IVBSAXContentHandler_startElement(vb_content, &bstr_empty, &bstr_empty, &bstr_b, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + V_VT(&dest) = VT_EMPTY; + hr = IMXWriter_get_output(writer, &dest); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); + ok(!lstrcmpW(L"<>", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); + VariantClear(&dest); + + hr = IVBSAXContentHandler_endElement(vb_content, &bstr_null, &bstr_null, &bstr_b); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + + hr = IVBSAXContentHandler_endElement(vb_content, &bstr_null, &bstr_a, &bstr_b); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + + hr = IVBSAXContentHandler_endElement(vb_content, &bstr_a, &bstr_b, &bstr_null); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + + hr = IVBSAXContentHandler_endElement(vb_content, &bstr_empty, &bstr_null, &bstr_b); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + + hr = IVBSAXContentHandler_endElement(vb_content, &bstr_empty, &bstr_b, &bstr_null); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + + hr = IVBSAXContentHandler_endElement(vb_content, &bstr_empty, &bstr_empty, &bstr_b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + V_VT(&dest) = VT_EMPTY; + hr = IMXWriter_get_output(writer, &dest); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); + ok(!lstrcmpW(L"<>", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); + VariantClear(&dest); + + SysFreeString(bstr_empty); + SysFreeString(bstr_a); + SysFreeString(bstr_b); + SysFreeString(bstr_ab); + + hr = IVBSAXContentHandler_endDocument(vb_content); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + IVBSAXContentHandler_Release(vb_content); + IMXWriter_Release(writer); + + hr = CoCreateInstance(&CLSID_MXXMLWriter, NULL, CLSCTX_INPROC_SERVER, + &IID_IMXWriter, (void**)&writer); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IMXWriter_put_omitXMLDeclaration(writer, VARIANT_TRUE); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IMXWriter_QueryInterface(writer, &IID_ISAXContentHandler, (void**)&content); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_startDocument(content); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* all string pointers should be not null */ hr = ISAXContentHandler_startElement(content, _bstr_(""), 0, _bstr_("b"), 1, _bstr_(""), 0, NULL); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_("<>"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); + ok(!lstrcmpW(L"<>", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); hr = ISAXContentHandler_startElement(content, _bstr_(""), 0, _bstr_(""), 0, _bstr_("b"), 1, NULL); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_("<>"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); + ok(!lstrcmpW(L"<>", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); hr = ISAXContentHandler_endElement(content, NULL, 0, NULL, 0, _bstr_("a:b"), 3); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_endElement(content, NULL, 0, _bstr_("b"), 1, _bstr_("a:b"), 3); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); /* only local name is an error too */ hr = ISAXContentHandler_endElement(content, NULL, 0, _bstr_("b"), 1, NULL, 0); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_endElement(content, _bstr_(""), 0, _bstr_(""), 0, _bstr_("b"), 1); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_("<>"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); + ok(!lstrcmpW(L"<>", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); hr = ISAXContentHandler_endDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_put_output(writer, dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_(""), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); + ok(!lstrcmpW(L"", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); hr = ISAXContentHandler_startDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_startElement(content, _bstr_(""), 0, _bstr_(""), 0, _bstr_("abcdef"), 3, NULL); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_(""), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); + ok(!lstrcmpW(L"", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); hr = ISAXContentHandler_endDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IMXWriter_flush(writer); hr = ISAXContentHandler_endElement(content, _bstr_(""), 0, _bstr_(""), 0, _bstr_("abdcdef"), 3); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_(""), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); + ok(!lstrcmpW(L"", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_put_output(writer, dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* length -1 */ hr = ISAXContentHandler_startElement(content, _bstr_(""), 0, _bstr_(""), 0, _bstr_("a"), -1, NULL); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_(""), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); + ok(!lstrcmpW(L"", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); ISAXContentHandler_Release(content); @@ -3971,8 +4066,7 @@ static const struct writer_characters_t writer_characters[] = { static void test_mxwriter_characters(void) { - static const WCHAR chardataW[] = {'T','E','S','T','C','H','A','R','D','A','T','A',' ','.',0}; - static const WCHAR embedded_nullbytes[] = {'a',0,'b',0,0,0,'c',0}; + static const WCHAR embedded_nullbytes[] = L"a\0b\0\0\0c"; const struct writer_characters_t *table = writer_characters; IVBSAXContentHandler *vb_content; ISAXContentHandler *content; @@ -3984,42 +4078,42 @@ static void test_mxwriter_characters(void) hr = CoCreateInstance(&CLSID_MXXMLWriter, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_ISAXContentHandler, (void**)&content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_IVBSAXContentHandler, (void**)&vb_content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_put_omitXMLDeclaration(writer, VARIANT_TRUE); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_startDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_characters(content, NULL, 0); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - hr = ISAXContentHandler_characters(content, chardataW, 0); - EXPECT_HR(hr, S_OK); + hr = ISAXContentHandler_characters(content, L"TESTCHARDATA .", 0); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); str = _bstr_("VbChars"); hr = IVBSAXContentHandler_characters(vb_content, &str); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - hr = ISAXContentHandler_characters(content, chardataW, ARRAY_SIZE(chardataW) - 1); - EXPECT_HR(hr, S_OK); + hr = ISAXContentHandler_characters(content, L"TESTCHARDATA .", 14); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_("VbCharsTESTCHARDATA ."), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); + ok(!lstrcmpW(L"VbCharsTESTCHARDATA .", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); hr = ISAXContentHandler_endDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ISAXContentHandler_Release(content); IVBSAXContentHandler_Release(vb_content); @@ -4028,31 +4122,31 @@ static void test_mxwriter_characters(void) /* try empty characters data to see if element is closed */ hr = CoCreateInstance(&CLSID_MXXMLWriter, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_ISAXContentHandler, (void**)&content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_put_omitXMLDeclaration(writer, VARIANT_TRUE); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_startDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_startElement(content, _bstr_(""), 0, _bstr_(""), 0, _bstr_("a"), 1, NULL); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - hr = ISAXContentHandler_characters(content, chardataW, 0); - EXPECT_HR(hr, S_OK); + hr = ISAXContentHandler_characters(content, L"TESTCHARDATA .", 0); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_endElement(content, _bstr_(""), 0, _bstr_(""), 0, _bstr_("a"), 1); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_(""), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); + ok(!lstrcmpW(L"", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); ISAXContentHandler_Release(content); @@ -4061,23 +4155,23 @@ static void test_mxwriter_characters(void) /* test embedded null bytes */ hr = CoCreateInstance(&CLSID_MXXMLWriter, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_ISAXContentHandler, (void**)&content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_put_omitXMLDeclaration(writer, VARIANT_TRUE); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_startDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_characters(content, embedded_nullbytes, ARRAY_SIZE(embedded_nullbytes)); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); ok(SysStringLen(V_BSTR(&dest)) == ARRAY_SIZE(embedded_nullbytes), "unexpected len %d\n", SysStringLen(V_BSTR(&dest))); ok(!memcmp(V_BSTR(&dest), embedded_nullbytes, ARRAY_SIZE(embedded_nullbytes)), @@ -4089,25 +4183,25 @@ static void test_mxwriter_characters(void) hr = CoCreateInstance(&CLSID_MXXMLWriter, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_IVBSAXContentHandler, (void**)&vb_content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_put_omitXMLDeclaration(writer, VARIANT_TRUE); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IVBSAXContentHandler_startDocument(vb_content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); str = SysAllocStringLen(embedded_nullbytes, ARRAY_SIZE(embedded_nullbytes)); hr = IVBSAXContentHandler_characters(vb_content, &str); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); SysFreeString(str); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); ok(SysStringLen(V_BSTR(&dest)) == ARRAY_SIZE(embedded_nullbytes), "unexpected len %d\n", SysStringLen(V_BSTR(&dest))); ok(!memcmp(V_BSTR(&dest), embedded_nullbytes, ARRAY_SIZE(embedded_nullbytes)), @@ -4134,26 +4228,26 @@ static void test_mxwriter_characters(void) hr = CoCreateInstance(table->clsid, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_ISAXContentHandler, (void**)&content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_put_omitXMLDeclaration(writer, VARIANT_TRUE); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_startDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_characters(content, _bstr_(table->data), strlen(table->data)); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* test output */ if (hr == S_OK) { V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); ok(!lstrcmpW(_bstr_(table->output), V_BSTR(&dest)), "test %d: got wrong content %s, expected \"%s\"\n", i, wine_dbgstr_w(V_BSTR(&dest)), table->output); @@ -4163,20 +4257,20 @@ static void test_mxwriter_characters(void) /* with disabled escaping */ V_VT(&dest) = VT_EMPTY; hr = IMXWriter_put_output(writer, dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_put_disableOutputEscaping(writer, VARIANT_TRUE); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_characters(content, _bstr_(table->data), strlen(table->data)); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* test output */ if (hr == S_OK) { V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); ok(!lstrcmpW(_bstr_(table->data), V_BSTR(&dest)), "test %d: got wrong content %s, expected \"%s\"\n", i, wine_dbgstr_w(V_BSTR(&dest)), table->data); @@ -4198,14 +4292,14 @@ static const mxwriter_stream_test mxwriter_stream_tests[] = { VARIANT_TRUE,"UTF-16", { {FALSE,(const BYTE*)szUtf16BOM,sizeof(szUtf16BOM),TRUE}, - {FALSE,(const BYTE*)szUtf16XML,sizeof(szUtf16XML)}, + {FALSE,(const BYTE*)szUtf16XML,sizeof(szUtf16XML)-sizeof(WCHAR)}, {TRUE} } }, { VARIANT_FALSE,"UTF-16", { - {FALSE,(const BYTE*)szUtf16XML,sizeof(szUtf16XML)}, + {FALSE,(const BYTE*)szUtf16XML,sizeof(szUtf16XML)-sizeof(WCHAR)}, {TRUE} } }, @@ -4235,7 +4329,7 @@ static const mxwriter_stream_test mxwriter_stream_tests[] = { VARIANT_TRUE,"UTF-16", { {FALSE,(const BYTE*)szUtf16BOM,sizeof(szUtf16BOM),TRUE}, - {FALSE,(const BYTE*)szUtf16XML,sizeof(szUtf16XML)}, + {FALSE,(const BYTE*)szUtf16XML,sizeof(szUtf16XML)-sizeof(WCHAR)}, {TRUE} } }, @@ -4243,7 +4337,7 @@ static const mxwriter_stream_test mxwriter_stream_tests[] = { VARIANT_TRUE,"UTF-16", { {FALSE,(const BYTE*)szUtf16BOM,sizeof(szUtf16BOM),TRUE,TRUE}, - {FALSE,(const BYTE*)szUtf16XML,sizeof(szUtf16XML)}, + {FALSE,(const BYTE*)szUtf16XML,sizeof(szUtf16XML)-sizeof(WCHAR)}, {TRUE} } } @@ -4265,29 +4359,29 @@ static void test_mxwriter_stream(void) hr = CoCreateInstance(&CLSID_MXXMLWriter, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); - ok(hr == S_OK, "CoCreateInstance failed: %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx on test %d\n", hr, current_stream_test_index); hr = IMXWriter_QueryInterface(writer, &IID_ISAXContentHandler, (void**)&content); - ok(hr == S_OK, "QueryInterface(ISAXContentHandler) failed: %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx on test %d\n", hr, current_stream_test_index); hr = IMXWriter_put_encoding(writer, _bstr_(test->encoding)); - ok(hr == S_OK, "put_encoding failed with %08x on test %d\n", hr, current_stream_test_index); + ok(hr == S_OK, "Unexpected hr %#lx on test %d\n", hr, current_stream_test_index); V_VT(&dest) = VT_UNKNOWN; V_UNKNOWN(&dest) = (IUnknown*)&mxstream; hr = IMXWriter_put_output(writer, dest); - ok(hr == S_OK, "put_output failed with %08x on test %d\n", hr, current_stream_test_index); + ok(hr == S_OK, "Unexpected hr %#lx on test %d\n", hr, current_stream_test_index); hr = IMXWriter_put_byteOrderMark(writer, test->bom); - ok(hr == S_OK, "put_byteOrderMark failed with %08x on test %d\n", hr, current_stream_test_index); + ok(hr == S_OK, "Unexpected hr %#lx on test %d\n", hr, current_stream_test_index); current_write_test = test->expected_writes; hr = ISAXContentHandler_startDocument(content); - ok(hr == S_OK, "startDocument failed with %08x on test %d\n", hr, current_stream_test_index); + ok(hr == S_OK, "Unexpected hr %#lx on test %d\n", hr, current_stream_test_index); hr = ISAXContentHandler_endDocument(content); - ok(hr == S_OK, "endDocument failed with %08x on test %d\n", hr, current_stream_test_index); + ok(hr == S_OK, "Unexpected hr %#lx on test %d\n", hr, current_stream_test_index); ISAXContentHandler_Release(content); IMXWriter_Release(writer); @@ -4298,78 +4392,78 @@ static void test_mxwriter_stream(void) hr = CoCreateInstance(&CLSID_MXXMLWriter, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); - ok(hr == S_OK, "CoCreateInstance failed: %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); - ok(hr == S_OK, "CreateStreamOnHGlobal failed: %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_ISAXContentHandler, (void**)&content); - ok(hr == S_OK, "QueryInterface(ISAXContentHandler) failed: %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_put_encoding(writer, _bstr_("UTF-8")); - ok(hr == S_OK, "put_encoding failed: %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_UNKNOWN; V_UNKNOWN(&dest) = (IUnknown*)stream; hr = IMXWriter_put_output(writer, dest); - ok(hr == S_OK, "put_output failed: %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_startDocument(content); - ok(hr == S_OK, "startDocument failed: %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* Setting output of the mxwriter causes the current output to be flushed, * and the writer to start over. */ V_VT(&dest) = VT_EMPTY; hr = IMXWriter_put_output(writer, dest); - ok(hr == S_OK, "put_output failed: %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); pos.QuadPart = 0; hr = IStream_Seek(stream, pos, STREAM_SEEK_CUR, &pos2); - ok(hr == S_OK, "Seek failed: %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(pos2.QuadPart != 0, "expected stream position moved\n"); hr = ISAXContentHandler_startDocument(content); - ok(hr == S_OK, "startDocument failed: %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_endDocument(content); - ok(hr == S_OK, "endDocument failed: %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - ok(hr == S_OK, "get_output failed: %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "Expected VT_BSTR, got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_("\r\n"), V_BSTR(&dest)), + ok(!lstrcmpW(L"\r\n", V_BSTR(&dest)), "Got wrong content: %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); /* test when BOM is written to output stream */ V_VT(&dest) = VT_EMPTY; hr = IMXWriter_put_output(writer, dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); pos.QuadPart = 0; hr = IStream_Seek(stream, pos, STREAM_SEEK_SET, NULL); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_UNKNOWN; V_UNKNOWN(&dest) = (IUnknown*)stream; hr = IMXWriter_put_output(writer, dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_put_byteOrderMark(writer, VARIANT_TRUE); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_put_encoding(writer, _bstr_("UTF-16")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_startDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); pos.QuadPart = 0; pos2.QuadPart = 0; hr = IStream_Seek(stream, pos, STREAM_SEEK_CUR, &pos2); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(pos2.QuadPart == 2, "got wrong position\n"); IStream_Release(stream); @@ -4379,6 +4473,199 @@ static void test_mxwriter_stream(void) free_bstrs(); } +static void test_mxwriter_domdoc(void) +{ + ISAXContentHandler *content; + IXMLDOMDocument *domdoc; + IMXWriter *writer; + HRESULT hr; + VARIANT dest; + IXMLDOMElement *root = NULL; + IXMLDOMNodeList *node_list = NULL; + IXMLDOMNode *node = NULL; + LONG list_length = 0; + BSTR str; + + /* Create writer and attach DOMDocument output */ + hr = CoCreateInstance(&CLSID_MXXMLWriter60, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); + ok(hr == S_OK, "Failed to create a writer, hr %#lx.\n", hr); + + hr = IMXWriter_QueryInterface(writer, &IID_ISAXContentHandler, (void**)&content); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = CoCreateInstance(&CLSID_DOMDocument60, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument, (void **)&domdoc); + ok(hr == S_OK, "Failed to create a document, hr %#lx.\n", hr); + + V_VT(&dest) = VT_DISPATCH; + V_DISPATCH(&dest) = (IDispatch *)domdoc; + + hr = IMXWriter_put_output(writer, dest); + todo_wine + ok(hr == S_OK, "Failed to set writer output, hr %#lx.\n", hr); + if (FAILED(hr)) + { + IXMLDOMDocument_Release(domdoc); + IMXWriter_Release(writer); + return; + } + + /* Add root element to document. */ + hr = IXMLDOMDocument_createElement(domdoc, _bstr_("TestElement"), &root); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument_appendChild(domdoc, (IXMLDOMNode *)root, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + IXMLDOMElement_Release(root); + + hr = IXMLDOMDocument_get_documentElement(domdoc, &root); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(root != NULL, "Unexpected document root.\n"); + IXMLDOMElement_Release(root); + + /* startDocument clears root element and disables methods. */ + hr = ISAXContentHandler_startDocument(content); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMDocument_get_documentElement(domdoc, &root); + todo_wine + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMDocument_createElement(domdoc, _bstr_("TestElement"), &root); + todo_wine + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); + + /* startElement allows document root node to be accessed. */ + hr = ISAXContentHandler_startElement(content, L"", 0, L"", 0, L"BankAccount", 11, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMDocument_get_documentElement(domdoc, &root); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(root != NULL, "Unexpected document root.\n"); + + hr = IXMLDOMElement_get_nodeName(root, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + todo_wine + ok(!lstrcmpW(L"BankAccount", str), "Unexpected name %s.\n", wine_dbgstr_w(str)); + SysFreeString(str); + + /* startElement immediately updates previous node. */ + hr = ISAXContentHandler_startElement(content, L"", 0, L"", 0, L"Number", 6, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMElement_get_childNodes(root, &node_list); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMNodeList_get_length(node_list, &list_length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + todo_wine + ok(list_length == 1, "list length %ld, expected 1\n", list_length); + + hr = IXMLDOMNodeList_get_item(node_list, 0, &node); + todo_wine + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMNode_get_nodeName(node, &str); +todo_wine { + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(L"Number", str), "got %s\n", wine_dbgstr_w(str)); +} + SysFreeString(str); + + /* characters not immediately visible. */ + hr = ISAXContentHandler_characters(content, L"12345", 5); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMNode_get_text(node, &str); +todo_wine { + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(L"", str), "got %s\n", wine_dbgstr_w(str)); +} + SysFreeString(str); + + /* characters visible after endElement. */ + hr = ISAXContentHandler_endElement(content, L"", 0, L"", 0, L"Number", 6); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMNode_get_text(node, &str); +todo_wine { + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(L"12345", str), "got %s\n", wine_dbgstr_w(str)); +} + SysFreeString(str); + + IXMLDOMNode_Release(node); + + /* second startElement updates the existing node list. */ + + hr = ISAXContentHandler_startElement(content, L"", 0, L"", 0, L"Name", 4, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = ISAXContentHandler_characters(content, L"Captain Ahab", 12); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = ISAXContentHandler_endElement(content, L"", 0, L"", 0, L"Name", 4); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = ISAXContentHandler_endElement(content, L"", 0, L"", 0, L"BankAccount", 11); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMNodeList_get_length(node_list, &list_length); +todo_wine { + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(2 == list_length, "list length %ld, expected 2\n", list_length); +} + hr = IXMLDOMNodeList_get_item(node_list, 1, &node); + todo_wine + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMNode_get_nodeName(node, &str); +todo_wine { + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(L"Name", str), "got %s\n", wine_dbgstr_w(str)); +} + SysFreeString(str); + + hr = IXMLDOMNode_get_text(node, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); +todo_wine { + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(L"Captain Ahab", str), "got %s\n", wine_dbgstr_w(str)); +} + SysFreeString(str); + + IXMLDOMNode_Release(node); + IXMLDOMNodeList_Release(node_list); + IXMLDOMElement_Release(root); + + /* endDocument makes document modifiable again. */ + + hr = ISAXContentHandler_endDocument(content); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMDocument_createElement(domdoc, _bstr_("TestElement"), &root); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + IXMLDOMElement_Release(root); + + /* finally check doc output */ + hr = IXMLDOMDocument_get_xml(domdoc, &str); +todo_wine { + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW( + L"" + "12345" + "Captain Ahab" + "\r\n", + str), + "got %s\n", wine_dbgstr_w(str)); +} + SysFreeString(str); + + IXMLDOMDocument_Release(domdoc); + ISAXContentHandler_Release(content); + IMXWriter_Release(writer); + + free_bstrs(); +} + static const char *encoding_names[] = { "iso-8859-1", "iso-8859-2", @@ -4407,59 +4694,59 @@ static void test_mxwriter_encoding(void) hr = CoCreateInstance(&CLSID_MXXMLWriter, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_ISAXContentHandler, (void**)&content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_put_encoding(writer, _bstr_("UTF-8")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_startDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_endDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* The content is always re-encoded to UTF-16 when the output is * retrieved as a BSTR. */ V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "Expected VT_BSTR, got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_("\r\n"), V_BSTR(&dest)), + ok(!lstrcmpW(L"\r\n", V_BSTR(&dest)), "got wrong content: %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); /* switch encoding when something is written already */ hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_UNKNOWN; V_UNKNOWN(&dest) = (IUnknown*)stream; hr = IMXWriter_put_output(writer, dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_put_encoding(writer, _bstr_("UTF-8")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* write empty element */ hr = ISAXContentHandler_startElement(content, _bstr_(""), 0, _bstr_(""), 0, _bstr_("a"), 1, NULL); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_endElement(content, _bstr_(""), 0, _bstr_(""), 0, _bstr_("a"), 1); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* switch */ hr = IMXWriter_put_encoding(writer, _bstr_("UTF-16")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_flush(writer); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = GetHGlobalFromStream(stream, &g); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ptr = GlobalLock(g); ok(!strncmp(ptr, "", 4), "got %c%c%c%c\n", ptr[0],ptr[1],ptr[2],ptr[3]); @@ -4467,8 +4754,8 @@ static void test_mxwriter_encoding(void) /* so output is unaffected, encoding name is stored however */ hr = IMXWriter_get_encoding(writer, &s); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(s, _bstr_("UTF-16")), "got %s\n", wine_dbgstr_w(s)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(s, L"UTF-16"), "got %s\n", wine_dbgstr_w(s)); SysFreeString(s); IStream_Release(stream); @@ -4480,12 +4767,12 @@ static void test_mxwriter_encoding(void) char expectedA[200]; hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_UNKNOWN; V_UNKNOWN(&dest) = (IUnknown*)stream; hr = IMXWriter_put_output(writer, dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_put_encoding(writer, _bstr_(enc)); ok(hr == S_OK || broken(hr != S_OK) /* old win versions do not support certain encodings */, @@ -4498,13 +4785,13 @@ static void test_mxwriter_encoding(void) } hr = ISAXContentHandler_startDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_endDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_flush(writer); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* prepare expected string */ *expectedA = 0; @@ -4513,7 +4800,7 @@ static void test_mxwriter_encoding(void) strcat(expectedA, "\" standalone=\"no\"?>\r\n"); hr = GetHGlobalFromStream(stream, &g); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ptr = GlobalLock(g); ok(!strncmp(ptr, expectedA, strlen(expectedA)), "%s: got %s, expected %.50s\n", enc, ptr, expectedA); @@ -4521,7 +4808,7 @@ static void test_mxwriter_encoding(void) V_VT(&dest) = VT_EMPTY; hr = IMXWriter_put_output(writer, dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IStream_Release(stream); @@ -4536,8 +4823,6 @@ static void test_mxwriter_encoding(void) static void test_obj_dispex(IUnknown *obj) { - static const WCHAR testW[] = {'t','e','s','t','p','r','o','p',0}; - static const WCHAR starW[] = {'*',0}; DISPID dispid = DISPID_SAX_XMLREADER_GETFEATURE; IDispatchEx *dispex; IUnknown *unk; @@ -4548,42 +4833,42 @@ static void test_obj_dispex(IUnknown *obj) DISPID did; hr = IUnknown_QueryInterface(obj, &IID_IDispatchEx, (void**)&dispex); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); if (FAILED(hr)) return; ticnt = 0; hr = IDispatchEx_GetTypeInfoCount(dispex, &ticnt); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(ticnt == 1, "ticnt=%u\n", ticnt); - name = SysAllocString(starW); + name = SysAllocString(L"*"); hr = IDispatchEx_DeleteMemberByName(dispex, name, fdexNameCaseSensitive); - EXPECT_HR(hr, E_NOTIMPL); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); SysFreeString(name); hr = IDispatchEx_DeleteMemberByDispID(dispex, dispid); - EXPECT_HR(hr, E_NOTIMPL); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); props = 0; hr = IDispatchEx_GetMemberProperties(dispex, dispid, grfdexPropCanAll, &props); - EXPECT_HR(hr, E_NOTIMPL); - ok(props == 0, "expected 0 got %d\n", props); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); + ok(props == 0, "Unexpected value %ld.\n", props); hr = IDispatchEx_GetMemberName(dispex, dispid, &name); - EXPECT_HR(hr, E_NOTIMPL); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); if (SUCCEEDED(hr)) SysFreeString(name); hr = IDispatchEx_GetNextDispID(dispex, fdexEnumDefault, DISPID_SAX_XMLREADER_GETFEATURE, &dispid); - EXPECT_HR(hr, E_NOTIMPL); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); unk = (IUnknown*)0xdeadbeef; hr = IDispatchEx_GetNameSpaceParent(dispex, &unk); - EXPECT_HR(hr, E_NOTIMPL); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); ok(unk == (IUnknown*)0xdeadbeef, "got %p\n", unk); - name = SysAllocString(testW); + name = SysAllocString(L"testprop"); hr = IDispatchEx_GetDispID(dispex, name, fdexNameEnsure, &did); - ok(hr == DISP_E_UNKNOWNNAME, "got 0x%08x\n", hr); + ok(hr == DISP_E_UNKNOWNNAME, "Unexpected hr %#lx.\n", hr); SysFreeString(name); IDispatchEx_Release(dispex); @@ -4601,17 +4886,22 @@ static void test_saxreader_dispex(void) hr = CoCreateInstance(&CLSID_SAXXMLReader, NULL, CLSCTX_INPROC_SERVER, &IID_ISAXXMLReader, (void**)&reader); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + check_interface(reader, &IID_ISAXXMLReader, TRUE); + check_interface(reader, &IID_IVBSAXXMLReader, TRUE); + check_interface(reader, &IID_IDispatch, TRUE); + check_interface(reader, &IID_IDispatchEx, TRUE); hr = ISAXXMLReader_QueryInterface(reader, &IID_IUnknown, (void**)&unk); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); test_obj_dispex(unk); IUnknown_Release(unk); hr = ISAXXMLReader_QueryInterface(reader, &IID_IVBSAXXMLReader, (void**)&vbreader); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IVBSAXXMLReader_QueryInterface(vbreader, &IID_IUnknown, (void**)&unk); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); test_obj_dispex(unk); IUnknown_Release(unk); @@ -4634,7 +4924,7 @@ static void test_saxreader_dispex(void) NULL, NULL, NULL); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IVBSAXXMLReader_Invoke(vbreader, DISPID_SAX_XMLREADER_CONTENTHANDLER, @@ -4645,7 +4935,7 @@ static void test_saxreader_dispex(void) NULL, NULL, NULL); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IVBSAXXMLReader_Release(vbreader); ISAXXMLReader_Release(reader); @@ -4653,7 +4943,7 @@ static void test_saxreader_dispex(void) if (is_clsid_supported(&CLSID_SAXXMLReader60, reader_support_data)) { hr = CoCreateInstance(&CLSID_SAXXMLReader60, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void**)&unk); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); test_obj_dispex(unk); IUnknown_Release(unk); } @@ -4668,10 +4958,10 @@ static void test_mxwriter_dispex(void) hr = CoCreateInstance(&CLSID_MXXMLWriter, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_IDispatchEx, (void**)&dispex); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IDispatchEx_QueryInterface(dispex, &IID_IUnknown, (void**)&unk); test_obj_dispex(unk); IUnknown_Release(unk); @@ -4681,7 +4971,7 @@ static void test_mxwriter_dispex(void) if (is_clsid_supported(&CLSID_MXXMLWriter60, mxwriter_support_data)) { hr = CoCreateInstance(&CLSID_MXXMLWriter60, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void**)&unk); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); test_obj_dispex(unk); IUnknown_Release(unk); } @@ -4689,7 +4979,6 @@ static void test_mxwriter_dispex(void) static void test_mxwriter_comment(void) { - static const WCHAR commentW[] = {'c','o','m','m','e','n','t',0}; IVBSAXLexicalHandler *vblexical; ISAXContentHandler *content; ISAXLexicalHandler *lexical; @@ -4699,47 +4988,47 @@ static void test_mxwriter_comment(void) hr = CoCreateInstance(&CLSID_MXXMLWriter, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_ISAXContentHandler, (void**)&content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_ISAXLexicalHandler, (void**)&lexical); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_IVBSAXLexicalHandler, (void**)&vblexical); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_put_omitXMLDeclaration(writer, VARIANT_TRUE); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_startDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXLexicalHandler_comment(lexical, NULL, 0); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IVBSAXLexicalHandler_comment(vblexical, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); - hr = ISAXLexicalHandler_comment(lexical, commentW, 0); - EXPECT_HR(hr, S_OK); + hr = ISAXLexicalHandler_comment(lexical, L"comment", 0); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_("\r\n"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); + ok(!lstrcmpW(L"\r\n", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); - hr = ISAXLexicalHandler_comment(lexical, commentW, ARRAY_SIZE(commentW) - 1); - EXPECT_HR(hr, S_OK); + hr = ISAXLexicalHandler_comment(lexical, L"comment", 7); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_("\r\n\r\n"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); + ok(!lstrcmpW(L"\r\n\r\n", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); ISAXContentHandler_Release(content); @@ -4760,48 +5049,48 @@ static void test_mxwriter_cdata(void) hr = CoCreateInstance(&CLSID_MXXMLWriter, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_ISAXContentHandler, (void**)&content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_ISAXLexicalHandler, (void**)&lexical); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_IVBSAXLexicalHandler, (void**)&vblexical); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_put_omitXMLDeclaration(writer, VARIANT_TRUE); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_startDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXLexicalHandler_startCDATA(lexical); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_(" & \""), 7); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXLexicalHandler_endCDATA(lexical); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_(" & \"]]>"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); + ok(!lstrcmpW(L" & \"]]>", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); ISAXContentHandler_Release(content); @@ -4813,8 +5102,6 @@ static void test_mxwriter_cdata(void) static void test_mxwriter_pi(void) { - static const WCHAR targetW[] = {'t','a','r','g','e','t',0}; - static const WCHAR dataW[] = {'d','a','t','a',0}; ISAXContentHandler *content; IMXWriter *writer; VARIANT dest; @@ -4822,49 +5109,49 @@ static void test_mxwriter_pi(void) hr = CoCreateInstance(&CLSID_MXXMLWriter, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_ISAXContentHandler, (void**)&content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_processingInstruction(content, NULL, 0, NULL, 0); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - hr = ISAXContentHandler_processingInstruction(content, targetW, 0, NULL, 0); - EXPECT_HR(hr, S_OK); + hr = ISAXContentHandler_processingInstruction(content, L"target", 0, NULL, 0); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - hr = ISAXContentHandler_processingInstruction(content, targetW, 6, NULL, 0); - EXPECT_HR(hr, S_OK); + hr = ISAXContentHandler_processingInstruction(content, L"target", 6, NULL, 0); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_("\r\n\r\n"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); + ok(!lstrcmpW(L"\r\n\r\n", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); - hr = ISAXContentHandler_processingInstruction(content, targetW, 4, dataW, 4); - EXPECT_HR(hr, S_OK); + hr = ISAXContentHandler_processingInstruction(content, L"target", 4, L"data", 4); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_("\r\n\r\n\r\n"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); + ok(!lstrcmpW(L"\r\n\r\n\r\n", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_put_output(writer, dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - hr = ISAXContentHandler_processingInstruction(content, targetW, 6, dataW, 0); - EXPECT_HR(hr, S_OK); + hr = ISAXContentHandler_processingInstruction(content, L"target", 6, L"data", 0); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_("\r\n"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); + ok(!lstrcmpW(L"\r\n", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); @@ -4874,7 +5161,6 @@ static void test_mxwriter_pi(void) static void test_mxwriter_ignorablespaces(void) { - static const WCHAR dataW[] = {'d','a','t','a',0}; ISAXContentHandler *content; IMXWriter *writer; VARIANT dest; @@ -4882,28 +5168,28 @@ static void test_mxwriter_ignorablespaces(void) hr = CoCreateInstance(&CLSID_MXXMLWriter, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_ISAXContentHandler, (void**)&content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_ignorableWhitespace(content, NULL, 0); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - hr = ISAXContentHandler_ignorableWhitespace(content, dataW, 0); - EXPECT_HR(hr, S_OK); + hr = ISAXContentHandler_ignorableWhitespace(content, L"data", 0); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - hr = ISAXContentHandler_ignorableWhitespace(content, dataW, 4); - EXPECT_HR(hr, S_OK); + hr = ISAXContentHandler_ignorableWhitespace(content, L"data", 4); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - hr = ISAXContentHandler_ignorableWhitespace(content, dataW, 1); - EXPECT_HR(hr, S_OK); + hr = ISAXContentHandler_ignorableWhitespace(content, L"data", 1); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_("datad"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); + ok(!lstrcmpW(L"datad", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); ISAXContentHandler_Release(content); @@ -4912,10 +5198,6 @@ static void test_mxwriter_ignorablespaces(void) static void test_mxwriter_dtd(void) { - static const WCHAR contentW[] = {'c','o','n','t','e','n','t'}; - static const WCHAR nameW[] = {'n','a','m','e'}; - static const WCHAR pubW[] = {'p','u','b'}; - static const WCHAR sysW[] = {'s','y','s'}; IVBSAXLexicalHandler *vblexical; ISAXContentHandler *content; ISAXLexicalHandler *lexical; @@ -4928,79 +5210,78 @@ static void test_mxwriter_dtd(void) hr = CoCreateInstance(&CLSID_MXXMLWriter, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_ISAXContentHandler, (void**)&content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_ISAXLexicalHandler, (void**)&lexical); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_ISAXDeclHandler, (void**)&decl); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_IVBSAXDeclHandler, (void**)&vbdecl); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_IVBSAXLexicalHandler, (void**)&vblexical); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_put_omitXMLDeclaration(writer, VARIANT_TRUE); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_startDocument(content); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXLexicalHandler_startDTD(lexical, NULL, 0, NULL, 0, NULL, 0); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IVBSAXLexicalHandler_startDTD(vblexical, NULL, NULL, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); - hr = ISAXLexicalHandler_startDTD(lexical, NULL, 0, pubW, ARRAY_SIZE(pubW), NULL, 0); - EXPECT_HR(hr, E_INVALIDARG); + hr = ISAXLexicalHandler_startDTD(lexical, NULL, 0, L"pub", 3, NULL, 0); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - hr = ISAXLexicalHandler_startDTD(lexical, NULL, 0, NULL, 0, sysW, ARRAY_SIZE(sysW)); - EXPECT_HR(hr, E_INVALIDARG); + hr = ISAXLexicalHandler_startDTD(lexical, NULL, 0, NULL, 0, L"sys", 3); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - hr = ISAXLexicalHandler_startDTD(lexical, NULL, 0, pubW, ARRAY_SIZE(pubW), sysW, ARRAY_SIZE(sysW)); - EXPECT_HR(hr, E_INVALIDARG); + hr = ISAXLexicalHandler_startDTD(lexical, NULL, 0, L"pub", 3, L"sys", 3); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - hr = ISAXLexicalHandler_startDTD(lexical, nameW, ARRAY_SIZE(nameW), NULL, 0, NULL, 0); - EXPECT_HR(hr, S_OK); + hr = ISAXLexicalHandler_startDTD(lexical, L"name", 4, NULL, 0, NULL, 0); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_("\r\n]>\r\n"), @@ -5010,74 +5291,74 @@ static void test_mxwriter_dtd(void) /* element declaration */ V_VT(&dest) = VT_EMPTY; hr = IMXWriter_put_output(writer, dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXDeclHandler_elementDecl(decl, NULL, 0, NULL, 0); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IVBSAXDeclHandler_elementDecl(vbdecl, NULL, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); - hr = ISAXDeclHandler_elementDecl(decl, nameW, ARRAY_SIZE(nameW), NULL, 0); - EXPECT_HR(hr, E_INVALIDARG); + hr = ISAXDeclHandler_elementDecl(decl, L"name", 4, NULL, 0); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - hr = ISAXDeclHandler_elementDecl(decl, nameW, ARRAY_SIZE(nameW), contentW, ARRAY_SIZE(contentW)); - EXPECT_HR(hr, S_OK); + hr = ISAXDeclHandler_elementDecl(decl, L"name", 4, L"content", 7); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_("\r\n"), + ok(!lstrcmpW(L"\r\n", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_put_output(writer, dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - hr = ISAXDeclHandler_elementDecl(decl, nameW, ARRAY_SIZE(nameW), contentW, 0); - EXPECT_HR(hr, S_OK); + hr = ISAXDeclHandler_elementDecl(decl, L"name", 4, L"content", 0); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_("\r\n"), + ok(!lstrcmpW(L"\r\n", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); /* attribute declaration */ V_VT(&dest) = VT_EMPTY; hr = IMXWriter_put_output(writer, dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXDeclHandler_attributeDecl(decl, _bstr_("element"), strlen("element"), _bstr_("attribute"), strlen("attribute"), _bstr_("CDATA"), strlen("CDATA"), _bstr_("#REQUIRED"), strlen("#REQUIRED"), _bstr_("value"), strlen("value")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_("\r\n"), + ok(!lstrcmpW(L"\r\n", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); hr = ISAXDeclHandler_attributeDecl(decl, _bstr_("element"), strlen("element"), _bstr_("attribute2"), strlen("attribute2"), _bstr_("CDATA"), strlen("CDATA"), _bstr_("#REQUIRED"), strlen("#REQUIRED"), _bstr_("value2"), strlen("value2")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXDeclHandler_attributeDecl(decl, _bstr_("element2"), strlen("element2"), _bstr_("attribute3"), strlen("attribute3"), _bstr_("CDATA"), strlen("CDATA"), _bstr_("#REQUIRED"), strlen("#REQUIRED"), _bstr_("value3"), strlen("value3")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); ok(!lstrcmpW(_bstr_("\r\n" "\r\n" @@ -5088,58 +5369,58 @@ static void test_mxwriter_dtd(void) /* internal entities */ V_VT(&dest) = VT_EMPTY; hr = IMXWriter_put_output(writer, dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXDeclHandler_internalEntityDecl(decl, NULL, 0, NULL, 0); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IVBSAXDeclHandler_internalEntityDecl(vbdecl, NULL, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); hr = ISAXDeclHandler_internalEntityDecl(decl, _bstr_("name"), -1, NULL, 0); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = ISAXDeclHandler_internalEntityDecl(decl, _bstr_("name"), strlen("name"), _bstr_("value"), strlen("value")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_("\r\n"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); + ok(!lstrcmpW(L"\r\n", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); /* external entities */ V_VT(&dest) = VT_EMPTY; hr = IMXWriter_put_output(writer, dest); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXDeclHandler_externalEntityDecl(decl, NULL, 0, NULL, 0, NULL, 0); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IVBSAXDeclHandler_externalEntityDecl(vbdecl, NULL, NULL, NULL); - ok(hr == E_POINTER, "got 0x%08x\n", hr); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); hr = ISAXDeclHandler_externalEntityDecl(decl, _bstr_("name"), 0, NULL, 0, NULL, 0); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = ISAXDeclHandler_externalEntityDecl(decl, _bstr_("name"), -1, NULL, 0, NULL, 0); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = ISAXDeclHandler_externalEntityDecl(decl, _bstr_("name"), strlen("name"), _bstr_("pubid"), strlen("pubid"), _bstr_("sysid"), strlen("sysid")); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXDeclHandler_externalEntityDecl(decl, _bstr_("name"), strlen("name"), NULL, 0, _bstr_("sysid"), strlen("sysid")); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXDeclHandler_externalEntityDecl(decl, _bstr_("name"), strlen("name"), _bstr_("pubid"), strlen("pubid"), NULL, 0); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); ok(!lstrcmpW(_bstr_( "\r\n" @@ -5150,29 +5431,29 @@ static void test_mxwriter_dtd(void) /* notation declaration */ hr = IMXWriter_QueryInterface(writer, &IID_ISAXDTDHandler, (void**)&dtd); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_put_output(writer, dest); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXDTDHandler_notationDecl(dtd, NULL, 0, NULL, 0, NULL, 0); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = ISAXDTDHandler_notationDecl(dtd, _bstr_("name"), strlen("name"), NULL, 0, NULL, 0); - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = ISAXDTDHandler_notationDecl(dtd, _bstr_("name"), strlen("name"), _bstr_("pubid"), strlen("pubid"), NULL, 0); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXDTDHandler_notationDecl(dtd, _bstr_("name"), strlen("name"), _bstr_("pubid"), strlen("pubid"), _bstr_("sysid"), strlen("sysid")); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXDTDHandler_notationDecl(dtd, _bstr_("name"), strlen("name"), NULL, 0, _bstr_("sysid"), strlen("sysid")); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_get_output(writer, &dest); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); ok(!lstrcmpW(_bstr_( "clsid, NULL, CLSCTX_INPROC_SERVER, &IID_IMXAttributes, (void**)&mxattr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXAttributes_QueryInterface(mxattr, &IID_ISAXAttributes, (void**)&saxattr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* SAXAttributes40 and SAXAttributes60 both crash on this test */ if (IsEqualGUID(table->clsid, &CLSID_SAXAttributes) || IsEqualGUID(table->clsid, &CLSID_SAXAttributes30)) { hr = ISAXAttributes_getLength(saxattr, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); } len = -1; hr = ISAXAttributes_getLength(saxattr, &len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(len == 0, "got %d\n", len); hr = ISAXAttributes_getValue(saxattr, 0, &value, &len); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getValue(saxattr, 0, NULL, &len); - ok(hr == E_POINTER /* win8 */ || hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_POINTER /* win8 */ || hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getValue(saxattr, 0, &value, NULL); - ok(hr == E_POINTER /* win8 */ || hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_POINTER /* win8 */ || hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getValue(saxattr, 0, NULL, NULL); - ok(hr == E_POINTER /* win8 */ || hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_POINTER /* win8 */ || hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getType(saxattr, 0, &value, &len); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getType(saxattr, 0, NULL, &len); - ok(hr == E_POINTER /* win8 */ || hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_POINTER /* win8 */ || hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getType(saxattr, 0, &value, NULL); - ok(hr == E_POINTER /* win8 */ || hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_POINTER /* win8 */ || hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getType(saxattr, 0, NULL, NULL); - ok(hr == E_POINTER /* win8 */ || hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_POINTER /* win8 */ || hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IMXAttributes_addAttribute(mxattr, _bstr_(table->uri), _bstr_(table->local), _bstr_(table->qname), _bstr_(table->type), _bstr_(table->value)); - ok(hr == table->hr, "%d: got 0x%08x, expected 0x%08x\n", i, hr, table->hr); + ok(hr == table->hr, "%d: got %#lx, expected %#lx.\n", i, hr, table->hr); if (hr == S_OK) { @@ -5303,27 +5584,27 @@ static void test_mxattr_addAttribute(void) IsEqualGUID(table->clsid, &CLSID_SAXAttributes30)) { hr = ISAXAttributes_getValue(saxattr, 0, NULL, &len); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getValue(saxattr, 0, &value, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getValue(saxattr, 0, NULL, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getType(saxattr, 0, NULL, &len); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getType(saxattr, 0, &value, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getType(saxattr, 0, NULL, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); } len = -1; hr = ISAXAttributes_getValue(saxattr, 0, &value, &len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!lstrcmpW(_bstr_(table->value), value), "%d: got %s, expected %s\n", i, wine_dbgstr_w(value), table->value); ok(lstrlenW(value) == len, "%d: got wrong value length %d\n", i, len); @@ -5331,7 +5612,7 @@ static void test_mxattr_addAttribute(void) len = -1; value = (void*)0xdeadbeef; hr = ISAXAttributes_getType(saxattr, 0, &value, &len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); if (table->type) { @@ -5349,95 +5630,95 @@ static void test_mxattr_addAttribute(void) if (IsEqualGUID(table->clsid, &CLSID_SAXAttributes) || IsEqualGUID(table->clsid, &CLSID_SAXAttributes30)) { - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); } else - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getIndexFromQName(saxattr, NULL, 0, &index); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); index = -1; hr = ISAXAttributes_getIndexFromQName(saxattr, _bstr_("nonexistent"), 11, &index); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok(index == -1, "%d: got wrong index %d\n", i, index); index = -1; hr = ISAXAttributes_getIndexFromQName(saxattr, _bstr_(table->qname), 0, &index); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok(index == -1, "%d: got wrong index %d\n", i, index); index = -1; hr = ISAXAttributes_getIndexFromQName(saxattr, _bstr_(table->qname), strlen(table->qname), &index); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(index == 0, "%d: got wrong index %d\n", i, index); index = -1; hr = ISAXAttributes_getIndexFromQName(saxattr, _bstr_(table->qname), strlen(table->qname)-1, &index); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok(index == -1, "%d: got wrong index %d\n", i, index); if (IsEqualGUID(table->clsid, &CLSID_SAXAttributes40) || IsEqualGUID(table->clsid, &CLSID_SAXAttributes60)) { hr = ISAXAttributes_getValueFromQName(saxattr, NULL, 0, NULL, NULL); - ok(hr == E_POINTER /* win8 */ || hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_POINTER /* win8 */ || hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getValueFromQName(saxattr, _bstr_(table->qname), 0, NULL, NULL); - ok(hr == E_POINTER /* win8 */ || hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_POINTER /* win8 */ || hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getValueFromQName(saxattr, _bstr_(table->qname), 0, &value, NULL); - ok(hr == E_POINTER /* win8 */ || hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_POINTER /* win8 */ || hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getValueFromName(saxattr, NULL, 0, NULL, 0, NULL, NULL); - ok(hr == E_POINTER /* win8 */ || hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_POINTER /* win8 */ || hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getValueFromName(saxattr, _bstr_(table->uri), 0, NULL, 0, NULL, NULL); - ok(hr == E_POINTER /* win8 */ || hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_POINTER /* win8 */ || hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getValueFromName(saxattr, _bstr_(table->uri), 0, NULL, 0, &value, NULL); - ok(hr == E_POINTER /* win8 */ || hr == E_INVALIDARG, "got 0x%08x\n", hr); + ok(hr == E_POINTER /* win8 */ || hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); } else { hr = ISAXAttributes_getValueFromQName(saxattr, NULL, 0, NULL, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getValueFromQName(saxattr, _bstr_(table->qname), 0, NULL, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getValueFromQName(saxattr, _bstr_(table->qname), 0, &value, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); /* versions 4 and 6 crash */ hr = ISAXAttributes_getValueFromQName(saxattr, _bstr_(table->qname), strlen(table->qname), NULL, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getValueFromQName(saxattr, _bstr_(table->qname), strlen(table->qname), NULL, &len); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getValueFromName(saxattr, NULL, 0, NULL, 0, NULL, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getValueFromName(saxattr, _bstr_(table->uri), 0, NULL, 0, NULL, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getValueFromName(saxattr, _bstr_(table->uri), 0, NULL, 0, &value, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getValueFromName(saxattr, _bstr_(table->uri), 0, _bstr_(table->local), 0, &value, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getValueFromName(saxattr, _bstr_(table->uri), 0, _bstr_(table->local), 0, NULL, &len); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getValueFromName(saxattr, _bstr_(table->uri), strlen(table->uri), _bstr_(table->local), strlen(table->local), NULL, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); } hr = ISAXAttributes_getValueFromQName(saxattr, _bstr_(table->qname), strlen(table->qname), &value, &len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!lstrcmpW(_bstr_(table->value), value), "%d: got %s, expected %s\n", i, wine_dbgstr_w(value), table->value); ok(lstrlenW(value) == len, "%d: got wrong value length %d\n", i, len); @@ -5445,7 +5726,7 @@ static void test_mxattr_addAttribute(void) if (table->uri) { hr = ISAXAttributes_getValueFromName(saxattr, _bstr_(table->uri), strlen(table->uri), _bstr_(table->local), strlen(table->local), &value, &len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!lstrcmpW(_bstr_(table->value), value), "%d: got %s, expected %s\n", i, wine_dbgstr_w(value), table->value); ok(lstrlenW(value) == len, "%d: got wrong value length %d\n", i, len); @@ -5454,7 +5735,7 @@ static void test_mxattr_addAttribute(void) len = -1; hr = ISAXAttributes_getLength(saxattr, &len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); if (table->hr == S_OK) ok(len == 1, "%d: got %d length, expected 1\n", i, len); else @@ -5480,57 +5761,57 @@ static void test_mxattr_clear(void) hr = CoCreateInstance(&CLSID_SAXAttributes, NULL, CLSCTX_INPROC_SERVER, &IID_IMXAttributes, (void**)&mxattr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXAttributes_QueryInterface(mxattr, &IID_ISAXAttributes, (void**)&saxattr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getQName(saxattr, 0, NULL, NULL); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getQName(saxattr, 0, &ptr, &len); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IMXAttributes_clear(mxattr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXAttributes_addAttribute(mxattr, _bstr_("uri"), _bstr_("local"), _bstr_("qname"), _bstr_("type"), _bstr_("value")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = -1; hr = ISAXAttributes_getLength(saxattr, &len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(len == 1, "got %d\n", len); len = -1; hr = ISAXAttributes_getQName(saxattr, 0, NULL, &len); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); ok(len == -1, "got %d\n", len); ptr = (void*)0xdeadbeef; hr = ISAXAttributes_getQName(saxattr, 0, &ptr, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); ok(ptr == (void*)0xdeadbeef, "got %p\n", ptr); len = 0; hr = ISAXAttributes_getQName(saxattr, 0, &ptr, &len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(len == 5, "got %d\n", len); - ok(!lstrcmpW(ptr, _bstr_("qname")), "got %s\n", wine_dbgstr_w(ptr)); + ok(!lstrcmpW(ptr, L"qname"), "got %s\n", wine_dbgstr_w(ptr)); hr = IMXAttributes_clear(mxattr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = -1; hr = ISAXAttributes_getLength(saxattr, &len); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(len == 0, "got %d\n", len); len = -1; ptr = (void*)0xdeadbeef; hr = ISAXAttributes_getQName(saxattr, 0, &ptr, &len); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok(len == -1, "got %d\n", len); ok(ptr == (void*)0xdeadbeef, "got %p\n", ptr); @@ -5548,10 +5829,10 @@ static void test_mxattr_dispex(void) hr = CoCreateInstance(&CLSID_SAXAttributes, NULL, CLSCTX_INPROC_SERVER, &IID_IMXAttributes, (void**)&mxattr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXAttributes_QueryInterface(mxattr, &IID_IDispatchEx, (void**)&dispex); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IDispatchEx_QueryInterface(dispex, &IID_IUnknown, (void**)&unk); test_obj_dispex(unk); IUnknown_Release(unk); @@ -5562,40 +5843,20 @@ static void test_mxattr_dispex(void) static void test_mxattr_qi(void) { - IVBSAXAttributes *vbsaxattr, *vbsaxattr2; - ISAXAttributes *saxattr; IMXAttributes *mxattr; HRESULT hr; hr = CoCreateInstance(&CLSID_SAXAttributes, NULL, CLSCTX_INPROC_SERVER, - &IID_IMXAttributes, (void**)&mxattr); - EXPECT_HR(hr, S_OK); + &IID_IMXAttributes, (void **)&mxattr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - EXPECT_REF(mxattr, 1); - hr = IMXAttributes_QueryInterface(mxattr, &IID_ISAXAttributes, (void**)&saxattr); - EXPECT_HR(hr, S_OK); - - EXPECT_REF(mxattr, 2); - EXPECT_REF(saxattr, 2); - - hr = IMXAttributes_QueryInterface(mxattr, &IID_IVBSAXAttributes, (void**)&vbsaxattr); - EXPECT_HR(hr, S_OK); - - EXPECT_REF(vbsaxattr, 3); - EXPECT_REF(mxattr, 3); - EXPECT_REF(saxattr, 3); - - hr = ISAXAttributes_QueryInterface(saxattr, &IID_IVBSAXAttributes, (void**)&vbsaxattr2); - EXPECT_HR(hr, S_OK); - - EXPECT_REF(vbsaxattr, 4); - EXPECT_REF(mxattr, 4); - EXPECT_REF(saxattr, 4); + check_interface(mxattr, &IID_IMXAttributes, TRUE); + check_interface(mxattr, &IID_ISAXAttributes, TRUE); + check_interface(mxattr, &IID_IVBSAXAttributes, TRUE); + check_interface(mxattr, &IID_IDispatch, TRUE); + check_interface(mxattr, &IID_IDispatchEx, TRUE); IMXAttributes_Release(mxattr); - ISAXAttributes_Release(saxattr); - IVBSAXAttributes_Release(vbsaxattr); - IVBSAXAttributes_Release(vbsaxattr2); } static struct msxmlsupported_data_t saxattr_support_data[] = @@ -5609,11 +5870,6 @@ static struct msxmlsupported_data_t saxattr_support_data[] = static void test_mxattr_localname(void) { - static const WCHAR localname1W[] = {'l','o','c','a','l','n','a','m','e','1',0}; - static const WCHAR localnameW[] = {'l','o','c','a','l','n','a','m','e',0}; - static const WCHAR uri1W[] = {'u','r','i','1',0}; - static const WCHAR uriW[] = {'u','r','i',0}; - const struct msxmlsupported_data_t *table = saxattr_support_data; while (table->clsid) @@ -5631,60 +5887,60 @@ static void test_mxattr_localname(void) hr = CoCreateInstance(table->clsid, NULL, CLSCTX_INPROC_SERVER, &IID_IMXAttributes, (void**)&mxattr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXAttributes_QueryInterface(mxattr, &IID_ISAXAttributes, (void**)&saxattr); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXAttributes_getIndexFromName(saxattr, NULL, 0, NULL, 0, &index); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - /* add some ambiguos attribute names */ + /* add some ambiguous attribute names */ hr = IMXAttributes_addAttribute(mxattr, _bstr_("uri"), _bstr_("localname"), _bstr_("a:localname"), _bstr_(""), _bstr_("value")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXAttributes_addAttribute(mxattr, _bstr_("uri"), _bstr_("localname"), _bstr_("b:localname"), _bstr_(""), _bstr_("value")); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); index = -1; - hr = ISAXAttributes_getIndexFromName(saxattr, uriW, lstrlenW(uriW), localnameW, lstrlenW(localnameW), &index); - EXPECT_HR(hr, S_OK); + hr = ISAXAttributes_getIndexFromName(saxattr, L"uri", 3, L"localname", 9, &index); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(index == 0, "%s: got index %d\n", table->name, index); index = -1; - hr = ISAXAttributes_getIndexFromName(saxattr, uri1W, lstrlenW(uri1W), localnameW, lstrlenW(localnameW), &index); - EXPECT_HR(hr, E_INVALIDARG); + hr = ISAXAttributes_getIndexFromName(saxattr, L"uri1", 4, L"localname", 9, &index); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok(index == -1, "%s: got index %d\n", table->name, index); index = -1; - hr = ISAXAttributes_getIndexFromName(saxattr, uriW, lstrlenW(uriW), localname1W, lstrlenW(localname1W), &index); - EXPECT_HR(hr, E_INVALIDARG); + hr = ISAXAttributes_getIndexFromName(saxattr, L"uri", 3, L"localname1", 10, &index); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok(index == -1, "%s: got index %d\n", table->name, index); if (IsEqualGUID(table->clsid, &CLSID_SAXAttributes) || IsEqualGUID(table->clsid, &CLSID_SAXAttributes30)) { hr = ISAXAttributes_getIndexFromName(saxattr, NULL, 0, NULL, 0, NULL); - EXPECT_HR(hr, E_POINTER); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); - hr = ISAXAttributes_getIndexFromName(saxattr, uriW, lstrlenW(uriW), localname1W, lstrlenW(localname1W), NULL); - EXPECT_HR(hr, E_POINTER); + hr = ISAXAttributes_getIndexFromName(saxattr, L"uri", 3, L"localname1", 10, NULL); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); } else { hr = ISAXAttributes_getIndexFromName(saxattr, NULL, 0, NULL, 0, NULL); - EXPECT_HR(hr, E_INVALIDARG); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - hr = ISAXAttributes_getIndexFromName(saxattr, uriW, lstrlenW(uriW), localname1W, lstrlenW(localname1W), NULL); - EXPECT_HR(hr, E_INVALIDARG); + hr = ISAXAttributes_getIndexFromName(saxattr, L"uri", 3, L"localname1", 10, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); } - hr = ISAXAttributes_getIndexFromName(saxattr, uriW, lstrlenW(uriW), NULL, 0, &index); - EXPECT_HR(hr, E_INVALIDARG); + hr = ISAXAttributes_getIndexFromName(saxattr, L"uri", 3, NULL, 0, &index); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); - hr = ISAXAttributes_getIndexFromName(saxattr, NULL, 0, localname1W, lstrlenW(localname1W), &index); - EXPECT_HR(hr, E_INVALIDARG); + hr = ISAXAttributes_getIndexFromName(saxattr, NULL, 0, L"localname1", 10, &index); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); table++; @@ -5702,46 +5958,46 @@ static void test_mxwriter_indent(void) HRESULT hr; hr = CoCreateInstance(&CLSID_MXXMLWriter, NULL, CLSCTX_INPROC_SERVER, &IID_IMXWriter, (void**)&writer); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_put_indent(writer, VARIANT_TRUE); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMXWriter_QueryInterface(writer, &IID_ISAXContentHandler, (void**)&content); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_startDocument(content); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - hr = ISAXContentHandler_startElement(content, emptyW, 0, emptyW, 0, _bstr_("a"), -1, NULL); - ok(hr == S_OK, "got %08x\n", hr); + hr = ISAXContentHandler_startElement(content, L"", 0, L"", 0, _bstr_("a"), -1, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_characters(content, _bstr_(""), 0); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - hr = ISAXContentHandler_startElement(content, emptyW, 0, emptyW, 0, _bstr_("b"), -1, NULL); - ok(hr == S_OK, "got %08x\n", hr); + hr = ISAXContentHandler_startElement(content, L"", 0, L"", 0, _bstr_("b"), -1, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - hr = ISAXContentHandler_startElement(content, emptyW, 0, emptyW, 0, _bstr_("c"), -1, NULL); - ok(hr == S_OK, "got %08x\n", hr); + hr = ISAXContentHandler_startElement(content, L"", 0, L"", 0, _bstr_("c"), -1, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - hr = ISAXContentHandler_endElement(content, emptyW, 0, emptyW, 0, _bstr_("c"), -1); - ok(hr == S_OK, "got %08x\n", hr); + hr = ISAXContentHandler_endElement(content, L"", 0, L"", 0, _bstr_("c"), -1); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - hr = ISAXContentHandler_endElement(content, emptyW, 0, emptyW, 0, _bstr_("b"), -1); - ok(hr == S_OK, "got %08x\n", hr); + hr = ISAXContentHandler_endElement(content, L"", 0, L"", 0, _bstr_("b"), -1); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - hr = ISAXContentHandler_endElement(content, emptyW, 0, emptyW, 0, _bstr_("a"), -1); - ok(hr == S_OK, "got %08x\n", hr); + hr = ISAXContentHandler_endElement(content, L"", 0, L"", 0, _bstr_("a"), -1); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = ISAXContentHandler_endDocument(content); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); - ok(hr == S_OK, "got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_("\r\n\r\n\t\t\r\n\t\r\n"), V_BSTR(&dest)), + ok(!lstrcmpW(L"\r\n\r\n\t\t\r\n\t\r\n", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); @@ -5796,6 +6052,7 @@ START_TEST(saxreader) test_mxwriter_properties(); test_mxwriter_flush(); test_mxwriter_stream(); + test_mxwriter_domdoc(); test_mxwriter_encoding(); test_mxwriter_dispex(); test_mxwriter_indent(); diff --git a/modules/rostests/winetests/msxml3/schema.c b/modules/rostests/winetests/msxml3/schema.c index bf2922f09c3..50e5a743b82 100644 --- a/modules/rostests/winetests/msxml3/schema.c +++ b/modules/rostests/winetests/msxml3/schema.c @@ -34,12 +34,9 @@ #include "wine/test.h" -#define EXPECT_HR(hr,hr_exp) \ - ok(hr == hr_exp, "got 0x%08x, expected 0x%08x\n", hr, hr_exp) - -static const CHAR xdr_schema1_uri[] = "x-schema:test1.xdr"; -static const CHAR xdr_schema1_xml[] = -"" +static const WCHAR xdr_schema1_uri[] = L"x-schema:test1.xdr"; +static const WCHAR xdr_schema1_xml[] = +L"" "" @@ -55,9 +52,9 @@ static const CHAR xdr_schema1_xml[] = " " ""; -static const CHAR xdr_schema2_uri[] = "x-schema:test2.xdr"; -static const CHAR xdr_schema2_xml[] = -"" +static const WCHAR xdr_schema2_uri[] = L"x-schema:test2.xdr"; +static const WCHAR xdr_schema2_xml[] = +L"" "" @@ -71,9 +68,9 @@ static const CHAR xdr_schema2_xml[] = " " ""; -static const CHAR xdr_schema3_uri[] = "x-schema:test3.xdr"; -static const CHAR xdr_schema3_xml[] = -"" +static const WCHAR xdr_schema3_uri[] = L"x-schema:test3.xdr"; +static const WCHAR xdr_schema3_xml[] = +L"" "" @@ -87,50 +84,10 @@ static const CHAR xdr_schema3_xml[] = " " ""; -static const CHAR xsd_schema1_uri[] = "x-schema:test1.xsd"; -static const CHAR xsd_schema1_xml[] = -"" -"" -" " -" " -" " -" " -" " -" " -" " -""; +static const WCHAR xsd_schema1_uri[] = L"x-schema:test1.xsd"; -static const CHAR xsd_schema2_uri[] = "x-schema:test2.xsd"; -static const CHAR xsd_schema2_xml[] = -"" -"" -" " -" " -" " -" " -" " -" " -" " -""; - -static const CHAR xsd_schema3_uri[] = "x-schema:test3.xsd"; -static const CHAR xsd_schema3_xml[] = -"" -"" -" " -" " -" " -" " -" " -" " -" " -""; - -static const CHAR szDatatypeXDR[] = -"\n" " \n" " \n" @@ -205,8 +162,8 @@ static const CHAR szDatatypeXDR[] = " \n" ""; -static const CHAR szDatatypeXML[] = -"\n" +static const WCHAR szDatatypeXML[] = +L"\n" "\n" " \n" " testBase64\n" @@ -378,8 +335,8 @@ static const CHAR szDatatypeXML[] = " \n" ""; -static const CHAR szOpenSeqXDR[] = -"\n" +static const WCHAR szOpenSeqXDR[] = +L"\n" " \n" " \n" " \n" @@ -395,31 +352,15 @@ static const CHAR szOpenSeqXDR[] = " \n" ""; -static const CHAR szOpenSeqXML1[] = ""; -static const CHAR szOpenSeqXML2[] = ""; -static const CHAR szOpenSeqXML3[] = ""; -static const CHAR szOpenSeqXML4[] = ""; +static const WCHAR szOpenSeqXML1[] = L""; +static const WCHAR szOpenSeqXML2[] = L""; +static const WCHAR szOpenSeqXML3[] = L""; +static const WCHAR szOpenSeqXML4[] = L""; -#define check_ref_expr(expr, n) { \ - LONG ref = expr; \ - ok(ref == n, "expected %i refs, got %i\n", n, ref); \ -} - -#define check_refs(iface, obj, n) { \ - LONG ref = iface ## _AddRef(obj); \ - ok(ref == n+1, "expected %i refs, got %i\n", n+1, ref); \ - ref = iface ## _Release(obj); \ - ok(ref == n, "expected %i refs, got %i\n", n, ref); \ -} - -#define ole_check(expr) { \ - HRESULT r = expr; \ - ok(r == S_OK, #expr " returned %x\n", r); \ -} - -#define ole_expect(expr, expect) { \ - HRESULT r = expr; \ - ok(r == (expect), #expr " returned %x, expected %x\n", r, expect); \ +static ULONG get_refcount(void *iface) +{ + IUnknown_AddRef((IUnknown *)iface); + return IUnknown_Release((IUnknown *)iface); } #define _expect64(expr, str, base, TYPE, CONV) { \ @@ -429,29 +370,16 @@ static const CHAR szOpenSeqXML4[] = ""; wine_dbgstr_longlong(v1), wine_dbgstr_longlong(v2)); \ } -#ifdef __REACTOS__ -#define expect_int64(expr, x, base) _expect64(expr, #x, base, LONG64, _strtoi64) -#define expect_uint64(expr, x, base) _expect64(expr, #x, base, ULONG64, _strtoui64) -#else #define expect_int64(expr, x, base) _expect64(expr, #x, base, LONG64, strtoll) #define expect_uint64(expr, x, base) _expect64(expr, #x, base, ULONG64, strtoull) -#endif static BSTR alloced_bstrs[256]; static int alloced_bstrs_count; -static BSTR alloc_str_from_narrow(const char *str) -{ - int len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0); - BSTR ret = SysAllocStringLen(NULL, len - 1); /* NUL character added automatically */ - MultiByteToWideChar(CP_ACP, 0, str, -1, ret, len); - return ret; -} - -static BSTR _bstr_(const char *str) +static BSTR _bstr_(const WCHAR *str) { assert(alloced_bstrs_count < ARRAY_SIZE(alloced_bstrs)); - alloced_bstrs[alloced_bstrs_count] = alloc_str_from_narrow(str); + alloced_bstrs[alloced_bstrs_count] = SysAllocString(str); return alloced_bstrs[alloced_bstrs_count++]; } @@ -478,7 +406,7 @@ static void* _create_object(const GUID *clsid, const char *name, const IID *iid, hr = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, iid, &obj); if (hr != S_OK) - win_skip_(__FILE__,line)("failed to create %s instance: 0x%08x\n", name, hr); + win_skip_(__FILE__,line)("failed to create %s instance: hr %#lx.\n", name, hr); return obj; } @@ -500,10 +428,10 @@ static void test_schema_refs(void) IXMLDOMDocument2 *doc; IXMLDOMNode *node; IXMLDOMSchemaCollection *cache; + LONG len, refcount; VARIANT v; VARIANT_BOOL b; BSTR str; - LONG len; HRESULT hr; doc = create_document(&IID_IXMLDOMDocument2); @@ -519,156 +447,190 @@ static void test_schema_refs(void) VariantInit(&v); str = SysAllocString(xdr_schema_xml); - ole_check(IXMLDOMDocument2_loadXML(doc, str, &b)); + hr = IXMLDOMDocument2_loadXML(doc, str, &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "b %04x\n", b); SysFreeString(str); node = (void*)0xdeadbeef; - ole_check(IXMLDOMSchemaCollection_get(cache, NULL, &node)); + hr = IXMLDOMSchemaCollection_get(cache, NULL, &node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(node == NULL, "%p\n", node); /* NULL uri pointer, still adds a document */ - ole_check(IXMLDOMSchemaCollection_add(cache, NULL, _variantdoc_(doc))); + hr = IXMLDOMSchemaCollection_add(cache, NULL, _variantdoc_(doc)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = -1; - ole_check(IXMLDOMSchemaCollection_get_length(cache, &len)); - ok(len == 1, "got %d\n", len); + hr = IXMLDOMSchemaCollection_get_length(cache, &len); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(len == 1, "Unexpected length %ld.\n", len); /* read back - empty valid BSTR */ str = NULL; - ole_check(IXMLDOMSchemaCollection_get_namespaceURI(cache, 0, &str)); + hr = IXMLDOMSchemaCollection_get_namespaceURI(cache, 0, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(str && *str == 0, "got %p\n", str); SysFreeString(str); node = NULL; - ole_check(IXMLDOMSchemaCollection_get(cache, NULL, &node)); + hr = IXMLDOMSchemaCollection_get(cache, NULL, &node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(node != NULL, "%p\n", node); -#if __REACTOS__ - if (node) -#endif IXMLDOMNode_Release(node); node = NULL; str = SysAllocString(L""); - ole_check(IXMLDOMSchemaCollection_get(cache, str, &node)); + hr = IXMLDOMSchemaCollection_get(cache, str, &node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(node != NULL, "%p\n", node); -#if __REACTOS__ - if (node) -#endif IXMLDOMNode_Release(node); SysFreeString(str); /* remove with NULL uri */ - ole_check(IXMLDOMSchemaCollection_remove(cache, NULL)); + hr = IXMLDOMSchemaCollection_remove(cache, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = -1; - ole_check(IXMLDOMSchemaCollection_get_length(cache, &len)); - ok(len == 0, "got %d\n", len); + hr = IXMLDOMSchemaCollection_get_length(cache, &len); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(len == 0, "Unexpected length %ld.\n", len); /* same, but with VT_UNKNOWN type */ V_VT(&v) = VT_UNKNOWN; V_UNKNOWN(&v) = (IUnknown*)doc; hr = IXMLDOMSchemaCollection_add(cache, NULL, v); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = -1; hr = IXMLDOMSchemaCollection_get_length(cache, &len); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(len == 1, "got %d\n", len); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(len == 1, "Unexpected length %ld.\n", len); hr = IXMLDOMSchemaCollection_remove(cache, NULL); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); len = -1; hr = IXMLDOMSchemaCollection_get_length(cache, &len); - ok(hr == S_OK, "got 0x%08x\n", hr); - ok(len == 0, "got %d\n", len); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(len == 0, "Unexpected length %ld.\n", len); str = SysAllocString(L"x-schema:test.xml"); - ole_check(IXMLDOMSchemaCollection_add(cache, str, _variantdoc_(doc))); + hr = IXMLDOMSchemaCollection_add(cache, str, _variantdoc_(doc)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* IXMLDOMSchemaCollection_add doesn't add a ref on doc */ - check_refs(IXMLDOMDocument2, doc, 1); + refcount = get_refcount(doc); + ok(refcount == 1, "Unexpected refcount %ld.\n", refcount); SysFreeString(str); V_VT(&v) = VT_INT; - ole_expect(IXMLDOMDocument2_get_schemas(doc, &v), S_FALSE); + hr = IXMLDOMDocument2_get_schemas(doc, &v); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(V_VT(&v) == VT_NULL, "vt %x\n", V_VT(&v)); - check_ref_expr(IXMLDOMSchemaCollection_AddRef(cache), 2); + refcount = IXMLDOMSchemaCollection_AddRef(cache); + ok(refcount == 2, "Unexpected refcount %ld.\n", refcount); V_VT(&v) = VT_DISPATCH; V_DISPATCH(&v) = (IDispatch*)cache; /* check that putref_schemas takes a ref */ - ole_check(IXMLDOMDocument2_putref_schemas(doc, v)); - check_refs(IXMLDOMSchemaCollection, cache, 3); + hr = IXMLDOMDocument2_putref_schemas(doc, v); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + refcount = get_refcount(cache); + ok(refcount == 3, "Unexpected refcount %ld.\n", refcount); VariantClear(&v); /* refs now 2 */ V_VT(&v) = VT_INT; /* check that get_schemas adds a ref */ - ole_check(IXMLDOMDocument2_get_schemas(doc, &v)); + hr = IXMLDOMDocument2_get_schemas(doc, &v); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&v) == VT_DISPATCH, "vt %x\n", V_VT(&v)); - check_refs(IXMLDOMSchemaCollection, cache, 3); + refcount = get_refcount(cache); + ok(refcount == 3, "Unexpected refcount %ld.\n", refcount); /* get_schemas doesn't release a ref if passed VT_DISPATCH - ie it doesn't call VariantClear() */ - ole_check(IXMLDOMDocument2_get_schemas(doc, &v)); + hr = IXMLDOMDocument2_get_schemas(doc, &v); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&v) == VT_DISPATCH, "vt %x\n", V_VT(&v)); - check_refs(IXMLDOMSchemaCollection, cache, 4); + refcount = get_refcount(cache); + ok(refcount == 4, "Unexpected refcount %ld.\n", refcount); /* release the two refs returned by get_schemas */ - check_ref_expr(IXMLDOMSchemaCollection_Release(cache), 3); - check_ref_expr(IXMLDOMSchemaCollection_Release(cache), 2); + refcount = IXMLDOMSchemaCollection_Release(cache); + ok(refcount == 3, "Unexpected refcount %ld.\n", refcount); + refcount = IXMLDOMSchemaCollection_Release(cache); + ok(refcount == 2, "Unexpected refcount %ld.\n", refcount); /* check that taking another ref on the document doesn't change the schema's ref count */ - check_ref_expr(IXMLDOMDocument2_AddRef(doc), 2); - check_refs(IXMLDOMSchemaCollection, cache, 2); - check_ref_expr(IXMLDOMDocument2_Release(doc), 1); + refcount = IXMLDOMDocument2_AddRef(doc); + ok(refcount == 2, "Unexpected refcount %ld.\n", refcount); + refcount = get_refcount(cache); + ok(refcount == 2, "Unexpected refcount %ld.\n", refcount); + refcount = IXMLDOMDocument2_Release(doc); + ok(refcount == 1, "Unexpected refcount %ld.\n", refcount); /* call putref_schema with some odd variants */ V_VT(&v) = VT_INT; - ole_expect(IXMLDOMDocument2_putref_schemas(doc, v), E_FAIL); - check_refs(IXMLDOMSchemaCollection, cache, 2); + hr = IXMLDOMDocument2_putref_schemas(doc, v); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); + refcount = get_refcount(cache); + ok(refcount == 2, "Unexpected refcount %ld.\n", refcount); /* calling with VT_EMPTY releases the schema */ V_VT(&v) = VT_EMPTY; - ole_check(IXMLDOMDocument2_putref_schemas(doc, v)); - check_refs(IXMLDOMSchemaCollection, cache, 1); + hr = IXMLDOMDocument2_putref_schemas(doc, v); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + refcount = get_refcount(cache); + ok(refcount == 1, "Unexpected refcount %ld.\n", refcount); /* try setting with VT_UNKNOWN */ - check_ref_expr(IXMLDOMSchemaCollection_AddRef(cache), 2); + refcount = IXMLDOMSchemaCollection_AddRef(cache); + ok(refcount == 2, "Unexpected refcount %ld.\n", refcount); V_VT(&v) = VT_UNKNOWN; V_UNKNOWN(&v) = (IUnknown*)cache; - ole_check(IXMLDOMDocument2_putref_schemas(doc, v)); - check_refs(IXMLDOMSchemaCollection, cache, 3); + hr = IXMLDOMDocument2_putref_schemas(doc, v); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + refcount = get_refcount(cache); + ok(refcount == 3, "Unexpected refcount %ld.\n", refcount); VariantClear(&v); /* refs now 2 */ /* calling with VT_NULL releases the schema */ V_VT(&v) = VT_NULL; - ole_check(IXMLDOMDocument2_putref_schemas(doc, v)); - check_refs(IXMLDOMSchemaCollection, cache, 1); + hr = IXMLDOMDocument2_putref_schemas(doc, v); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + refcount = get_refcount(cache); + ok(refcount == 1, "Unexpected refcount %ld.\n", refcount); /* refs now 1 */ /* set again */ - check_ref_expr(IXMLDOMSchemaCollection_AddRef(cache), 2); + refcount = IXMLDOMSchemaCollection_AddRef(cache); + ok(refcount == 2, "Unexpected refcount %ld.\n", refcount); V_VT(&v) = VT_UNKNOWN; V_UNKNOWN(&v) = (IUnknown*)cache; - ole_check(IXMLDOMDocument2_putref_schemas(doc, v)); - check_refs(IXMLDOMSchemaCollection, cache, 3); + hr = IXMLDOMDocument2_putref_schemas(doc, v); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + refcount = get_refcount(cache); + ok(refcount == 3, "Unexpected refcount %ld.\n", refcount); VariantClear(&v); /* refs now 2 */ /* release the final ref on the doc which should release its ref on the schema */ - check_ref_expr(IXMLDOMDocument2_Release(doc), 0); + refcount = IXMLDOMDocument2_Release(doc); + ok(!refcount, "Unexpected refcount %ld.\n", refcount); - check_refs(IXMLDOMSchemaCollection, cache, 1); - check_ref_expr(IXMLDOMSchemaCollection_Release(cache), 0); + refcount = get_refcount(cache); + ok(refcount == 1, "Unexpected refcount %ld.\n", refcount); + refcount = IXMLDOMSchemaCollection_Release(cache); + ok(!refcount, "Unexpected refcount %ld.\n", refcount); } static void test_collection_refs(void) { IXMLDOMDocument2 *schema1, *schema2, *schema3; IXMLDOMSchemaCollection *cache1, *cache2, *cache3; + LONG refcount, length; VARIANT_BOOL b; - LONG length; + HRESULT hr; schema1 = create_document(&IID_IXMLDOMDocument2); ok(schema1 != NULL, "Failed to create a document.\n"); @@ -691,93 +653,166 @@ static void test_collection_refs(void) cache2 = create_cache(&IID_IXMLDOMSchemaCollection); cache3 = create_cache(&IID_IXMLDOMSchemaCollection); - ole_check(IXMLDOMDocument2_loadXML(schema1, _bstr_(xdr_schema1_xml), &b)); + hr = IXMLDOMDocument2_loadXML(schema1, _bstr_(xdr_schema1_xml), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML\n"); - ole_check(IXMLDOMDocument2_loadXML(schema2, _bstr_(xdr_schema2_xml), &b)); + hr = IXMLDOMDocument2_loadXML(schema2, _bstr_(xdr_schema2_xml), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML\n"); - ole_check(IXMLDOMDocument2_loadXML(schema3, _bstr_(xdr_schema3_xml), &b)); + hr = IXMLDOMDocument2_loadXML(schema3, _bstr_(xdr_schema3_xml), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML\n"); - ole_check(IXMLDOMSchemaCollection_add(cache1, _bstr_(xdr_schema1_uri), _variantdoc_(schema1))); - ole_check(IXMLDOMSchemaCollection_add(cache2, _bstr_(xdr_schema2_uri), _variantdoc_(schema2))); - ole_check(IXMLDOMSchemaCollection_add(cache3, _bstr_(xdr_schema3_uri), _variantdoc_(schema3))); + hr = IXMLDOMSchemaCollection_add(cache1, _bstr_(xdr_schema1_uri), _variantdoc_(schema1)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMSchemaCollection_add(cache2, _bstr_(xdr_schema2_uri), _variantdoc_(schema2)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMSchemaCollection_add(cache3, _bstr_(xdr_schema3_uri), _variantdoc_(schema3)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - check_ref_expr(IXMLDOMDocument2_Release(schema1), 0); - check_ref_expr(IXMLDOMDocument2_Release(schema2), 0); - check_ref_expr(IXMLDOMDocument2_Release(schema3), 0); + refcount = IXMLDOMDocument2_Release(schema1); + ok(!refcount, "Unexpected refcount %ld.\n", refcount); + refcount = IXMLDOMDocument2_Release(schema2); + ok(!refcount, "Unexpected refcount %ld.\n", refcount); + refcount = IXMLDOMDocument2_Release(schema3); + ok(!refcount, "Unexpected refcount %ld.\n", refcount); schema1 = NULL; schema2 = NULL; schema3 = NULL; /* releasing the original doc does not affect the schema cache */ - ole_check(IXMLDOMSchemaCollection_get(cache1, _bstr_(xdr_schema1_uri), (IXMLDOMNode**)&schema1)); - ole_check(IXMLDOMSchemaCollection_get(cache2, _bstr_(xdr_schema2_uri), (IXMLDOMNode**)&schema2)); - ole_check(IXMLDOMSchemaCollection_get(cache3, _bstr_(xdr_schema3_uri), (IXMLDOMNode**)&schema3)); + hr = IXMLDOMSchemaCollection_get(cache1, _bstr_(xdr_schema1_uri), (IXMLDOMNode**)&schema1); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMSchemaCollection_get(cache2, _bstr_(xdr_schema2_uri), (IXMLDOMNode**)&schema2); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMSchemaCollection_get(cache3, _bstr_(xdr_schema3_uri), (IXMLDOMNode**)&schema3); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* we get a read-only domdoc interface, created just for us */ - if (schema1) check_refs(IXMLDOMDocument2, schema1, 1); - if (schema2) check_refs(IXMLDOMDocument2, schema2, 1); - if (schema3) check_refs(IXMLDOMDocument2, schema3, 1); + if (schema1) + { + refcount = get_refcount(schema1); + ok(refcount == 1, "Unexpected refcount %ld.\n", refcount); + } - ole_expect(IXMLDOMSchemaCollection_addCollection(cache1, NULL), E_POINTER); - ole_check(IXMLDOMSchemaCollection_addCollection(cache2, cache1)); - ole_check(IXMLDOMSchemaCollection_addCollection(cache3, cache2)); + if (schema2) + { + refcount = get_refcount(schema2); + ok(refcount == 1, "Unexpected refcount %ld.\n", refcount); + } + + if (schema3) + { + refcount = get_refcount(schema3); + ok(refcount == 1, "Unexpected refcount %ld.\n", refcount); + } + + hr = IXMLDOMSchemaCollection_addCollection(cache1, NULL); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMSchemaCollection_addCollection(cache2, cache1); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMSchemaCollection_addCollection(cache3, cache2); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); length = -1; - ole_check(IXMLDOMSchemaCollection_get_length(cache1, &length)); - ok(length == 1, "expected length 1, got %i\n", length); + hr = IXMLDOMSchemaCollection_get_length(cache1, &length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 1, "Unexpected length %ld.\n", length); length = -1; - ole_check(IXMLDOMSchemaCollection_get_length(cache2, &length)); - ok(length == 2, "expected length 2, got %i\n", length); + hr = IXMLDOMSchemaCollection_get_length(cache2, &length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 2, "Unexpected length %ld.\n", length); length = -1; - ole_check(IXMLDOMSchemaCollection_get_length(cache3, &length)); - ok(length == 3, "expected length 3, got %i\n", length); - + hr = IXMLDOMSchemaCollection_get_length(cache3, &length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 3, "Unexpected length %ld.\n", length); /* merging collections does not affect the ref count */ - check_refs(IXMLDOMSchemaCollection, cache1, 1); - check_refs(IXMLDOMSchemaCollection, cache2, 1); - check_refs(IXMLDOMSchemaCollection, cache3, 1); + refcount = get_refcount(cache1); + ok(refcount == 1, "Unexpected refcount %ld.\n", refcount); + refcount = get_refcount(cache2); + ok(refcount == 1, "Unexpected refcount %ld.\n", refcount); + refcount = get_refcount(cache3); + ok(refcount == 1, "Unexpected refcount %ld.\n", refcount); /* nor does it affect the domdoc instances */ - if (schema1) check_refs(IXMLDOMDocument2, schema1, 1); - if (schema2) check_refs(IXMLDOMDocument2, schema2, 1); - if (schema3) check_refs(IXMLDOMDocument2, schema3, 1); + if (schema1) + { + refcount = IXMLDOMDocument2_Release(schema1); + ok(!refcount, "Unexpected refcount %ld.\n", refcount); + } + + if (schema2) + { + refcount = IXMLDOMDocument2_Release(schema2); + ok(!refcount, "Unexpected refcount %ld.\n", refcount); + } + + if (schema3) + { + refcount = IXMLDOMDocument2_Release(schema3); + ok(!refcount, "Unexpected refcount %ld.\n", refcount); + } - if (schema1) check_ref_expr(IXMLDOMDocument2_Release(schema1), 0); - if (schema2) check_ref_expr(IXMLDOMDocument2_Release(schema2), 0); - if (schema3) check_ref_expr(IXMLDOMDocument2_Release(schema3), 0); schema1 = NULL; schema2 = NULL; schema3 = NULL; /* releasing the domdoc instances doesn't change the cache */ - ole_check(IXMLDOMSchemaCollection_get(cache1, _bstr_(xdr_schema1_uri), (IXMLDOMNode**)&schema1)); - ole_check(IXMLDOMSchemaCollection_get(cache2, _bstr_(xdr_schema2_uri), (IXMLDOMNode**)&schema2)); - ole_check(IXMLDOMSchemaCollection_get(cache3, _bstr_(xdr_schema3_uri), (IXMLDOMNode**)&schema3)); + hr = IXMLDOMSchemaCollection_get(cache1, _bstr_(xdr_schema1_uri), (IXMLDOMNode**)&schema1); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMSchemaCollection_get(cache2, _bstr_(xdr_schema2_uri), (IXMLDOMNode**)&schema2); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMSchemaCollection_get(cache3, _bstr_(xdr_schema3_uri), (IXMLDOMNode**)&schema3); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* we can just get them again */ - if (schema1) check_refs(IXMLDOMDocument2, schema1, 1); - if (schema2) check_refs(IXMLDOMDocument2, schema2, 1); - if (schema3) check_refs(IXMLDOMDocument2, schema3, 1); + if (schema1) + { + refcount = get_refcount(schema1); + ok(refcount == 1, "Unexpected refcount %ld.\n", refcount); + } + + if (schema2) + { + refcount = get_refcount(schema2); + ok(refcount == 1, "Unexpected refcount %ld.\n", refcount); + } + + if (schema3) + { + refcount = get_refcount(schema3); + ok(refcount == 1, "Unexpected refcount %ld.\n", refcount); + } /* releasing the caches does not affect the domdoc instances */ - check_ref_expr(IXMLDOMSchemaCollection_Release(cache1), 0); - check_ref_expr(IXMLDOMSchemaCollection_Release(cache2), 0); - check_ref_expr(IXMLDOMSchemaCollection_Release(cache3), 0); + refcount = IXMLDOMSchemaCollection_Release(cache1); + ok(!refcount, "Unexpected refcount %ld.\n", refcount); + refcount = IXMLDOMSchemaCollection_Release(cache2); + ok(!refcount, "Unexpected refcount %ld.\n", refcount); + refcount = IXMLDOMSchemaCollection_Release(cache3); + ok(!refcount, "Unexpected refcount %ld.\n", refcount); /* they're just for us */ - if (schema1) check_refs(IXMLDOMDocument2, schema1, 1); - if (schema2) check_refs(IXMLDOMDocument2, schema2, 1); - if (schema3) check_refs(IXMLDOMDocument2, schema3, 1); - - if (schema1) check_ref_expr(IXMLDOMDocument2_Release(schema1), 0); - if (schema2) check_ref_expr(IXMLDOMDocument2_Release(schema2), 0); - if (schema3) check_ref_expr(IXMLDOMDocument2_Release(schema3), 0); + if (schema1) + { + refcount = IXMLDOMDocument2_Release(schema1); + ok(!refcount, "Unexpected refcount %ld.\n", refcount); + } + if (schema2) + { + refcount = IXMLDOMDocument2_Release(schema2); + ok(!refcount, "Unexpected refcount %ld.\n", refcount); + } + if (schema3) + { + refcount = IXMLDOMDocument2_Release(schema3); + ok(!refcount, "Unexpected refcount %ld.\n", refcount); + } free_bstrs(); } @@ -787,6 +822,7 @@ static void test_length(void) IXMLDOMDocument2 *schema1, *schema2, *schema3; IXMLDOMSchemaCollection *cache; VARIANT_BOOL b; + HRESULT hr; VARIANT v; LONG length; @@ -809,62 +845,81 @@ static void test_length(void) VariantInit(&v); - ole_check(IXMLDOMDocument2_loadXML(schema1, _bstr_(xdr_schema1_xml), &b)); + hr = IXMLDOMDocument2_loadXML(schema1, _bstr_(xdr_schema1_xml), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML\n"); - ole_check(IXMLDOMDocument2_loadXML(schema2, _bstr_(xdr_schema2_xml), &b)); + hr = IXMLDOMDocument2_loadXML(schema2, _bstr_(xdr_schema2_xml), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML\n"); - ole_check(IXMLDOMDocument2_loadXML(schema3, _bstr_(xdr_schema3_xml), &b)); + hr = IXMLDOMDocument2_loadXML(schema3, _bstr_(xdr_schema3_xml), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML\n"); - ole_expect(IXMLDOMSchemaCollection_get_length(cache, NULL), E_POINTER); + hr = IXMLDOMSchemaCollection_get_length(cache, NULL); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); /* MSDN lies; removing a nonexistent entry produces no error */ - ole_check(IXMLDOMSchemaCollection_remove(cache, NULL)); - ole_check(IXMLDOMSchemaCollection_remove(cache, _bstr_(xdr_schema1_uri))); + hr = IXMLDOMSchemaCollection_remove(cache, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMSchemaCollection_remove(cache, _bstr_(xdr_schema1_uri)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); length = -1; - ole_check(IXMLDOMSchemaCollection_get_length(cache, &length)); - ok(length == 0, "expected length 0, got %i\n", length); + hr = IXMLDOMSchemaCollection_get_length(cache, &length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 0, "Unexpected length %ld.\n", length); - ole_check(IXMLDOMSchemaCollection_add(cache, _bstr_(xdr_schema1_uri), _variantdoc_(schema1))); + hr = IXMLDOMSchemaCollection_add(cache, _bstr_(xdr_schema1_uri), _variantdoc_(schema1)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); length = -1; - ole_check(IXMLDOMSchemaCollection_get_length(cache, &length)); - ok(length == 1, "expected length 1, got %i\n", length); + hr = IXMLDOMSchemaCollection_get_length(cache, &length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 1, "Unexpected length %ld.\n", length); - ole_check(IXMLDOMSchemaCollection_add(cache, _bstr_(xdr_schema2_uri), _variantdoc_(schema2))); + hr = IXMLDOMSchemaCollection_add(cache, _bstr_(xdr_schema2_uri), _variantdoc_(schema2)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); length = -1; - ole_check(IXMLDOMSchemaCollection_get_length(cache, &length)); - ok(length == 2, "expected length 2, got %i\n", length); + hr = IXMLDOMSchemaCollection_get_length(cache, &length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 2, "Unexpected length %ld.\n", length); - ole_check(IXMLDOMSchemaCollection_add(cache, _bstr_(xdr_schema3_uri), _variantdoc_(schema3))); + hr = IXMLDOMSchemaCollection_add(cache, _bstr_(xdr_schema3_uri), _variantdoc_(schema3)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); length = -1; - ole_check(IXMLDOMSchemaCollection_get_length(cache, &length)); - ok(length == 3, "expected length 3, got %i\n", length); + hr = IXMLDOMSchemaCollection_get_length(cache, &length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 3, "Unexpected length %ld.\n", length); /* adding with VT_NULL is the same as removing */ V_VT(&v) = VT_NULL; - ole_check(IXMLDOMSchemaCollection_add(cache, _bstr_(xdr_schema1_uri), v)); + hr = IXMLDOMSchemaCollection_add(cache, _bstr_(xdr_schema1_uri), v); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); length = -1; - ole_check(IXMLDOMSchemaCollection_get_length(cache, &length)); - ok(length == 2, "expected length 2, got %i\n", length); + hr = IXMLDOMSchemaCollection_get_length(cache, &length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 2, "Unexpected length %ld.\n", length); - ole_check(IXMLDOMSchemaCollection_remove(cache, _bstr_(xdr_schema2_uri))); + hr = IXMLDOMSchemaCollection_remove(cache, _bstr_(xdr_schema2_uri)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); length = -1; - ole_check(IXMLDOMSchemaCollection_get_length(cache, &length)); - ok(length == 1, "expected length 1, got %i\n", length); + hr = IXMLDOMSchemaCollection_get_length(cache, &length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 1, "Unexpected length %ld.\n", length); - ole_check(IXMLDOMSchemaCollection_remove(cache, _bstr_(xdr_schema3_uri))); + hr = IXMLDOMSchemaCollection_remove(cache, _bstr_(xdr_schema3_uri)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); length = -1; - ole_check(IXMLDOMSchemaCollection_get_length(cache, &length)); - ok(length == 0, "expected length 0, got %i\n", length); + hr = IXMLDOMSchemaCollection_get_length(cache, &length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 0, "Unexpected length %ld.\n", length); IXMLDOMDocument2_Release(schema1); IXMLDOMDocument2_Release(schema2); @@ -876,9 +931,9 @@ static void test_length(void) static void test_collection_content(void) { - IXMLDOMDocument2 *schema1, *schema2, *schema3, *schema4, *schema5; + IXMLDOMDocument2 *schema1, *schema2, *schema3; BSTR content[5] = {NULL, NULL, NULL, NULL, NULL}; - IXMLDOMSchemaCollection *cache1, *cache2; + IXMLDOMSchemaCollection *cache1; VARIANT_BOOL b; LONG length; HRESULT hr; @@ -890,7 +945,6 @@ static void test_collection_content(void) schema3 = create_document_version(30, &IID_IXMLDOMDocument2); cache1 = create_cache_version(30, &IID_IXMLDOMSchemaCollection); - cache2 = create_cache_version(40, &IID_IXMLDOMSchemaCollection); if (!schema1 || !schema2 || !schema3 || !cache1) { @@ -903,102 +957,69 @@ static void test_collection_content(void) return; } - ole_check(IXMLDOMDocument2_loadXML(schema1, _bstr_(xdr_schema1_xml), &b)); + hr = IXMLDOMDocument2_loadXML(schema1, _bstr_(xdr_schema1_xml), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML\n"); - ole_check(IXMLDOMDocument2_loadXML(schema2, _bstr_(xdr_schema2_xml), &b)); + hr = IXMLDOMDocument2_loadXML(schema2, _bstr_(xdr_schema2_xml), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML\n"); - ole_check(IXMLDOMDocument2_loadXML(schema3, _bstr_(xdr_schema3_xml), &b)); + hr = IXMLDOMDocument2_loadXML(schema3, _bstr_(xdr_schema3_xml), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML\n"); - ole_check(IXMLDOMSchemaCollection_add(cache1, _bstr_(xdr_schema1_uri), _variantdoc_(schema1))); - ole_check(IXMLDOMSchemaCollection_add(cache1, _bstr_(xdr_schema2_uri), _variantdoc_(schema2))); - ole_check(IXMLDOMSchemaCollection_add(cache1, _bstr_(xdr_schema3_uri), _variantdoc_(schema3))); + hr = IXMLDOMSchemaCollection_add(cache1, _bstr_(xdr_schema1_uri), _variantdoc_(schema1)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMSchemaCollection_add(cache1, _bstr_(xdr_schema2_uri), _variantdoc_(schema2)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMSchemaCollection_add(cache1, _bstr_(xdr_schema3_uri), _variantdoc_(schema3)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); length = -1; - ole_check(IXMLDOMSchemaCollection_get_length(cache1, &length)); - ok(length == 3, "expected length 3, got %i\n", length); + hr = IXMLDOMSchemaCollection_get_length(cache1, &length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 3, "Unexpected length %ld.\n", length); IXMLDOMDocument2_Release(schema1); IXMLDOMDocument2_Release(schema2); IXMLDOMDocument2_Release(schema3); - if (cache2) - { - schema1 = create_document_version(40, &IID_IXMLDOMDocument2); - schema2 = create_document_version(40, &IID_IXMLDOMDocument2); - schema3 = create_document_version(40, &IID_IXMLDOMDocument2); - schema4 = create_document_version(40, &IID_IXMLDOMDocument2); - schema5 = create_document_version(40, &IID_IXMLDOMDocument2); - ole_check(IXMLDOMDocument2_loadXML(schema1, _bstr_(xdr_schema1_xml), &b)); - ok(b == VARIANT_TRUE, "failed to load XML\n"); - ole_check(IXMLDOMDocument2_loadXML(schema2, _bstr_(xdr_schema2_xml), &b)); - ok(b == VARIANT_TRUE, "failed to load XML\n"); - ole_check(IXMLDOMDocument2_loadXML(schema3, _bstr_(xsd_schema1_xml), &b)); - ok(b == VARIANT_TRUE, "failed to load XML\n"); - ole_check(IXMLDOMDocument2_loadXML(schema4, _bstr_(xsd_schema2_xml), &b)); - ok(b == VARIANT_TRUE, "failed to load XML\n"); - ole_check(IXMLDOMDocument2_loadXML(schema5, _bstr_(xsd_schema3_xml), &b)); - ok(b == VARIANT_TRUE, "failed to load XML\n"); - - /* combining XDR and XSD schemas in the same cache is fine */ - ole_check(IXMLDOMSchemaCollection_add(cache2, _bstr_(xdr_schema1_uri), _variantdoc_(schema1))); - ole_check(IXMLDOMSchemaCollection_add(cache2, _bstr_(xdr_schema2_uri), _variantdoc_(schema2))); - ole_check(IXMLDOMSchemaCollection_add(cache2, _bstr_(xsd_schema1_uri), _variantdoc_(schema3))); - ole_check(IXMLDOMSchemaCollection_add(cache2, _bstr_(xsd_schema2_uri), _variantdoc_(schema4))); - ole_check(IXMLDOMSchemaCollection_add(cache2, _bstr_(xsd_schema3_uri), _variantdoc_(schema5))); - - length = -1; - ole_check(IXMLDOMSchemaCollection_get_length(cache2, &length)); - ok(length == 5, "expected length 5, got %i\n", length); - - IXMLDOMDocument2_Release(schema1); - IXMLDOMDocument2_Release(schema2); - IXMLDOMDocument2_Release(schema3); - IXMLDOMDocument2_Release(schema4); - IXMLDOMDocument2_Release(schema5); - } - bstr = (void*)0xdeadbeef; /* error if index is out of range */ hr = IXMLDOMSchemaCollection_get_namespaceURI(cache1, 3, &bstr); - EXPECT_HR(hr, E_FAIL); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(bstr == (void*)0xdeadbeef, "got %p\n", bstr); /* error if return pointer is NULL */ - ole_expect(IXMLDOMSchemaCollection_get_namespaceURI(cache1, 0, NULL), E_POINTER); + hr = IXMLDOMSchemaCollection_get_namespaceURI(cache1, 0, NULL); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); /* pointer is checked first */ - ole_expect(IXMLDOMSchemaCollection_get_namespaceURI(cache1, 3, NULL), E_POINTER); + hr = IXMLDOMSchemaCollection_get_namespaceURI(cache1, 3, NULL); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); schema1 = NULL; /* no error if ns uri does not exist */ - ole_check(IXMLDOMSchemaCollection_get(cache1, _bstr_(xsd_schema1_uri), (IXMLDOMNode**)&schema1)); + hr = IXMLDOMSchemaCollection_get(cache1, _bstr_(xsd_schema1_uri), (IXMLDOMNode**)&schema1); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!schema1, "expected NULL\n"); /* a NULL bstr corresponds to no-uri ns */ - ole_check(IXMLDOMSchemaCollection_get(cache1, NULL, (IXMLDOMNode**)&schema1)); + hr = IXMLDOMSchemaCollection_get(cache1, NULL, (IXMLDOMNode**)&schema1); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!schema1, "expected NULL\n"); /* error if return pointer is NULL */ - ole_expect(IXMLDOMSchemaCollection_get(cache1, _bstr_(xdr_schema1_uri), NULL), E_POINTER); + hr = IXMLDOMSchemaCollection_get(cache1, _bstr_(xdr_schema1_uri), NULL); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); for (i = 0; i < 3; ++i) { bstr = NULL; - ole_check(IXMLDOMSchemaCollection_get_namespaceURI(cache1, i, &bstr)); + hr = IXMLDOMSchemaCollection_get_namespaceURI(cache1, i, &bstr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(bstr != NULL && *bstr, "expected non-empty string\n"); -#if __REACTOS__ - if (bstr != NULL && *bstr) - { - content[i] = bstr; - for (j = 0; j < i; ++j) - ok(wcscmp(content[j], bstr), "got duplicate entry\n"); - } -#else content[i] = bstr; for (j = 0; j < i; ++j) - ok(winetest_strcmpW(content[j], bstr), "got duplicate entry\n"); -#endif - + ok(wcscmp(content[j], bstr), "got duplicate entry\n"); } for (i = 0; i < 3; ++i) @@ -1007,206 +1028,17 @@ static void test_collection_content(void) content[i] = NULL; } - if (cache2) - { - for (i = 0; i < 5; ++i) - { - bstr = NULL; - ole_check(IXMLDOMSchemaCollection_get_namespaceURI(cache2, i, &bstr)); - ok(bstr != NULL && *bstr, "expected non-empty string\n"); - -#if __REACTOS__ - if (bstr != NULL && *bstr) - { - for (j = 0; j < i; ++j) - ok(wcscmp(content[j], bstr), "got duplicate entry\n"); - } -#else - for (j = 0; j < i; ++j) - ok(winetest_strcmpW(content[j], bstr), "got duplicate entry\n"); -#endif - content[i] = bstr; - } - - for (i = 0; i < 5; ++i) - { - SysFreeString(content[i]); - content[i] = NULL; - } - } - IXMLDOMSchemaCollection_Release(cache1); - if (cache2) IXMLDOMSchemaCollection_Release(cache2); - free_bstrs(); } -static HRESULT validate_regex_document(IXMLDOMDocument2 *doc, IXMLDOMDocument2 *schema, IXMLDOMSchemaCollection* cache, - const WCHAR *regex, const WCHAR *input) -{ - static const WCHAR regex_doc[] = -L"" -"" -"%s"; - - static const WCHAR regex_schema[] = -L"" -"" -" " -" " -" " -" " -" " -" " -" " -""; - - WCHAR buffer[1024]; - IXMLDOMParseError* err; - VARIANT v; - VARIANT_BOOL b; - BSTR namespace; - BSTR bstr; - HRESULT hr; - - VariantInit(&v); - -#ifdef __REACTOS__ - swprintf(buffer, regex_doc, input); -#else - swprintf(buffer, ARRAY_SIZE(buffer), regex_doc, input); -#endif - bstr = SysAllocString(buffer); - ole_check(IXMLDOMDocument2_loadXML(doc, bstr, &b)); - ok(b == VARIANT_TRUE, "failed to load XML\n"); - SysFreeString(bstr); - -#ifdef __REACTOS__ - swprintf(buffer, regex_schema, regex); -#else - swprintf(buffer, ARRAY_SIZE(buffer), regex_schema, regex); -#endif - bstr = SysAllocString(buffer); - ole_check(IXMLDOMDocument2_loadXML(schema, bstr, &b)); - ok(b == VARIANT_TRUE, "failed to load XML\n"); - SysFreeString(bstr); - - /* add the schema to the cache */ - V_VT(&v) = VT_DISPATCH; - V_DISPATCH(&v) = NULL; - ole_check(IXMLDOMDocument2_QueryInterface(schema, &IID_IDispatch, (void**)&V_DISPATCH(&v))); - ok(V_DISPATCH(&v) != NULL, "failed to get IDispatch interface\n"); - namespace = alloc_str_from_narrow("urn:test"); - hr = IXMLDOMSchemaCollection_add(cache, namespace, v); - SysFreeString(namespace); - VariantClear(&v); - if (FAILED(hr)) - return hr; - - /* associate the cache to the doc */ - V_VT(&v) = VT_DISPATCH; - V_DISPATCH(&v) = NULL; - ole_check(IXMLDOMSchemaCollection_QueryInterface(cache, &IID_IDispatch, (void**)&V_DISPATCH(&v))); - ok(V_DISPATCH(&v) != NULL, "failed to get IDispatch interface\n"); - ole_check(IXMLDOMDocument2_putref_schemas(doc, v)); - VariantClear(&v); - - /* validate the doc - * only declared elements in the declared order - * this is fine */ - err = NULL; - bstr = NULL; - hr = IXMLDOMDocument2_validate(doc, &err); - ok(err != NULL, "domdoc_validate() should always set err\n"); - if (IXMLDOMParseError_get_reason(err, &bstr) != S_FALSE) - trace("got error: %s\n", wine_dbgstr_w(bstr)); - SysFreeString(bstr); - IXMLDOMParseError_Release(err); - - return hr; -} - -static void test_regex(void) -{ - struct regex_test { - const WCHAR *regex; - const WCHAR *input; - }; - - struct regex_test tests[] = { - { L"\\!", L"!" }, - { L"\\\"", L"\"" }, - { L"\\#", L"#" }, - { L"\\$", L"$" }, - { L"\\%", L"%" }, - { L"\\,", L"," }, - { L"\\/", L"/" }, - { L"\\:", L":" }, - { L"\\;", L";" }, - { L"\\=", L"=" }, - { L"\\>", L">" }, - { L"\\@", L"@" }, - { L"\\`", L"`" }, - { L"\\~", L"~" }, - { L"\\uCAFE", L"\xCAFE" }, - /* non-BMP character in surrogate pairs: */ - { L"\\uD83D\\uDE00", L"\xD83D\xDE00" }, - /* "x{,2}" is non-standard and only works on libxml2 <= v2.9.10 */ - { L"x{0,2}", L"x" } - }; - - int i; - - for (i = 0; i < ARRAY_SIZE(tests); i++) - { - IXMLDOMDocument2 *doc40, *doc60; - IXMLDOMDocument2 *schema40, *schema60; - IXMLDOMSchemaCollection *cache40, *cache60; - - doc40 = create_document_version(40, &IID_IXMLDOMDocument2); - doc60 = create_document_version(60, &IID_IXMLDOMDocument2); - schema40 = create_document_version(40, &IID_IXMLDOMDocument2); - schema60 = create_document_version(60, &IID_IXMLDOMDocument2); - cache40 = create_cache_version(40, &IID_IXMLDOMSchemaCollection); - cache60 = create_cache_version(60, &IID_IXMLDOMSchemaCollection); - - if (doc60 && schema60 && cache60) - { - HRESULT hr = validate_regex_document(doc60, schema60, cache60, tests[i].regex, tests[i].input); - ok(hr == S_OK, "got 0x%08x for for version 60 regex %s input %s\n", - hr, wine_dbgstr_w(tests[i].regex), wine_dbgstr_w(tests[i].input)); - if (doc40 && schema40 && cache40) - { - hr = validate_regex_document(doc40, schema40, cache40, tests[i].regex, tests[i].input); - ok(hr == S_OK, "got 0x%08x version 40 regex %s input %s\n", - hr, wine_dbgstr_w(tests[i].regex), wine_dbgstr_w(tests[i].input)); - } - } - else - ok(0, "out of memory\n"); - - if (doc40) - IXMLDOMDocument2_Release(doc40); - if (doc60) - IXMLDOMDocument2_Release(doc60); - if (schema40) - IXMLDOMDocument2_Release(schema40); - if (schema60) - IXMLDOMDocument2_Release(schema60); - if (cache40) - IXMLDOMSchemaCollection_Release(cache40); - if (cache60) - IXMLDOMSchemaCollection_Release(cache60); - } -} - static void test_XDR_schemas(void) { IXMLDOMDocument2 *doc, *schema; IXMLDOMSchemaCollection* cache; IXMLDOMParseError* err; VARIANT_BOOL b; + HRESULT hr; VARIANT v; BSTR bstr; @@ -1225,26 +1057,32 @@ static void test_XDR_schemas(void) VariantInit(&v); - ole_check(IXMLDOMDocument2_loadXML(doc, _bstr_(szOpenSeqXML1), &b)); + hr = IXMLDOMDocument2_loadXML(doc, _bstr_(szOpenSeqXML1), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML string\n"); - ole_check(IXMLDOMDocument2_loadXML(schema, _bstr_(szOpenSeqXDR), &b)); + hr = IXMLDOMDocument2_loadXML(schema, _bstr_(szOpenSeqXDR), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML string\n"); /* load the schema */ V_VT(&v) = VT_DISPATCH; V_DISPATCH(&v) = NULL; - ole_check(IXMLDOMDocument2_QueryInterface(schema, &IID_IDispatch, (void**)&V_DISPATCH(&v))); + hr = IXMLDOMDocument2_QueryInterface(schema, &IID_IDispatch, (void**)&V_DISPATCH(&v)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_DISPATCH(&v) != NULL, "failed to get IDispatch interface\n"); - ole_check(IXMLDOMSchemaCollection_add(cache, _bstr_(""), v)); + hr = IXMLDOMSchemaCollection_add(cache, _bstr_(L""), v); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); VariantClear(&v); /* associate the cache to the doc */ V_VT(&v) = VT_DISPATCH; V_DISPATCH(&v) = NULL; - ole_check(IXMLDOMSchemaCollection_QueryInterface(cache, &IID_IDispatch, (void**)&V_DISPATCH(&v))); + hr = IXMLDOMSchemaCollection_QueryInterface(cache, &IID_IDispatch, (void**)&V_DISPATCH(&v)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_DISPATCH(&v) != NULL, "failed to get IDispatch interface\n"); - ole_check(IXMLDOMDocument2_putref_schemas(doc, v)); + hr = IXMLDOMDocument2_putref_schemas(doc, v); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); VariantClear(&v); /* validate the doc @@ -1252,9 +1090,11 @@ static void test_XDR_schemas(void) * this is fine */ err = NULL; bstr = NULL; - ole_check(IXMLDOMDocument2_validate(doc, &err)); + hr = IXMLDOMDocument2_validate(doc, &err); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(err != NULL, "domdoc_validate() should always set err\n"); - ole_expect(IXMLDOMParseError_get_reason(err, &bstr), S_FALSE); + hr = IXMLDOMParseError_get_reason(err, &bstr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(IXMLDOMParseError_get_reason(err, &bstr) == S_FALSE, "got error: %s\n", wine_dbgstr_w(bstr)); SysFreeString(bstr); IXMLDOMParseError_Release(err); @@ -1262,15 +1102,18 @@ static void test_XDR_schemas(void) /* load the next doc */ IXMLDOMDocument2_Release(doc); doc = create_document(&IID_IXMLDOMDocument2); - ole_check(IXMLDOMDocument2_loadXML(doc, _bstr_(szOpenSeqXML2), &b)); + hr = IXMLDOMDocument2_loadXML(doc, _bstr_(szOpenSeqXML2), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML string\n"); /* associate the cache to the doc */ V_VT(&v) = VT_DISPATCH; V_DISPATCH(&v) = NULL; - ole_check(IXMLDOMSchemaCollection_QueryInterface(cache, &IID_IDispatch, (void**)&V_DISPATCH(&v))); + hr = IXMLDOMSchemaCollection_QueryInterface(cache, &IID_IDispatch, (void**)&V_DISPATCH(&v)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_DISPATCH(&v) != NULL, "failed to get IDispatch interface\n"); - ole_check(IXMLDOMDocument2_putref_schemas(doc, v)); + hr = IXMLDOMDocument2_putref_schemas(doc, v); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); VariantClear(&v); /* validate the doc @@ -1278,9 +1121,11 @@ static void test_XDR_schemas(void) * this is fine */ err = NULL; bstr = NULL; - ole_check(IXMLDOMDocument2_validate(doc, &err)); + hr = IXMLDOMDocument2_validate(doc, &err); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(err != NULL, "domdoc_validate() should always set err\n"); - ole_expect(IXMLDOMParseError_get_reason(err, &bstr), S_FALSE); + hr = IXMLDOMParseError_get_reason(err, &bstr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(IXMLDOMParseError_get_reason(err, &bstr) == S_FALSE, "got error: %s\n", wine_dbgstr_w(bstr)); SysFreeString(bstr); IXMLDOMParseError_Release(err); @@ -1288,22 +1133,26 @@ static void test_XDR_schemas(void) /* load the next doc */ IXMLDOMDocument2_Release(doc); doc = create_document(&IID_IXMLDOMDocument2); - ole_check(IXMLDOMDocument2_loadXML(doc, _bstr_(szOpenSeqXML3), &b)); + hr = IXMLDOMDocument2_loadXML(doc, _bstr_(szOpenSeqXML3), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML string\n"); /* associate the cache to the doc */ V_VT(&v) = VT_DISPATCH; V_DISPATCH(&v) = NULL; - ole_check(IXMLDOMSchemaCollection_QueryInterface(cache, &IID_IDispatch, (void**)&V_DISPATCH(&v))); + hr = IXMLDOMSchemaCollection_QueryInterface(cache, &IID_IDispatch, (void**)&V_DISPATCH(&v)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_DISPATCH(&v) != NULL, "failed to get IDispatch interface\n"); - ole_check(IXMLDOMDocument2_putref_schemas(doc, v)); + hr = IXMLDOMDocument2_putref_schemas(doc, v); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); VariantClear(&v); /* validate the doc * fails, extra elements are only allowed at the end */ err = NULL; bstr = NULL; - ole_expect(IXMLDOMDocument2_validate(doc, &err), S_FALSE); + hr = IXMLDOMDocument2_validate(doc, &err); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(err != NULL, "domdoc_validate() should always set err\n"); todo_wine ok(IXMLDOMParseError_get_reason(err, &bstr) == S_OK, "got error: %s\n", wine_dbgstr_w(bstr)); SysFreeString(bstr); @@ -1312,22 +1161,26 @@ static void test_XDR_schemas(void) /* load the next doc */ IXMLDOMDocument2_Release(doc); doc = create_document(&IID_IXMLDOMDocument2); - ole_check(IXMLDOMDocument2_loadXML(doc, _bstr_(szOpenSeqXML4), &b)); + hr = IXMLDOMDocument2_loadXML(doc, _bstr_(szOpenSeqXML4), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML string\n"); /* associate the cache to the doc */ V_VT(&v) = VT_DISPATCH; V_DISPATCH(&v) = NULL; - ole_check(IXMLDOMSchemaCollection_QueryInterface(cache, &IID_IDispatch, (void**)&V_DISPATCH(&v))); + hr = IXMLDOMSchemaCollection_QueryInterface(cache, &IID_IDispatch, (void**)&V_DISPATCH(&v)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_DISPATCH(&v) != NULL, "failed to get IDispatch interface\n"); - ole_check(IXMLDOMDocument2_putref_schemas(doc, v)); + hr = IXMLDOMDocument2_putref_schemas(doc, v); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); VariantClear(&v); /* validate the doc * fails, undeclared elements are not allowed */ err = NULL; bstr = NULL; - ole_expect(IXMLDOMDocument2_validate(doc, &err), S_FALSE); + hr = IXMLDOMDocument2_validate(doc, &err); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(err != NULL, "domdoc_validate() should always set err\n"); todo_wine ok(IXMLDOMParseError_get_reason(err, &bstr) == S_OK, "got error: %s\n", wine_dbgstr_w(bstr)); SysFreeString(bstr); @@ -1341,41 +1194,41 @@ static void test_XDR_schemas(void) } typedef struct { - const char *query; + const WCHAR *query; enum VARENUM type_schema; - const char *typename; + const WCHAR *typename; BOOL todo; } xdr_datatypes; static const xdr_datatypes xdr_datatypes_data[] = { - { "//Property[Name!text()='testBase64']/Value/base64Data", VT_ARRAY|VT_UI1, "bin.base64" }, - { "//Property[Name!text()='testHex']/Value/hexData", VT_ARRAY|VT_UI1, "bin.hex" }, - { "//Property[Name!text()='testBool']/Value/boolData", VT_BOOL, "boolean" }, - { "//Property[Name!text()='testChar']/Value/charData", VT_I4, "char", TRUE }, - { "//Property[Name!text()='testDate']/Value/dateData", VT_DATE, "date" }, - { "//Property[Name!text()='testDateTime']/Value/dateTimeData", VT_DATE, "dateTime" }, - { "//Property[Name!text()='testDateTimeTz']/Value/dateTimeTzData", VT_DATE, "dateTime.tz" }, - { "//Property[Name!text()='testFixed']/Value/fixedData", VT_CY, "fixed.14.4" }, - { "//Property[Name!text()='testFloat']/Value/floatData", VT_R8, "float" }, - { "//Property[Name!text()='testI1']/Value/i1Data", VT_I1, "i1" }, - { "//Property[Name!text()='testI2']/Value/i2Data", VT_I2, "i2" }, - { "//Property[Name!text()='testI4']/Value/i4Data", VT_I4, "i4" }, - { "//Property[Name!text()='testI8']/Value/i8Data", VT_NULL, "i8", TRUE }, - { "//Property[Name!text()='testInt']/Value/intData", VT_I4, "int" }, - { "//Property[Name!text()='testNmtoken']/Value/nmtokData", VT_BSTR, NULL }, - { "//Property[Name!text()='testNmtokens']/Value/nmtoksData", VT_BSTR, NULL }, - { "//Property[Name!text()='testNumber']/Value/numData", VT_BSTR, "number" }, - { "//Property[Name!text()='testR4']/Value/r4Data", VT_R4, "r4" }, - { "//Property[Name!text()='testR8']/Value/r8Data", VT_R8, "r8" }, - { "//Property[Name!text()='testString']/Value/stringData", VT_BSTR, NULL }, - { "//Property[Name!text()='testTime']/Value/timeData", VT_DATE, "time" }, - { "//Property[Name!text()='testTimeTz']/Value/timeTzData", VT_DATE, "time.tz" }, - { "//Property[Name!text()='testU1']/Value/u1Data", VT_UI1, "ui1" }, - { "//Property[Name!text()='testU2']/Value/u2Data", VT_UI2, "ui2" }, - { "//Property[Name!text()='testU4']/Value/u4Data", VT_UI4, "ui4" }, - { "//Property[Name!text()='testU8']/Value/u8Data", VT_NULL, "ui8", TRUE }, - { "//Property[Name!text()='testURI']/Value/uriData", VT_BSTR, "uri" }, - { "//Property[Name!text()='testUUID']/Value/uuidData", VT_BSTR, "uuid" }, + { L"//Property[Name!text()='testBase64']/Value/base64Data", VT_ARRAY|VT_UI1, L"bin.base64" }, + { L"//Property[Name!text()='testHex']/Value/hexData", VT_ARRAY|VT_UI1, L"bin.hex" }, + { L"//Property[Name!text()='testBool']/Value/boolData", VT_BOOL, L"boolean" }, + { L"//Property[Name!text()='testChar']/Value/charData", VT_I4, L"char", TRUE }, + { L"//Property[Name!text()='testDate']/Value/dateData", VT_DATE, L"date" }, + { L"//Property[Name!text()='testDateTime']/Value/dateTimeData", VT_DATE, L"dateTime" }, + { L"//Property[Name!text()='testDateTimeTz']/Value/dateTimeTzData", VT_DATE, L"dateTime.tz" }, + { L"//Property[Name!text()='testFixed']/Value/fixedData", VT_CY, L"fixed.14.4" }, + { L"//Property[Name!text()='testFloat']/Value/floatData", VT_R8, L"float" }, + { L"//Property[Name!text()='testI1']/Value/i1Data", VT_I1, L"i1" }, + { L"//Property[Name!text()='testI2']/Value/i2Data", VT_I2, L"i2" }, + { L"//Property[Name!text()='testI4']/Value/i4Data", VT_I4, L"i4" }, + { L"//Property[Name!text()='testI8']/Value/i8Data", VT_NULL, L"i8", TRUE }, + { L"//Property[Name!text()='testInt']/Value/intData", VT_I4, L"int" }, + { L"//Property[Name!text()='testNmtoken']/Value/nmtokData", VT_BSTR, NULL }, + { L"//Property[Name!text()='testNmtokens']/Value/nmtoksData", VT_BSTR, NULL }, + { L"//Property[Name!text()='testNumber']/Value/numData", VT_BSTR, L"number" }, + { L"//Property[Name!text()='testR4']/Value/r4Data", VT_R4, L"r4" }, + { L"//Property[Name!text()='testR8']/Value/r8Data", VT_R8, L"r8" }, + { L"//Property[Name!text()='testString']/Value/stringData", VT_BSTR, NULL }, + { L"//Property[Name!text()='testTime']/Value/timeData", VT_DATE, L"time" }, + { L"//Property[Name!text()='testTimeTz']/Value/timeTzData", VT_DATE, L"time.tz" }, + { L"//Property[Name!text()='testU1']/Value/u1Data", VT_UI1, L"ui1" }, + { L"//Property[Name!text()='testU2']/Value/u2Data", VT_UI2, L"ui2" }, + { L"//Property[Name!text()='testU4']/Value/u4Data", VT_UI4, L"ui4" }, + { L"//Property[Name!text()='testU8']/Value/u8Data", VT_NULL, L"ui8", TRUE }, + { L"//Property[Name!text()='testURI']/Value/uriData", VT_BSTR, L"uri" }, + { L"//Property[Name!text()='testUUID']/Value/uuidData", VT_BSTR, L"uuid" }, { NULL } }; @@ -1408,53 +1261,53 @@ static void test_XDR_datatypes(void) } hr = IXMLDOMDocument2_loadXML(doc, _bstr_(szDatatypeXML), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML string\n"); hr = IXMLDOMDocument2_loadXML(doc2, _bstr_(szDatatypeXML), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML string\n"); hr = IXMLDOMDocument2_loadXML(schema, _bstr_(szDatatypeXDR), &b); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML string\n"); err = NULL; hr = IXMLDOMDocument2_validate(doc, &err); - EXPECT_HR(hr, S_FALSE); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(err != NULL, "domdoc_validate() should always set err\n"); hr = IXMLDOMParseError_get_errorCode(err, &l); - EXPECT_HR(hr, S_OK); - ok(l == E_XML_NODTD, "got %08x\n", l); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(l == E_XML_NODTD, "Unexpected error code %#lx.\n", l); IXMLDOMParseError_Release(err); err = NULL; hr = IXMLDOMDocument2_validate(doc2, &err); - EXPECT_HR(hr, S_FALSE); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(err != NULL, "domdoc_validate() should always set err\n"); hr = IXMLDOMParseError_get_errorCode(err, &l); - EXPECT_HR(hr, S_OK); - ok(l == E_XML_NODTD, "got %08x\n", l); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(l == E_XML_NODTD, "Unexpected error code %#lx.\n", l); IXMLDOMParseError_Release(err); /* now load the schema */ V_VT(&v) = VT_DISPATCH; V_DISPATCH(&v) = NULL; hr = IXMLDOMDocument2_QueryInterface(schema, &IID_IDispatch, (void**)&V_DISPATCH(&v)); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_DISPATCH(&v) != NULL, "failed to get IDispatch interface\n"); - hr = IXMLDOMSchemaCollection_add(cache, _bstr_("urn:x-schema:datatype-test-xdr"), v); - EXPECT_HR(hr, S_OK); + hr = IXMLDOMSchemaCollection_add(cache, _bstr_(L"urn:x-schema:datatype-test-xdr"), v); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); VariantClear(&v); /* associate the cache to the doc */ V_VT(&v) = VT_DISPATCH; V_DISPATCH(&v) = NULL; hr = IXMLDOMSchemaCollection_QueryInterface(cache, &IID_IDispatch, (void**)&V_DISPATCH(&v)); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_DISPATCH(&v) != NULL, "failed to get IDispatch interface\n"); hr = IXMLDOMDocument2_putref_schemas(doc2, v); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); VariantClear(&v); /* validate the doc */ @@ -1462,13 +1315,13 @@ static void test_XDR_datatypes(void) l = 0; bstr = NULL; hr = IXMLDOMDocument2_validate(doc2, &err); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(err != NULL, "domdoc_validate() should always set err\n"); hr = IXMLDOMParseError_get_errorCode(err, &l); - EXPECT_HR(hr, S_FALSE); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMParseError_get_reason(err, &bstr); - EXPECT_HR(hr, S_FALSE); - ok(l == 0, "got %08x : %s\n", l, wine_dbgstr_w(bstr)); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + ok(l == 0, "Unexpected value %lx : %s\n", l, wine_dbgstr_w(bstr)); SysFreeString(bstr); IXMLDOMParseError_Release(err); @@ -1480,20 +1333,20 @@ static void test_XDR_datatypes(void) /* check data types without the schema */ hr = IXMLDOMDocument2_selectSingleNode(doc, _bstr_(ptr->query), &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(node != NULL, "expected node\n"); V_VT(&type) = VT_EMPTY; V_BSTR(&type) = (void*)-1; hr = IXMLDOMNode_get_dataType(node, &type); - EXPECT_HR(hr, S_FALSE); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(V_VT(&type) == VT_NULL, "got type %i\n", V_VT(&type)); /* when returning VT_NULL, the pointer is set to NULL */ ok(V_BSTR(&type) == NULL, "got %p\n", V_BSTR(&type)); VariantClear(&type); hr = IXMLDOMNode_get_nodeTypedValue(node, &type); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&type) == VT_BSTR, "got variant type %i\n", V_VT(&v)); VariantClear(&type); IXMLDOMNode_Release(node); @@ -1501,30 +1354,30 @@ static void test_XDR_datatypes(void) /* check the data with schema */ node = NULL; hr = IXMLDOMDocument2_selectSingleNode(doc2, _bstr_(ptr->query), &node); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(node != NULL, "expected node\n"); V_VT(&type) = VT_EMPTY; hr = IXMLDOMNode_get_dataType(node, &type); if (ptr->typename) { - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&type) == VT_BSTR, "got type %i\n", V_VT(&type)); ok(!lstrcmpW(V_BSTR(&type), _bstr_(ptr->typename)), "got %s\n", wine_dbgstr_w(V_BSTR(&type))); } else { - EXPECT_HR(hr, S_FALSE); - ok(V_VT(&type) == VT_NULL, "%s: got type %i\n", ptr->query, V_VT(&type)); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + ok(V_VT(&type) == VT_NULL, "%s: got type %i\n", wine_dbgstr_w(ptr->query), V_VT(&type)); } VariantClear(&type); VariantClear(&v); hr = IXMLDOMNode_get_nodeTypedValue(node, &v); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine_if(ptr->todo) - ok(V_VT(&v) == ptr->type_schema, "%s: got variant type %i\n", ptr->query, V_VT(&v)); + ok(V_VT(&v) == ptr->type_schema, "%s: got variant type %i\n", wine_dbgstr_w(ptr->query), V_VT(&v)); switch (ptr->type_schema) { @@ -1538,13 +1391,13 @@ static void test_XDR_datatypes(void) ok(V_I2(&v) == 420, "got %i\n", V_I2(&v)); break; case VT_I4: - if (!strcmp(ptr->typename, "int")) - ok(V_I4(&v) == 42, "got %i\n", V_I4(&v)); - else if (!strcmp(ptr->typename, "char")) + if (!wcscmp(ptr->typename, L"int")) + ok(V_I4(&v) == 42, "got %ld\n", V_I4(&v)); + else if (!wcscmp(ptr->typename, L"char")) todo_wine - ok(V_I4(&v) == 'u', "got %x\n", V_I4(&v)); + ok(V_I4(&v) == 'u', "got %lx\n", V_I4(&v)); else - ok(V_I4(&v) == -420000000, "got %i\n", V_I4(&v)); + ok(V_I4(&v) == -420000000, "got %ld\n", V_I4(&v)); break; case VT_I8: expect_int64(V_I8(&v), -4200000000, 10); @@ -1553,7 +1406,7 @@ static void test_XDR_datatypes(void) ok(V_R4(&v) == (float)3.14159265, "got %f\n", V_R4(&v)); break; case VT_R8: - if (!strcmp(ptr->typename, "float")) + if (!wcscmp(ptr->typename, L"float")) ok(V_R8(&v) == 3.14159, "got %f\n", V_R8(&v)); else todo_wine @@ -1566,7 +1419,7 @@ static void test_XDR_datatypes(void) ok(V_UI2(&v) == 0xFFFF, "got %04x\n", V_UI2(&v)); break; case VT_UI4: - ok(V_UI4(&v) == 0xFFFFFFFF, "got %08x\n", V_UI4(&v)); + ok(V_UI4(&v) == 0xFFFFFFFF, "got %#lx\n", V_UI4(&v)); break; case VT_UI8: expect_uint64(V_UI8(&v), 0xFFFFFFFFFFFFFFFF, 16); @@ -1590,26 +1443,6 @@ static void test_XDR_datatypes(void) free_bstrs(); } -static void test_validate_on_load(void) -{ - IXMLDOMSchemaCollection2 *cache; - VARIANT_BOOL b; - HRESULT hr; - - cache = create_cache_version(40, &IID_IXMLDOMSchemaCollection2); - if (!cache) return; - - hr = IXMLDOMSchemaCollection2_get_validateOnLoad(cache, NULL); - EXPECT_HR(hr, E_POINTER); - - b = VARIANT_FALSE; - hr = IXMLDOMSchemaCollection2_get_validateOnLoad(cache, &b); - EXPECT_HR(hr, S_OK); - ok(b == VARIANT_TRUE, "got %d\n", b); - - IXMLDOMSchemaCollection2_Release(cache); -} - static void test_obj_dispex(IUnknown *obj) { DISPID dispid = DISPID_SAX_XMLREADER_GETFEATURE; @@ -1621,42 +1454,42 @@ static void test_obj_dispex(IUnknown *obj) BSTR name; hr = IUnknown_QueryInterface(obj, &IID_IDispatchEx, (void**)&dispex); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); if (FAILED(hr)) return; ticnt = 0; hr = IDispatchEx_GetTypeInfoCount(dispex, &ticnt); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(ticnt == 1, "ticnt=%u\n", ticnt); name = SysAllocString(L"*"); hr = IDispatchEx_DeleteMemberByName(dispex, name, fdexNameCaseSensitive); - EXPECT_HR(hr, E_NOTIMPL); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); SysFreeString(name); hr = IDispatchEx_DeleteMemberByDispID(dispex, dispid); - EXPECT_HR(hr, E_NOTIMPL); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); props = 0; hr = IDispatchEx_GetMemberProperties(dispex, dispid, grfdexPropCanAll, &props); - EXPECT_HR(hr, E_NOTIMPL); - ok(props == 0, "expected 0 got %d\n", props); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); + ok(props == 0, "expected 0 got %ld\n", props); hr = IDispatchEx_GetMemberName(dispex, dispid, &name); - EXPECT_HR(hr, E_NOTIMPL); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); if (SUCCEEDED(hr)) SysFreeString(name); hr = IDispatchEx_GetNextDispID(dispex, fdexEnumDefault, DISPID_XMLDOM_SCHEMACOLLECTION_ADD, &dispid); - EXPECT_HR(hr, E_NOTIMPL); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); unk = (IUnknown*)0xdeadbeef; hr = IDispatchEx_GetNameSpaceParent(dispex, &unk); - EXPECT_HR(hr, E_NOTIMPL); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); ok(unk == (IUnknown*)0xdeadbeef, "got %p\n", unk); name = SysAllocString(L"testprop"); hr = IDispatchEx_GetDispID(dispex, name, fdexNameEnsure, &dispid); - ok(hr == DISP_E_UNKNOWNNAME, "got 0x%08x\n", hr); + ok(hr == DISP_E_UNKNOWNNAME, "Unexpected hr %#lx.\n", hr); SysFreeString(name); IDispatchEx_Release(dispex); @@ -1675,12 +1508,12 @@ static void test_dispex(void) if (!cache) return; hr = IXMLDOMSchemaCollection_QueryInterface(cache, &IID_IUnknown, (void**)&unk); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); test_obj_dispex(unk); IUnknown_Release(unk); hr = IXMLDOMSchemaCollection_QueryInterface(cache, &IID_IDispatchEx, (void**)&dispex); - ok(hr == S_OK, "got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&arg) = VT_I4; V_I4(&arg) = 0; @@ -1692,159 +1525,12 @@ static void test_dispex(void) V_VT(&ret) = VT_EMPTY; V_DISPATCH(&ret) = (void*)0x1; hr = IDispatchEx_Invoke(dispex, DISPID_VALUE, &IID_NULL, 0, DISPATCH_METHOD, &dispparams, &ret, NULL, NULL); - ok(hr == DISP_E_MEMBERNOTFOUND, "got 0x%08x\n", hr); + ok(hr == DISP_E_MEMBERNOTFOUND, "Unexpected hr %#lx.\n", hr); ok(V_VT(&ret) == VT_EMPTY, "got %d\n", V_VT(&ret)); ok(V_DISPATCH(&ret) == (void*)0x1, "got %p\n", V_DISPATCH(&ret)); IDispatchEx_Release(dispex); IXMLDOMSchemaCollection_Release(cache); - - cache = create_cache_version(60, &IID_IXMLDOMSchemaCollection); - if (cache) - { - test_obj_dispex((IUnknown*)cache); - IXMLDOMSchemaCollection_Release(cache); - } -} - -static void test_get(void) -{ - IXMLDOMSchemaCollection2 *cache; - IXMLDOMNode *node; - HRESULT hr; - - cache = create_cache_version(60, &IID_IXMLDOMSchemaCollection2); - if (!cache) return; - - hr = IXMLDOMSchemaCollection2_get(cache, NULL, NULL); - ok(hr == E_NOTIMPL || hr == E_POINTER /* win8 */, "got %08x\n", hr); - - hr = IXMLDOMSchemaCollection2_get(cache, _bstr_("uri"), &node); - EXPECT_HR(hr, E_NOTIMPL); - - IXMLDOMSchemaCollection2_Release(cache); - - cache = create_cache_version(40, &IID_IXMLDOMSchemaCollection2); - if (!cache) return; - - hr = IXMLDOMSchemaCollection2_get(cache, NULL, NULL); - EXPECT_HR(hr, E_POINTER); - - hr = IXMLDOMSchemaCollection2_get(cache, _bstr_("uri"), &node); - EXPECT_HR(hr, S_OK); - - IXMLDOMSchemaCollection2_Release(cache); - free_bstrs(); -} - -static void test_remove(void) -{ - IXMLDOMSchemaCollection2 *cache; - IXMLDOMDocument *doc; - VARIANT_BOOL b; - HRESULT hr; - VARIANT v; - LONG len; - - cache = create_cache_version(60, &IID_IXMLDOMSchemaCollection2); - if (!cache) return; - - doc = create_document_version(60, &IID_IXMLDOMDocument); - ok(doc != NULL, "got %p\n", doc); - - hr = IXMLDOMDocument_loadXML(doc, _bstr_(xsd_schema1_xml), &b); - EXPECT_HR(hr, S_OK); - - V_VT(&v) = VT_DISPATCH; - V_DISPATCH(&v) = (IDispatch*)doc; - hr = IXMLDOMSchemaCollection2_add(cache, _bstr_(xsd_schema1_uri), v); - EXPECT_HR(hr, S_OK); - - len = -1; - hr = IXMLDOMSchemaCollection2_get_length(cache, &len); - EXPECT_HR(hr, S_OK); - ok(len == 1, "got %d\n", len); - - /* ::remove() is a stub for version 6 */ - hr = IXMLDOMSchemaCollection2_remove(cache, NULL); - EXPECT_HR(hr, E_NOTIMPL); - - hr = IXMLDOMSchemaCollection2_remove(cache, _bstr_("invaliduri")); - EXPECT_HR(hr, E_NOTIMPL); - - hr = IXMLDOMSchemaCollection2_remove(cache, _bstr_(xsd_schema1_uri)); - EXPECT_HR(hr, E_NOTIMPL); - - len = -1; - hr = IXMLDOMSchemaCollection2_get_length(cache, &len); - EXPECT_HR(hr, S_OK); - ok(len == 1, "got %d\n", len); - - IXMLDOMDocument_Release(doc); - IXMLDOMSchemaCollection2_Release(cache); - free_bstrs(); - - /* ::remove() works for version 4 */ - cache = create_cache_version(40, &IID_IXMLDOMSchemaCollection2); - if (!cache) return; - - doc = create_document_version(40, &IID_IXMLDOMDocument); - ok(doc != NULL, "got %p\n", doc); - - hr = IXMLDOMDocument_loadXML(doc, _bstr_(xsd_schema1_xml), &b); - EXPECT_HR(hr, S_OK); - - V_VT(&v) = VT_DISPATCH; - V_DISPATCH(&v) = (IDispatch*)doc; - hr = IXMLDOMSchemaCollection2_add(cache, _bstr_(xsd_schema1_uri), v); - EXPECT_HR(hr, S_OK); - - len = -1; - hr = IXMLDOMSchemaCollection2_get_length(cache, &len); - EXPECT_HR(hr, S_OK); - ok(len == 1, "got %d\n", len); - - hr = IXMLDOMSchemaCollection2_remove(cache, NULL); - EXPECT_HR(hr, S_OK); - - hr = IXMLDOMSchemaCollection2_remove(cache, _bstr_("invaliduri")); - EXPECT_HR(hr, S_OK); - - len = -1; - hr = IXMLDOMSchemaCollection2_get_length(cache, &len); - EXPECT_HR(hr, S_OK); - ok(len == 1, "got %d\n", len); - - hr = IXMLDOMSchemaCollection2_remove(cache, _bstr_(xsd_schema1_uri)); - EXPECT_HR(hr, S_OK); - - len = -1; - hr = IXMLDOMSchemaCollection2_get_length(cache, &len); - EXPECT_HR(hr, S_OK); - ok(len == 0, "got %d\n", len); - - IXMLDOMDocument_Release(doc); - IXMLDOMSchemaCollection2_Release(cache); - - free_bstrs(); -} - -static void test_ifaces(void) -{ - IXMLDOMSchemaCollection2 *cache; - IUnknown *unk; - HRESULT hr; - - cache = create_cache_version(60, &IID_IXMLDOMSchemaCollection2); - if (!cache) return; - - /* CLSID_XMLSchemaCache60 is returned as an interface (the same as IXMLDOMSchemaCollection2). */ - hr = IXMLDOMSchemaCollection2_QueryInterface(cache, &CLSID_XMLSchemaCache60, (void**)&unk); - ok (hr == S_OK, "Could not get CLSID_XMLSchemaCache60 iface: %08x\n", hr); - ok (unk == (IUnknown*)cache, "unk != cache\n"); - - IUnknown_Release(unk); - IXMLDOMSchemaCollection2_Release(cache); } START_TEST(schema) @@ -1858,14 +1544,9 @@ START_TEST(schema) test_collection_refs(); test_length(); test_collection_content(); - test_regex(); test_XDR_schemas(); test_XDR_datatypes(); - test_validate_on_load(); test_dispex(); - test_get(); - test_remove(); - test_ifaces(); CoUninitialize(); } diff --git a/modules/rostests/winetests/msxml3/xmldoc.c b/modules/rostests/winetests/msxml3/xmldoc.c index 359297f592f..484be6a86c1 100644 --- a/modules/rostests/winetests/msxml3/xmldoc.c +++ b/modules/rostests/winetests/msxml3/xmldoc.c @@ -29,9 +29,6 @@ #include "wine/test.h" -#define EXPECT_HR(hr,hr_exp) \ - ok(hr == hr_exp, "got 0x%08x, expected 0x%08x\n", hr, hr_exp) - /* Deprecated Error Code */ #define XML_E_INVALIDATROOTLEVEL 0xc00ce556 @@ -70,10 +67,10 @@ static void create_stream_on_file(IStream **stream, LPCSTR path) ptr = GlobalLock(hglobal); ReadFile(hfile, ptr, file_size, &read, NULL); - ok(file_size == read, "Expected to read the whole file, read %d\n", read); + ok(file_size == read, "Expected to read the whole file, read %ld.\n", read); hr = CreateStreamOnHGlobal(hglobal, TRUE, stream); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(*stream != NULL, "Expected non-NULL stream\n"); CloseHandle(hfile); @@ -95,51 +92,43 @@ static void test_xmldoc(void) HRESULT hr; BSTR name; - static const WCHAR szBankAccount[] = {'B','A','N','K','A','C','C','O','U','N','T',0}; - static const WCHAR szNumber[] = {'N','U','M','B','E','R',0}; - static const WCHAR szNumVal[] = {'1','2','3','4',0}; - static const WCHAR szName[] = {'N','A','M','E',0}; - static const WCHAR szNameVal[] = {'C','a','p','t','a','i','n',' ','A','h','a','b',0}; - static const WCHAR szVersion[] = {'1','.','0',0}; - static const WCHAR rootW[] = {'r','o','o','t',0}; - hr = CoCreateInstance(&CLSID_XMLDocument, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDocument, (void**)&doc); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* IDispatch */ hr = IXMLDocument_QueryInterface(doc, &IID_IDispatch, (void**)&disp); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* just to make sure we're on right type data */ hr = IDispatch_GetTypeInfo(disp, 0, 0, &ti); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); name = NULL; hr = ITypeInfo_GetDocumentation(ti, DISPID_XMLDOCUMENT_ROOT, &name, NULL, NULL, NULL); - EXPECT_HR(hr, S_OK); - ok(!lstrcmpW(name, rootW), "got name %s\n", wine_dbgstr_w(name)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(name, L"root"), "got name %s\n", wine_dbgstr_w(name)); SysFreeString(name); ITypeInfo_Release(ti); IDispatch_Release(disp); hr = IXMLDocument_QueryInterface(doc, &IID_IXMLDOMDocument, (void**)&disp); - EXPECT_HR(hr, E_NOINTERFACE); + ok(hr == E_NOINTERFACE, "Unexpected hr %#lx.\n", hr); create_xml_file("bank.xml"); GetFullPathNameA("bank.xml", MAX_PATH, path, NULL); create_stream_on_file(&stream, path); hr = IXMLDocument_QueryInterface(doc, &IID_IPersistStreamInit, (void**)&psi); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(psi != NULL, "Expected non-NULL psi\n"); hr = IXMLDocument_get_root(doc, &element); - ok(hr == E_FAIL, "Expected E_FAIL, got %08x\n", hr); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(element == NULL, "Expected NULL element\n"); hr = IPersistStreamInit_Load(psi, stream); - ok(hr == S_OK || hr == XML_E_INVALIDATROOTLEVEL, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK || hr == XML_E_INVALIDATROOTLEVEL, "Unexpected hr %#lx.\n", hr); if(hr == XML_E_INVALIDATROOTLEVEL) goto cleanup; @@ -147,94 +136,94 @@ static void test_xmldoc(void) /* version field */ hr = IXMLDocument_get_version(doc, NULL); - ok(hr == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); name = NULL; hr = IXMLDocument_get_version(doc, &name); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(!lstrcmpW(name, szVersion), "Expected 1.0, got %s\n", wine_dbgstr_w(name)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(name, L"1.0"), "Expected 1.0, got %s\n", wine_dbgstr_w(name)); SysFreeString(name); /* doctype */ hr = IXMLDocument_get_doctype(doc, NULL); - ok(hr == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IXMLDocument_get_doctype(doc, &name); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(!lstrcmpW(name, szBankAccount), "Expected BANKACCOUNT, got %s\n", wine_dbgstr_w(name)); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(name, L"BANKACCOUNT"), "Expected BANKACCOUNT, got %s\n", wine_dbgstr_w(name)); SysFreeString(name); hr = IXMLDocument_get_root(doc, &element); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(element != NULL, "Expected non-NULL element\n"); /* ::root() returns new instance each time */ hr = IXMLDocument_get_root(doc, &child); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(child != NULL, "Expected non-NULL element\n"); ok(child != element, "Expected new element instance\n"); IXMLElement_Release(child); hr = IXMLElement_get_type(element, &type); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(type == XMLELEMTYPE_ELEMENT, "Expected XMLELEMTYPE_ELEMENT, got %d\n", type); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(type == XMLELEMTYPE_ELEMENT, "Unexpected type %ld.\n", type); hr = IXMLElement_get_tagName(element, &name); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(!lstrcmpW(name, szBankAccount), "Expected BANKACCOUNT\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(name, L"BANKACCOUNT"), "Expected BANKACCOUNT\n"); SysFreeString(name); hr = IXMLElement_get_children(element, &collection); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(collection != NULL, "Expected non-NULL collection\n"); hr = IXMLElementCollection_get_length(collection, &num_child); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(num_child == 2, "Expected 2, got %d\n", num_child); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(num_child == 2, "Unexpected length %ld.\n", num_child); V_VT(&vIndex) = VT_I4; V_I4(&vIndex) = 0; V_VT(&vName) = VT_ERROR; V_ERROR(&vName) = DISP_E_PARAMNOTFOUND; hr = IXMLElementCollection_item(collection, vIndex, vName, (IDispatch **)&child); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(child != NULL, "Expected non-NULL child\n"); hr = IXMLElement_get_type(child, &type); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(type == XMLELEMTYPE_ELEMENT, "Expected XMLELEMTYPE_ELEMENT, got %d\n", type); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(type == XMLELEMTYPE_ELEMENT, "Unexpected type %ld.\n", type); hr = IXMLElement_get_tagName(child, &name); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(!lstrcmpW(name, szNumber), "Expected NUMBER\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(name, L"NUMBER"), "Expected NUMBER\n"); SysFreeString(name); hr = IXMLElement_get_children(child, &inner); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(inner != NULL, "Expected non-NULL inner\n"); hr = IXMLElementCollection_get_length(inner, &num_child); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(num_child == 1, "Expected 1, got %d\n", num_child); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(num_child == 1, "Unexpected length %ld.\n", num_child); hr = IXMLElementCollection_item(inner, vIndex, vName, (IDispatch **)&value); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(value != NULL, "Expected non-NULL value\n"); hr = IXMLElement_get_type(value, &type); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(type == XMLELEMTYPE_TEXT, "Expected XMLELEMTYPE_TEXT, got %d\n", type); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(type == XMLELEMTYPE_TEXT, "Unexpected type %ld.\n", type); hr = IXMLElement_get_text(value, &name); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(!lstrcmpW(name, szNumVal), "Expected '1234'\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(name, L"1234"), "Expected '1234'\n"); SysFreeString(name); IXMLElementCollection_Release(inner); inner = (IXMLElementCollection *)0xdeadbeef; hr = IXMLElement_get_children(value, &inner); - ok(hr == 1, "Expected 1, got %08x\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(inner == NULL, "Expected NULL inner, got %p\n", inner); IXMLElement_Release(value); @@ -244,45 +233,45 @@ static void test_xmldoc(void) V_I4(&vIndex) = 1; hr = IXMLElementCollection_item(collection, vIndex, vName, (IDispatch **)&child); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(child != NULL, "Expected non-NULL child\n"); hr = IXMLElement_get_type(child, &type); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(type == XMLELEMTYPE_ELEMENT, "Expected XMLELEMTYPE_ELEMENT, got %d\n", type); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(type == XMLELEMTYPE_ELEMENT, "Unexpected type %ld.\n", type); hr = IXMLElement_get_tagName(child, &name); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(!lstrcmpW(name, szName), "Expected NAME\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(name, L"NAME"), "Expected NAME\n"); SysFreeString(name); hr = IXMLElement_get_children(child, &inner); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(inner != NULL, "Expected non-NULL inner\n"); hr = IXMLElementCollection_get_length(inner, &num_child); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(num_child == 1, "Expected 1, got %d\n", num_child); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(num_child == 1, "Unexpected length %ld.\n", num_child); V_I4(&vIndex) = 0; hr = IXMLElementCollection_item(inner, vIndex, vName, (IDispatch **)&value); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(value != NULL, "Expected non-NULL value\n"); hr = IXMLElement_get_type(value, &type); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(type == XMLELEMTYPE_TEXT, "Expected XMLELEMTYPE_TEXT, got %d\n", type); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(type == XMLELEMTYPE_TEXT, "Unexpected type %ld.\n", type); hr = IXMLElement_get_text(value, &name); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(!lstrcmpW(name, szNameVal), "Expected 'Captain Ahab'\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(name, L"Captain Ahab"), "Expected 'Captain Ahab'\n"); SysFreeString(name); IXMLElementCollection_Release(inner); inner = (IXMLElementCollection *)0xdeadbeef; hr = IXMLElement_get_children(value, &inner); - ok(hr == 1, "Expected 1, got %08x\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(inner == NULL, "Expected NULL inner, got %p\n", inner); IXMLElement_Release(value); @@ -307,14 +296,14 @@ static void test_createElement(void) hr = CoCreateInstance(&CLSID_XMLDocument, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDocument, (LPVOID*)&doc); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* invalid vType type */ V_VT(&vType) = VT_NULL; V_VT(&vName) = VT_NULL; element = (IXMLElement *)0xdeadbeef; hr = IXMLDocument_createElement(doc, vType, vName, &element); - ok(hr == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok(element == NULL, "Expected NULL element\n"); /* invalid vType value */ @@ -329,17 +318,16 @@ static void test_createElement(void) if (element != NULL) { hr = IXMLElement_get_type(element, &type); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* SP7 returns an XMLELEMTYPE_ELEMENT */ - ok(type == XMLELEMTYPE_OTHER || type == XMLELEMTYPE_ELEMENT, - "Expected XMLELEMTYPE_OTHER || XMLELEMTYPE_ELEMENT, got %d\n", type); + ok(type == XMLELEMTYPE_OTHER || type == XMLELEMTYPE_ELEMENT, "Unexpected type %ld.\n", type); IXMLElement_Release(element); } } else { - ok(hr == E_NOTIMPL, "Expected E_NOTIMPL, got %08x\n", hr); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); ok(element == NULL, "Expected NULL element\n"); } @@ -348,12 +336,12 @@ static void test_createElement(void) V_I4(&vType) = XMLELEMTYPE_ELEMENT; V_VT(&vName) = VT_I4; hr = IXMLDocument_createElement(doc, vType, vName, &element); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(element != NULL, "Expected non-NULL element\n"); hr = IXMLElement_get_type(element, &type); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(type == XMLELEMTYPE_ELEMENT, "Expected XMLELEMTYPE_ELEMENT, got %d\n", type); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(type == XMLELEMTYPE_ELEMENT, "Unexpected type %ld.\n", type); IXMLElement_Release(element); @@ -362,24 +350,24 @@ static void test_createElement(void) V_I4(&vType) = XMLELEMTYPE_ELEMENT; V_VT(&vName) = VT_I4; hr = IXMLDocument_createElement(doc, vType, vName, NULL); - ok(hr == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); root = (IXMLElement *)0xdeadbeef; hr = IXMLDocument_get_root(doc, &root); - ok(hr == E_FAIL, "Expected E_FAIL, got %08x\n", hr); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(root == NULL, "Expected NULL root\n"); V_VT(&vType) = VT_I4; V_I4(&vType) = XMLELEMTYPE_ELEMENT; V_VT(&vName) = VT_NULL; hr = IXMLDocument_createElement(doc, vType, vName, &element); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(element != NULL, "Expected non-NULL element\n"); /* createElement does not set the new element as root */ root = (IXMLElement *)0xdeadbeef; hr = IXMLDocument_get_root(doc, &root); - ok(hr == E_FAIL, "Expected E_FAIL, got %08x\n", hr); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(root == NULL, "Expected NULL root\n"); IXMLElement_Release(element); @@ -398,31 +386,30 @@ static void test_persiststreaminit(void) CHAR path[MAX_PATH]; CLSID id; BSTR str; - static const WCHAR testW[] = {'t','e','s','t',0}; hr = CoCreateInstance(&CLSID_XMLDocument, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDocument, (LPVOID*)&doc); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDocument_QueryInterface(doc, &IID_IPersistStreamInit, (LPVOID *)&psi); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(psi != NULL, "Expected non-NULL psi\n"); /* null arguments */ hr = IPersistStreamInit_GetSizeMax(psi, NULL); - ok(hr == E_NOTIMPL, "Expected E_NOTIMPL, got %08x\n", hr); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); hr = IPersistStreamInit_Load(psi, NULL); - ok(hr == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IPersistStreamInit_Save(psi, NULL, FALSE); - todo_wine ok(hr == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", hr); + todo_wine ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IPersistStreamInit_GetClassID(psi, NULL); - ok(hr == E_POINTER, "Expected E_POINTER, got %08x\n", hr); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); hr = IPersistStreamInit_IsDirty(psi); - todo_wine ok(hr == S_FALSE, "Expected S_FALSE, got %08x\n", hr); + todo_wine ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); create_xml_file("bank.xml"); GetFullPathNameA("bank.xml", MAX_PATH, path, NULL); @@ -431,73 +418,73 @@ static void test_persiststreaminit(void) /* GetSizeMax not implemented */ size.QuadPart = 0; hr = IPersistStreamInit_GetSizeMax(psi, &size); - ok(hr == E_NOTIMPL, "Expected E_NOTIMPL, got %08x\n", hr); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); ok(size.QuadPart == 0, "Expected 0\n"); hr = IPersistStreamInit_Load(psi, stream); IStream_Release(stream); - ok(hr == S_OK || hr == XML_E_INVALIDATROOTLEVEL, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK || hr == XML_E_INVALIDATROOTLEVEL, "Unexpected hr %#lx.\n", hr); if(hr == XML_E_INVALIDATROOTLEVEL) goto cleanup; hr = IPersistStreamInit_IsDirty(psi); - todo_wine ok(hr == S_FALSE, "Expected S_FALSE, got %08x\n", hr); + todo_wine ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); /* try to save document */ stream = NULL; hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IPersistStreamInit_Save(psi, stream, FALSE); - todo_wine ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + todo_wine ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); stat.cbSize.QuadPart = 0; hr = IStream_Stat(stream, &stat, 0); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine ok(stat.cbSize.QuadPart > 0, "Expected >0\n"); IStream_Release(stream); - str = SysAllocString(testW); + str = SysAllocString(L"test"); hr = IXMLDocument_get_root(doc, &element); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLElement_put_text(element, str); - ok(hr == E_NOTIMPL, "Expected E_NOTIMPL, got %08x\n", hr); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); IXMLElement_Release(element); SysFreeString(str); hr = IPersistStreamInit_IsDirty(psi); - todo_wine ok(hr == S_FALSE, "Expected S_FALSE, got %08x\n", hr); + todo_wine ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); create_stream_on_file(&stream, path); hr = IPersistStreamInit_Load(psi, stream); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); IStream_Release(stream); hr = IPersistStreamInit_IsDirty(psi); - todo_wine ok(hr == S_FALSE, "Expected S_FALSE, got %08x\n", hr); + todo_wine ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); /* reset internal stream */ hr = IPersistStreamInit_InitNew(psi); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IPersistStreamInit_IsDirty(psi); - todo_wine ok(hr == S_FALSE, "Expected S_FALSE, got %08x\n", hr); + todo_wine ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); stream = NULL; hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IPersistStreamInit_Save(psi, stream, FALSE); - todo_wine ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + todo_wine ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); stat.cbSize.QuadPart = 0; hr = IStream_Stat(stream, &stat, 0); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine ok(stat.cbSize.QuadPart > 0, "Expected >0\n"); IStream_Release(stream); memset(&id, 0, sizeof(id)); hr = IPersistStreamInit_GetClassID(psi, &id); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(IsEqualCLSID(&id, &CLSID_XMLDocument), "Expected CLSID_XMLDocument\n"); cleanup: @@ -529,91 +516,91 @@ static void test_xmlelem_children(void) IXMLElement *element = NULL, *child = NULL, *child2 = NULL; IXMLElementCollection *collection = NULL; VARIANT vType, vName, vIndex; - LONG length; + LONG length, refcount; HRESULT hr; hr = CoCreateInstance(&CLSID_XMLDocument, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDocument, (LPVOID*)&doc); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&vType) = VT_I4; V_I4(&vType) = XMLELEMTYPE_ELEMENT; V_VT(&vName) = VT_NULL; hr = IXMLDocument_createElement(doc, vType, vName, &element); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(element != NULL, "Expected non-NULL element\n"); V_VT(&vType) = VT_I4; V_I4(&vType) = XMLELEMTYPE_TEXT; V_VT(&vName) = VT_NULL; hr = IXMLDocument_createElement(doc, vType, vName, &child); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(child != NULL, "Expected non-NULL child\n"); V_VT(&vType) = VT_I4; V_I4(&vType) = XMLELEMTYPE_TEXT; V_VT(&vName) = VT_NULL; hr = IXMLDocument_createElement(doc, vType, vName, &child2); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(child2 != NULL, "Expected non-NULL child\n"); hr = IXMLElement_addChild(element, child, 0, -1); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLElement_get_children(element, &collection); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(collection != NULL, "Expected non-NULL collection\n"); length = 0; hr = IXMLElementCollection_get_length(collection, &length); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(length == 1, "Expected 1, got %08x\n", length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 1, "Unexpected length %ld.\n", length); /* remove/add child and check what happens with collection */ hr = IXMLElement_removeChild(element, child); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); length = -1; hr = IXMLElementCollection_get_length(collection, &length); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(length == 0, "Expected 0, got %08x\n", length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!length, "Unexpected length %ld.\n", length); IXMLElementCollection_Release(collection); - hr = IXMLElement_AddRef(child); - ok(hr == 2, "Expected 2, got %08x\n", hr); + refcount = IXMLElement_AddRef(child); + ok(refcount == 2, "Unexpected refcount %ld.\n", refcount); IXMLElement_Release(child); hr = IXMLElement_addChild(element, child, 0, -1); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - hr = IXMLElement_AddRef(child); - ok(hr == 2, "Expected 2, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + refcount = IXMLElement_AddRef(child); + ok(refcount == 2, "Unexpected refcount %ld.\n", refcount); IXMLElement_Release(child); hr = IXMLElement_addChild(element, child2, 0, -1); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLElement_get_children(element, &collection); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(collection != NULL, "Expected non-NULL collection\n"); - hr = IXMLElement_AddRef(child); - ok(hr == 2, "Expected 2, got %08x\n", hr); + refcount = IXMLElement_AddRef(child); + ok(refcount == 2, "Unexpected refcount %ld.\n", refcount); IXMLElement_Release(child); length = 0; hr = IXMLElementCollection_get_length(collection, &length); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(length == 2, "Expected 2, got %08x\n", length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 2, "Unexpected length %ld.\n", length); IXMLElement_Release(child2); length = 0; hr = IXMLElementCollection_get_length(collection, &length); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(length == 2, "Expected 2, got %08x\n", length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 2, "Unexpected length %ld.\n", length); V_VT(&vIndex) = VT_I4; V_I4(&vIndex) = 1; hr = IXMLElementCollection_item(collection, vIndex, vName, (IDispatch **)&child2); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(child2 != NULL, "Expected not NULL child\n"); IXMLElementCollection_Release(collection); IXMLElement_Release(child2); @@ -623,20 +610,20 @@ static void test_xmlelem_children(void) V_I4(&vType) = XMLELEMTYPE_TEXT; V_VT(&vName) = VT_NULL; hr = IXMLDocument_createElement(doc, vType, vName, &child2); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(child2 != NULL, "Expected non-NULL child\n"); hr = IXMLElement_addChild(child, child2, 0, -1); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLElement_removeChild(element, child2); - ok(hr == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IXMLElement_removeChild(child, child2); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLElement_removeChild(child, NULL); - ok(hr == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); IXMLElement_Release(element); IXMLElement_Release(child); @@ -656,140 +643,173 @@ static void test_xmlelem_collection(void) WCHAR path[MAX_PATH]; LONG length, type; ULONG num_vars; - VARIANT var, dummy, vIndex, vName; + VARIANT var[4], dummy, vIndex, vName; BSTR url, str; - static const CHAR szBankXML[] = "bank.xml"; - static const WCHAR szNumber[] = {'N','U','M','B','E','R',0}; - static const WCHAR szName[] = {'N','A','M','E',0}; hr = CoCreateInstance(&CLSID_XMLDocument, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDocument, (LPVOID*)&doc); - ok(hr == S_OK, "Expected S_OK, got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - create_xml_file(szBankXML); - GetFullPathNameA(szBankXML, MAX_PATH, pathA, NULL); + create_xml_file("bank.xml"); + GetFullPathNameA("bank.xml", MAX_PATH, pathA, NULL); MultiByteToWideChar(CP_ACP, 0, pathA, -1, path, MAX_PATH); url = SysAllocString(path); hr = IXMLDocument_put_URL(doc, url); - ok(hr == S_OK, "Expected S_OK, got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); SysFreeString(url); if(hr != S_OK) goto cleanup; hr = IXMLDocument_get_root(doc, &element); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(element != NULL, "Expected non-NULL element\n"); hr = IXMLElement_get_children(element, &collection); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(collection != NULL, "Expected non-NULL collection\n"); hr = IXMLElementCollection_get_length(collection, NULL); - ok(hr == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IXMLElementCollection_get_length(collection, &length); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(length == 2, "Expected 2, got %d\n", length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 2, "Unexpected count %ld.\n", length); /* IXMLElementCollection:put_length does nothing */ hr = IXMLElementCollection_put_length(collection, -1); - ok(hr == E_FAIL, "Expected E_FAIL, got %08x\n", hr); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); hr = IXMLElementCollection_put_length(collection, 0); - ok(hr == E_FAIL, "Expected E_FAIL, got %08x\n", hr); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); hr = IXMLElementCollection_put_length(collection, 1); - ok(hr == E_FAIL, "Expected E_FAIL, got %08x\n", hr); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); hr = IXMLElementCollection_put_length(collection, 2); - ok(hr == E_FAIL, "Expected E_FAIL, got %08x\n", hr); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); hr = IXMLElementCollection_put_length(collection, 3); - ok(hr == E_FAIL, "Expected E_FAIL, got %08x\n", hr); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); hr = IXMLElementCollection_put_length(collection, 50); - ok(hr == E_FAIL, "Expected E_FAIL, got %08x\n", hr); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); /* make sure the length hasn't changed */ hr = IXMLElementCollection_get_length(collection, &length); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(length == 2, "Expected 2, got %d\n", length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 2, "Unexpected count %ld.\n", length); /* IXMLElementCollection implements IEnumVARIANT */ hr = IXMLElementCollection_QueryInterface(collection, &IID_IEnumVARIANT, (LPVOID *)&enumVar); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(enumVar != NULL, "Expected non-NULL enumVar\n"); IEnumVARIANT_Release(enumVar); hr = IXMLElementCollection_get__newEnum(collection, &unk); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(unk != NULL, "Expected non-NULL unk\n"); enumVar = (void *)0xdeadbeef; hr = IUnknown_QueryInterface(unk, &IID_IXMLElementCollection, (LPVOID *)&enumVar); - ok(hr == E_NOINTERFACE, "Expected E_NOINTERFACE, got %08x\n", hr); + ok(hr == E_NOINTERFACE, "Unexpected hr %#lx.\n", hr); ok(enumVar == NULL || broken(enumVar == (void *)0xdeadbeef) /* XP */, "Expected NULL, got %p\n", enumVar); hr = IUnknown_QueryInterface(unk, &IID_IEnumVARIANT, (LPVOID *)&enumVar); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(enumVar != NULL, "Expected non-NULL enumVar\n"); IUnknown_Release(unk); /* 1234 */ - hr = IEnumVARIANT_Next(enumVar, 1, &var, &num_vars); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(V_VT(&var) == VT_DISPATCH, "Expected VT_DISPATCH, got %d\n", V_VT(&var)); - ok(num_vars == 1, "Expected 1, got %d\n", num_vars); + hr = IEnumVARIANT_Next(enumVar, 1, &var[0], &num_vars); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(V_VT(&var[0]) == VT_DISPATCH, "Expected VT_DISPATCH, got %d\n", V_VT(&var[0])); + ok(num_vars == 1, "Unexpected count %ld.\n", num_vars); - hr = IDispatch_QueryInterface(V_DISPATCH(&var), &IID_IXMLElement, (LPVOID *)&child); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + hr = IDispatch_QueryInterface(V_DISPATCH(&var[0]), &IID_IXMLElement, (LPVOID *)&child); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(child != NULL, "Expected non-NULL child\n"); - VariantClear(&var); + VariantClear(&var[0]); hr = IXMLElement_get_type(child, &type); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(type == XMLELEMTYPE_ELEMENT, "Expected XMLELEMTYPE_ELEMENT, got %d\n", type); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(type == XMLELEMTYPE_ELEMENT, "Unexpected type %ld.\n", type); hr = IXMLElement_get_tagName(child, &str); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(!lstrcmpW(str, szNumber), "Expected NUMBER\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"NUMBER"), "Expected NUMBER\n"); SysFreeString(str); IXMLElement_Release(child); /* Captain Ahab */ - hr = IEnumVARIANT_Next(enumVar, 1, &var, &num_vars); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(V_VT(&var) == VT_DISPATCH, "Expected VT_DISPATCH, got %d\n", V_VT(&var)); - ok(num_vars == 1, "Expected 1, got %d\n", num_vars); + hr = IEnumVARIANT_Next(enumVar, 1, &var[0], &num_vars); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(V_VT(&var[0]) == VT_DISPATCH, "Expected VT_DISPATCH, got %d\n", V_VT(&var[0])); + ok(num_vars == 1, "Unexpected count %ld.\n", num_vars); + + VariantClear(&var[0]); /* try advance further, no children left */ V_VT(&dummy) = VT_I4; hr = IEnumVARIANT_Next(enumVar, 1, &dummy, &num_vars); - ok(hr == S_FALSE, "Expected S_FALSE, got %08x\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dummy) == VT_EMPTY, "Expected 0, got %d\n", V_VT(&dummy)); - ok(num_vars == 0, "Expected 0, got %d\n", num_vars); + ok(!num_vars, "Unexpected count %ld.\n", num_vars); V_VT(&dummy) = VT_I4; hr = IEnumVARIANT_Next(enumVar, 1, &dummy, NULL); - ok(hr == S_FALSE, "Expected S_FALSE, got %08x\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dummy) == VT_EMPTY, "Expected 0, got %d\n", V_VT(&dummy)); - hr = IDispatch_QueryInterface(V_DISPATCH(&var), &IID_IXMLElement, (LPVOID *)&child); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + hr = IEnumVARIANT_Reset(enumVar); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + /* retrieve multiple elements */ + hr = IEnumVARIANT_Next(enumVar, 2, var, &num_vars); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(V_VT(&var[0]) == VT_DISPATCH, "Expected VT_DISPATCH, got %d\n", V_VT(&var[0])); + ok(V_VT(&var[1]) == VT_DISPATCH, "Expected VT_DISPATCH, got %d\n", V_VT(&var[1])); + ok(num_vars == 2, "Unexpected count %ld.\n", num_vars); + + V_VT(&dummy) = VT_I4; + hr = IEnumVARIANT_Next(enumVar, 1, &dummy, &num_vars); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + ok(V_VT(&dummy) == VT_EMPTY, "Expected 0, got %d\n", V_VT(&dummy)); + ok(!num_vars, "Unexpected count %ld.\n", num_vars); + + hr = IEnumVARIANT_Reset(enumVar); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + VariantClear(&var[1]); + VariantClear(&var[0]); + + memset( var, 0xcc, sizeof(var)); + + /* request more elements than available */ + hr = IEnumVARIANT_Next(enumVar, 4, var, &num_vars); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + ok(V_VT(&var[0]) == VT_DISPATCH, "Expected VT_DISPATCH, got %d\n", V_VT(&var[0])); + ok(V_VT(&var[1]) == VT_DISPATCH, "Expected VT_DISPATCH, got %d\n", V_VT(&var[1])); + ok(V_VT(&var[2]) == VT_EMPTY, "Expected 0, got %d\n", V_VT(&var[2])); + ok(V_VT(&var[3]) == 0xcccc, "Expected invalid, got %x\n", V_VT(&var[3])); + ok(num_vars == 2, "Unexpected count %ld.\n", num_vars); + + hr = IDispatch_QueryInterface(V_DISPATCH(&var[1]), &IID_IXMLElement, (LPVOID *)&child); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(child != NULL, "Expected non-NULL child\n"); - VariantClear(&var); + VariantClear(&var[1]); + VariantClear(&var[0]); hr = IXMLElement_get_type(child, &type); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(type == XMLELEMTYPE_ELEMENT, "Expected XMLELEMTYPE_ELEMENT, got %d\n", type); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(type == XMLELEMTYPE_ELEMENT, "Unexpected type %ld.\n", type); hr = IXMLElement_get_tagName(child, &str); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(!lstrcmpW(str, szName), "Expected NAME\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"NAME"), "Expected NAME\n"); SysFreeString(str); IXMLElement_Release(child); @@ -799,16 +819,16 @@ static void test_xmlelem_collection(void) V_VT(&vName) = VT_ERROR; V_ERROR(&vName) = DISP_E_PARAMNOTFOUND; hr = IXMLElementCollection_item(collection, vIndex, vName, (IDispatch **)&child); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(child != NULL, "Expected non-NULL child\n"); hr = IXMLElement_get_type(child, &type); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(type == XMLELEMTYPE_ELEMENT, "Expected XMLELEMTYPE_ELEMENT, got %d\n", type); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(type == XMLELEMTYPE_ELEMENT, "Unexpected type %ld.\n", type); hr = IXMLElement_get_tagName(child, &str); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(!lstrcmpW(str, szNumber), "Expected NUMBER\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"NUMBER"), "Expected NUMBER\n"); SysFreeString(str); IXMLElement_Release(child); @@ -818,28 +838,28 @@ static void test_xmlelem_collection(void) V_VT(&vName) = VT_ERROR; V_ERROR(&vName) = DISP_E_PARAMNOTFOUND; hr = IXMLElementCollection_item(collection, vIndex, vName, (IDispatch **)&child); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(child != NULL, "Expected non-NULL child\n"); hr = IXMLElement_get_type(child, &type); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(type == XMLELEMTYPE_ELEMENT, "Expected XMLELEMTYPE_ELEMENT, got %d\n", type); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(type == XMLELEMTYPE_ELEMENT, "Unexpected type %ld.\n", type); hr = IXMLElement_get_tagName(child, &str); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(!lstrcmpW(str, szName), "Expected NAME\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"NAME"), "Expected NAME\n"); SysFreeString(str); IXMLElement_Release(child); V_I4(&vIndex) = 100; hr = IXMLElementCollection_item(collection, vIndex, vName, (IDispatch **)&child); - ok(hr == E_FAIL, "Expected E_FAIL, got %08x\n", hr); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); ok(child == NULL, "Expected NULL child\n"); V_I4(&vIndex) = -1; child = (IXMLElement *)0xdeadbeef; hr = IXMLElementCollection_item(collection, vIndex, vName, (IDispatch **)&child); - ok(hr == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); ok(child == NULL, "Expected NULL child\n"); IEnumVARIANT_Release(enumVar); @@ -864,98 +884,91 @@ static void test_xmlelem(void) IDispatch *disp; ITypeInfo *ti; - static const WCHAR propName[] = {'p','r','o','p',0}; - static const WCHAR propVal[] = {'v','a','l',0}; - static const WCHAR nextVal[] = {'n','e','x','t',0}; - static const WCHAR noexist[] = {'n','o','e','x','i','s','t',0}; - static const WCHAR crazyCase1[] = {'C','R','a','z','Y','c','A','S','E',0}; - static const WCHAR crazyCase2[] = {'C','R','A','Z','Y','C','A','S','E',0}; - hr = CoCreateInstance(&CLSID_XMLDocument, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDocument, (LPVOID*)&doc); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); V_VT(&vType) = VT_I4; V_I4(&vType) = XMLELEMTYPE_ELEMENT; V_VT(&vName) = VT_NULL; hr = IXMLDocument_createElement(doc, vType, vName, &element); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(element != NULL, "Expected non-NULL element\n"); /* test for IDispatch */ disp = NULL; hr = IXMLElement_QueryInterface(element, &IID_IDispatch, (void**)&disp); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IDispatch_GetTypeInfo(disp, 0, 0, &ti); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); name = NULL; hr = ITypeInfo_GetDocumentation(ti, DISPID_XMLELEMENT_TAGNAME, &name, NULL, NULL, NULL); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); SysFreeString(name); ITypeInfo_Release(ti); IDispatch_Release(disp); hr = IXMLElement_get_tagName(element, &str); - EXPECT_HR(hr, S_OK); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!str, "Expected empty tag name, got %s\n", wine_dbgstr_w(str)); SysFreeString(str); parent = (IXMLElement *)0xdeadbeef; hr = IXMLElement_get_parent(element, &parent); - ok(hr == 1, "Expected 1, got %08x\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(parent == NULL, "Expected NULL parent\n"); - str = SysAllocString(noexist); + str = SysAllocString(L"noexist"); hr = IXMLElement_getAttribute(element, str, &vValue); - ok(hr == S_FALSE, "Expected S_FALSE, got %08x\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(V_VT(&vValue) == VT_EMPTY, "Expected VT_EMPTY, got %d\n", V_VT(&vValue)); ok(V_BSTR(&vValue) == NULL, "Expected null value\n"); VariantClear(&vValue); SysFreeString(str); - str = SysAllocString(crazyCase1); - val = SysAllocString(propVal); + str = SysAllocString(L"CRazYcASE"); + val = SysAllocString(L"val"); V_VT(&vValue) = VT_BSTR; V_BSTR(&vValue) = val; hr = IXMLElement_setAttribute(element, str, vValue); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); SysFreeString(str); SysFreeString(val); - str = SysAllocString(crazyCase2); + str = SysAllocString(L"CRAZYCASE"); hr = IXMLElement_getAttribute(element, str, &vValue); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&vValue) == VT_BSTR, "Expected VT_BSTR, got %d\n", V_VT(&vValue)); - ok(!lstrcmpW(V_BSTR(&vValue), propVal), "Expected 'val'\n"); + ok(!lstrcmpW(V_BSTR(&vValue), L"val"), "Expected 'val'\n"); VariantClear(&vValue); SysFreeString(str); - str = SysAllocString(propName); - val = SysAllocString(propVal); + str = SysAllocString(L"prop"); + val = SysAllocString(L"val"); V_VT(&vValue) = VT_BSTR; V_BSTR(&vValue) = val; hr = IXMLElement_setAttribute(element, str, vValue); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); SysFreeString(val); hr = IXMLElement_getAttribute(element, str, &vValue); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&vValue) == VT_BSTR, "Expected VT_BSTR, got %d\n", V_VT(&vValue)); - ok(!lstrcmpW(V_BSTR(&vValue), propVal), "Expected 'val'\n"); + ok(!lstrcmpW(V_BSTR(&vValue), L"val"), "Expected 'val'\n"); VariantClear(&vValue); hr = IXMLElement_removeAttribute(element, str); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); /* remove now nonexistent attribute */ hr = IXMLElement_removeAttribute(element, str); - ok(hr == S_FALSE, "Expected S_FALSE, got %08x\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); hr = IXMLElement_getAttribute(element, str, &vValue); - ok(hr == 1, "Expected 1, got %08x\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(V_VT(&vValue) == VT_EMPTY, "Expected VT_EMPTY, got %d\n", V_VT(&vValue)); ok(V_BSTR(&vValue) == NULL, "Expected null value\n"); SysFreeString(str); @@ -963,93 +976,93 @@ static void test_xmlelem(void) children = (IXMLElementCollection *)0xdeadbeef; hr = IXMLElement_get_children(element, &children); - ok(hr == 1, "Expected 1, got %08x\n", hr); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); ok(children == NULL, "Expected NULL collection\n"); hr = IXMLElement_get_type(element, &type); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(type == XMLELEMTYPE_ELEMENT, "Expected XMLELEMTYPE_ELEMENT, got %d\n", type); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(type == XMLELEMTYPE_ELEMENT, "Unexpected type %ld.\n", type); hr = IXMLElement_get_text(element, &str); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(lstrlenW(str) == 0, "Expected empty text\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(str && !*str, "Expected empty text\n"); SysFreeString(str); /* put_text with an ELEMENT */ - str = SysAllocString(propVal); + str = SysAllocString(L"val"); hr = IXMLElement_put_text(element, str); - ok(hr == E_NOTIMPL, "Expected E_NOTIMPL, got %08x\n", hr); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); SysFreeString(str); V_VT(&vType) = VT_I4; V_I4(&vType) = XMLELEMTYPE_TEXT; V_VT(&vName) = VT_NULL; hr = IXMLDocument_createElement(doc, vType, vName, &child); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(child != NULL, "Expected non-NULL child\n"); hr = IXMLElement_addChild(element, child, 0, -1); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - str = SysAllocString(propVal); + str = SysAllocString(L"val"); hr = IXMLElement_put_text(child, str); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); SysFreeString(str); parent = (IXMLElement *)0xdeadbeef; hr = IXMLElement_get_parent(child, &parent); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(parent != element, "Expected parent != element\n"); hr = IXMLElement_get_type(parent, &type); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(type == XMLELEMTYPE_ELEMENT, "Expected XMLELEMTYPE_ELEMENT, got %d\n", type); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(type == XMLELEMTYPE_ELEMENT, "Unexpected type %ld.\n", type); children = (IXMLElementCollection *)0xdeadbeef; hr = IXMLElement_get_children(element, &children); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(children != NULL, "Expected non-NULL collection\n"); hr = IXMLElementCollection_get_length(children, &num_child); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(num_child == 1, "Expected 1, got %d\n", num_child); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(num_child == 1, "Unexpected length %ld.\n", num_child); V_VT(&vIndex) = VT_I4; V_I4(&vIndex) = 0; V_VT(&vName) = VT_ERROR; V_ERROR(&vName) = DISP_E_PARAMNOTFOUND; hr = IXMLElementCollection_item(children, vIndex, vName, (IDispatch **)&child2); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(child2 != NULL, "Expected non-NULL child\n"); hr = IXMLElement_get_type(child2, &type); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(type == XMLELEMTYPE_TEXT, "Expected XMLELEMTYPE_TEXT, got %d\n", type); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(type == XMLELEMTYPE_TEXT, "Unexpected type %ld.\n", type); hr = IXMLElement_get_text(element, &str); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(!lstrcmpW(str, propVal), "Expected 'val'\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"val"), "Expected 'val'\n"); SysFreeString(str); hr = IXMLElement_get_text(child2, &str); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(!lstrcmpW(str, propVal), "Expected 'val'\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"val"), "Expected 'val'\n"); SysFreeString(str); /* try put_text on ELEMENT again, now that it has a text child */ - str = SysAllocString(nextVal); + str = SysAllocString(L"next"); hr = IXMLElement_put_text(element, str); - ok(hr == E_NOTIMPL, "Expected E_NOTIMPL, got %08x\n", hr); + ok(hr == E_NOTIMPL, "Unexpected hr %#lx.\n", hr); SysFreeString(str); - str = SysAllocString(nextVal); + str = SysAllocString(L"next"); hr = IXMLElement_put_text(child2, str); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); SysFreeString(str); hr = IXMLElement_get_text(element, &str); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(!lstrcmpW(str, nextVal), "Expected 'val'\n"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, L"next"), "Expected 'val'\n"); SysFreeString(str); IXMLElement_Release(child2); diff --git a/modules/rostests/winetests/msxml3/xmlparser.c b/modules/rostests/winetests/msxml3/xmlparser.c index 32514e3e0e9..9ca61d6218a 100644 --- a/modules/rostests/winetests/msxml3/xmlparser.c +++ b/modules/rostests/winetests/msxml3/xmlparser.c @@ -108,44 +108,44 @@ static void create_test(void) hr = CoCreateInstance(&CLSID_XMLParser30, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLParser, (void**)&parser); if (FAILED(hr)) { - win_skip("IXMLParser is not available (0x%08x)\n", hr); + win_skip("IXMLParser is not available, hr %#lx.\n", hr); return; } flags = IXMLParser_GetFlags(parser); - ok(flags == 0, "Expected 0 got %d\n", flags); + ok(!flags, "Unexpected flags %#lx.\n", flags); hr = IXMLParser_SetFlags(parser, XMLFLAG_SAX); - ok(hr == S_OK, "Expected S_OK got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); flags = IXMLParser_GetFlags(parser); - ok(flags == XMLFLAG_SAX, "Expected 0 got %d\n", flags); + ok(flags == XMLFLAG_SAX, "Unexpected flags %ld.\n", flags); hr = IXMLParser_GetFactory(parser, NULL); - ok(hr == E_INVALIDARG, "Expected S_OK got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IXMLParser_GetFactory(parser, &nodefactory); - ok(hr == S_OK, "Expected S_OK got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(nodefactory == NULL, "expected NULL\n"); hr = IXMLParser_SetFactory(parser, &thenodefactory); - ok(hr == S_OK, "Expected S_OK got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLParser_GetFactory(parser, &nodefactory); - ok(hr == S_OK, "Expected S_OK got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(nodefactory == &thenodefactory, "expected NULL\n"); hr = IXMLParser_SetInput(parser, NULL); - ok(hr == E_INVALIDARG, "Expected S_OK got 0x%08x\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = IXMLParser_SetFactory(parser, NULL); - ok(hr == S_OK, "Expected S_OK got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLParser_SetFlags(parser, 0); - ok(hr == S_OK, "Expected S_OK got 0x%08x\n", hr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLParser_GetParserState(parser); - ok(hr == XMLPARSER_IDLE, "got 0x%08x\n", hr); + ok(hr == XMLPARSER_IDLE, "Unexpected hr %#lx.\n", hr); IXMLParser_Release(parser); } diff --git a/modules/rostests/winetests/msxml3/xmlview.c b/modules/rostests/winetests/msxml3/xmlview.c index 53eefcb7e00..5eb8e777eb4 100644 --- a/modules/rostests/winetests/msxml3/xmlview.c +++ b/modules/rostests/winetests/msxml3/xmlview.c @@ -121,14 +121,15 @@ static HRESULT WINAPI HTMLEvents_Invoke(IDispatch *iface, DISPID dispIdMember, R LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) { - if(dispIdMember == DISPID_HTMLDOCUMENTEVENTS2_ONREADYSTATECHANGE) { - static const WCHAR completeW[] = {'c','o','m','p','l','e','t','e',0}; + if (dispIdMember == DISPID_HTMLDOCUMENTEVENTS2_ONREADYSTATECHANGE) + { + static const WCHAR completeW[] = L"complete"; HRESULT hr; BSTR state; hr = IHTMLDocument2_get_readyState(html_doc, &state); - ok(hr == S_OK, "got 0x%08x\n", hr); - if(!memcmp(state, completeW, sizeof(completeW))) + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + if (!memcmp(state, completeW, sizeof(completeW))) loaded = TRUE; SysFreeString(state); } @@ -160,28 +161,28 @@ static void test_QueryInterface(void) win_skip("Failed to create XMLView instance\n"); return; } - ok(hres == S_OK, "CoCreateInstance returned %x, expected S_OK\n", hres); + ok(hres == S_OK, "Unexpected hr %#lx.\n", hres); hres = IUnknown_QueryInterface(xmlview, &IID_IPersistMoniker, (void**)&unk); - ok(hres == S_OK, "QueryInterface(IID_IPersistMoniker) returned %x, expected S_OK\n", hres); + ok(hres == S_OK, "Unexpected hr %#lx.\n", hres); IUnknown_Release(unk); hres = IUnknown_QueryInterface(xmlview, &IID_IPersistHistory, (void**)&unk); - ok(hres == S_OK, "QueryInterface(IID_IPersistHistory) returned %x, expected S_OK\n", hres); + ok(hres == S_OK, "Unexpected hr %#lx.\n", hres); IUnknown_Release(unk); hres = IUnknown_QueryInterface(xmlview, &IID_IOleCommandTarget, (void**)&unk); - ok(hres == S_OK, "QueryInterface(IID_IOleCommandTarget) returned %x, expected S_OK\n", hres); + ok(hres == S_OK, "Unexpected hr %#lx.\n", hres); IUnknown_Release(unk); hres = IUnknown_QueryInterface(xmlview, &IID_IOleObject, (void**)&unk); - ok(hres == S_OK, "QueryInterface(IID_IOleObject) returned %x, expected S_OK\n", hres); + ok(hres == S_OK, "Unexpected hr %#lx.\n", hres); IUnknown_Release(unk); hres = IUnknown_QueryInterface(xmlview, &IID_IHTMLDocument, (void**)&htmldoc); - ok(hres == S_OK, "QueryInterface(IID_IHTMLDocument) returned %x, expected S_OK\n", hres); + ok(hres == S_OK, "Unexpected hr %#lx.\n", hres); hres = IHTMLDocument_QueryInterface(htmldoc, &IID_IUnknown, (void**)&unk); - ok(hres == S_OK, "QueryInterface(IID_IUnknown) returned %x, expected S_OK\n", hres); + ok(hres == S_OK, "Unexpected hr %#lx.\n", hres); ok(unk == xmlview, "Aggregation is not working as expected\n"); IUnknown_Release(unk); IHTMLDocument_Release(htmldoc); @@ -191,9 +192,6 @@ static void test_QueryInterface(void) static void test_Load(void) { - static const WCHAR xmlview_xmlW[] = {'/','x','m','l','/','x','m','l','v','i','e','w','.','x','m','l',0}; - static const WCHAR res[] = {'r','e','s',':','/','/',0}; - WCHAR buf[1024]; IPersistMoniker *pers_mon; IConnectionPointContainer *cpc; @@ -205,9 +203,9 @@ static void test_Load(void) MSG msg; BSTR source; - lstrcpyW(buf, res); - GetModuleFileNameW(NULL, buf+lstrlenW(buf), ARRAY_SIZE(buf)-ARRAY_SIZE(res)); - lstrcatW(buf, xmlview_xmlW); + lstrcpyW(buf, L"res://"); + GetModuleFileNameW(NULL, buf+lstrlenW(buf), ARRAY_SIZE(buf)-ARRAY_SIZE(L"res://")); + lstrcatW(buf, L"/xml/xmlview.xml"); if(!pCreateURLMoniker) { win_skip("CreateURLMoniker not available\n"); @@ -220,26 +218,26 @@ static void test_Load(void) win_skip("Failed to create XMLView instance\n"); return; } - ok(hres == S_OK, "CoCreateInstance returned %x, expected S_OK\n", hres); + ok(hres == S_OK, "Unexpected hr %#lx.\n", hres); hres = IPersistMoniker_QueryInterface(pers_mon, &IID_IHTMLDocument2, (void**)&html_doc); - ok(hres == S_OK, "QueryInterface(HTMLDocument2) returned %x, expected S_OK\n", hres); + ok(hres == S_OK, "Unexpected hr %#lx.\n", hres); hres = IPersistMoniker_QueryInterface(pers_mon, &IID_IConnectionPointContainer, (void**)&cpc); - ok(hres == S_OK, "QueryInterface(IConnectionPointContainer) returned %x, expected S_OK\n", hres); + ok(hres == S_OK, "Unexpected hr %#lx.\n", hres); hres = IConnectionPointContainer_FindConnectionPoint(cpc, &IID_IDispatch, &cp); - ok(hres == S_OK, "FindConnectionPoint returned %x, expected S_OK\n", hres); + ok(hres == S_OK, "Unexpected hr %#lx.\n", hres); hres = IConnectionPoint_Advise(cp, (IUnknown*)&HTMLEvents, NULL); - ok(hres == S_OK, "Advise returned %x, expected S_OK\n", hres); + ok(hres == S_OK, "Unexpected hr %#lx.\n", hres); IConnectionPoint_Release(cp); IConnectionPointContainer_Release(cpc); hres = CreateBindCtx(0, &bctx); - ok(hres == S_OK, "CreateBindCtx returned %x, expected S_OK\n", hres); + ok(hres == S_OK, "Unexpected hr %#lx.\n", hres); hres = pCreateURLMoniker(NULL, buf, &mon); - ok(hres == S_OK, "CreateUrlMoniker returned %x, expected S_OK\n", hres); + ok(hres == S_OK, "Unexpected hr %#lx.\n", hres); loaded = FALSE; hres = IPersistMoniker_Load(pers_mon, TRUE, mon, bctx, 0); - ok(hres == S_OK, "Load returned %x, expected S_OK\n", hres); + ok(hres == S_OK, "Unexpected hr %#lx.\n", hres); IBindCtx_Release(bctx); IMoniker_Release(mon); @@ -249,9 +247,9 @@ static void test_Load(void) } hres = IHTMLDocument2_get_body(html_doc, &elem); - ok(hres == S_OK, "get_body returned %x, expected S_OK\n", hres); + ok(hres == S_OK, "Unexpected hr %#lx.\n", hres); hres = IHTMLElement_get_outerHTML(elem, &source); - ok(hres == S_OK, "get_outerHTML returned %x, expected S_OK\n", hres); + ok(hres == S_OK, "Unexpected hr %#lx.\n", hres); ok(!html_src_compare(source, xmlview_html), "Incorrect HTML source: %s\n", wine_dbgstr_w(source)); IHTMLElement_Release(elem); SysFreeString(source);