mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 08:25:03 +00:00
[MSXML3_WINETEST] Sync with Wine 3.0. CORE-14225
This commit is contained in:
parent
0506c9332a
commit
d4c87f7aa8
3 changed files with 196 additions and 33 deletions
|
@ -29,6 +29,7 @@
|
|||
#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);
|
||||
|
||||
static int g_unexpectedcall, g_expectedcall;
|
||||
|
||||
|
@ -6475,7 +6476,8 @@ static void test_save(void)
|
|||
hr = IXMLDOMDocument_loadXML(doc, _bstr_(win1252xml), &b);
|
||||
EXPECT_HR(hr, S_OK);
|
||||
|
||||
CreateStreamOnHGlobal(NULL, TRUE, &stream);
|
||||
hr = CreateStreamOnHGlobal(NULL, TRUE, &stream);
|
||||
ok(hr == S_OK, "got 0x%08x\n", hr);
|
||||
V_VT(&dest) = VT_UNKNOWN;
|
||||
V_UNKNOWN(&dest) = (IUnknown*)stream;
|
||||
hr = IXMLDOMDocument_save(doc, dest);
|
||||
|
@ -7482,6 +7484,7 @@ static void test_XSLPattern(void)
|
|||
ok(hr == S_OK, "query=%s, failed with 0x%08x\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);
|
||||
if (*ptr->list)
|
||||
{
|
||||
ok(len != 0, "query=%s, empty list\n", ptr->query);
|
||||
|
@ -10168,16 +10171,20 @@ static void write_to_file(const char *name, const char *data)
|
|||
static void test_load(void)
|
||||
{
|
||||
IXMLDOMDocument *doc, *doc2;
|
||||
BSTR pathW, bstr1, bstr2;
|
||||
IXMLDOMNodeList *list;
|
||||
IXMLDOMElement *elem;
|
||||
char path[MAX_PATH];
|
||||
VARIANT_BOOL b;
|
||||
VARIANT src;
|
||||
HRESULT hr;
|
||||
BSTR path, bstr1, bstr2;
|
||||
void* ptr;
|
||||
|
||||
GetTempPathA(MAX_PATH, path);
|
||||
strcat(path, "winetest.xml");
|
||||
|
||||
/* prepare a file */
|
||||
write_to_file("test.xml", win1252xml);
|
||||
write_to_file(path, win1252xml);
|
||||
|
||||
doc = create_document(&IID_IXMLDOMDocument);
|
||||
|
||||
|
@ -10188,11 +10195,11 @@ static void test_load(void)
|
|||
EXPECT_HR(hr, E_INVALIDARG);
|
||||
ok(b == VARIANT_FALSE, "got %d\n", b);
|
||||
|
||||
path = _bstr_("test.xml");
|
||||
pathW = _bstr_(path);
|
||||
|
||||
/* load from path: VT_BSTR */
|
||||
V_VT(&src) = VT_BSTR;
|
||||
V_BSTR(&src) = path;
|
||||
V_BSTR(&src) = pathW;
|
||||
hr = IXMLDOMDocument_load(doc, src, &b);
|
||||
EXPECT_HR(hr, S_OK);
|
||||
ok(b == VARIANT_TRUE, "got %d\n", b);
|
||||
|
@ -10204,7 +10211,7 @@ static void test_load(void)
|
|||
|
||||
/* load from a path: VT_BSTR|VT_BYREF */
|
||||
V_VT(&src) = VT_BSTR | VT_BYREF;
|
||||
V_BSTRREF(&src) = &path;
|
||||
V_BSTRREF(&src) = &pathW;
|
||||
hr = IXMLDOMDocument_load(doc, src, &b);
|
||||
EXPECT_HR(hr, S_OK);
|
||||
ok(b == VARIANT_TRUE, "got %d\n", b);
|
||||
|
@ -10242,13 +10249,13 @@ static void test_load(void)
|
|||
ok(hr == S_OK, "got 0x%08x\n", hr);
|
||||
SysFreeString(bstr1);
|
||||
|
||||
DeleteFileA("test.xml");
|
||||
DeleteFileA(path);
|
||||
|
||||
/* load from existing path, no xml content */
|
||||
write_to_file("test.xml", nocontent);
|
||||
write_to_file(path, nocontent);
|
||||
|
||||
V_VT(&src) = VT_BSTR;
|
||||
V_BSTR(&src) = path;
|
||||
V_BSTR(&src) = pathW;
|
||||
b = VARIANT_TRUE;
|
||||
hr = IXMLDOMDocument_load(doc, src, &b);
|
||||
ok(hr == S_FALSE, "got 0x%08x\n", hr);
|
||||
|
@ -10259,7 +10266,7 @@ static void test_load(void)
|
|||
ok(hr == S_FALSE, "got 0x%08x\n", hr);
|
||||
ok(bstr1 == NULL, "got %p\n", bstr1);
|
||||
|
||||
DeleteFileA("test.xml");
|
||||
DeleteFileA(path);
|
||||
IXMLDOMDocument_Release(doc);
|
||||
|
||||
doc = create_document(&IID_IXMLDOMDocument);
|
||||
|
@ -10964,7 +10971,8 @@ static void test_dispex(void)
|
|||
/* IXMLDOMNodeList */
|
||||
hr = IXMLDOMDocument_getElementsByTagName(doc, _bstr_("*"), &node_list);
|
||||
EXPECT_HR(hr, S_OK);
|
||||
IXMLDOMNodeList_QueryInterface(node_list, &IID_IUnknown, (void**)&unk);
|
||||
hr = IXMLDOMNodeList_QueryInterface(node_list, &IID_IUnknown, (void**)&unk);
|
||||
ok(hr == S_OK, "got 0x%08x\n", hr);
|
||||
test_domobj_dispex(unk);
|
||||
IUnknown_Release(unk);
|
||||
IXMLDOMNodeList_Release(node_list);
|
||||
|
@ -12005,7 +12013,7 @@ static void test_get_namespaces(void)
|
|||
free_bstrs();
|
||||
}
|
||||
|
||||
static DOMNodeType put_data_types[] = {
|
||||
static const DOMNodeType put_data_types[] = {
|
||||
NODE_TEXT,
|
||||
NODE_CDATA_SECTION,
|
||||
NODE_PROCESSING_INSTRUCTION,
|
||||
|
@ -12018,7 +12026,7 @@ 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;
|
||||
DOMNodeType *type;
|
||||
const DOMNodeType *type;
|
||||
IXMLDOMText *text;
|
||||
IXMLDOMNode *node;
|
||||
VARIANT v;
|
||||
|
@ -12576,6 +12584,81 @@ static void test_merging_text(void)
|
|||
free_bstrs();
|
||||
}
|
||||
|
||||
static HRESULT WINAPI transformdest_QueryInterface(IUnknown *iface, REFIID riid, void **obj)
|
||||
{
|
||||
BOOL known_iid = IsEqualIID(riid, &IID_IHTMLObjectElement) ||
|
||||
IsEqualIID(riid, &IID_transformdest_unknown) ||
|
||||
IsEqualIID(riid, &IID_IServiceProvider) ||
|
||||
IsEqualIID(riid, &IID_IStream) ||
|
||||
IsEqualIID(riid, &IID_ISequentialStream) ||
|
||||
IsEqualIID(riid, &IID_IRequestDictionary);
|
||||
|
||||
todo_wine_if(IsEqualIID(riid, &IID_IXMLDOMDocument))
|
||||
ok(known_iid, "Unexpected riid %s\n", wine_dbgstr_guid(riid));
|
||||
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
static ULONG WINAPI transformdest_AddRef(IUnknown *iface)
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
static ULONG WINAPI transformdest_Release(IUnknown *iface)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const IUnknownVtbl transformdestvtbl =
|
||||
{
|
||||
transformdest_QueryInterface,
|
||||
transformdest_AddRef,
|
||||
transformdest_Release,
|
||||
};
|
||||
|
||||
static void test_transformNodeToObject(void)
|
||||
{
|
||||
IUnknown transformdest = { &transformdestvtbl };
|
||||
IXMLDOMDocument *doc, *doc2, *doc3;
|
||||
VARIANT_BOOL b;
|
||||
HRESULT hr;
|
||||
VARIANT v;
|
||||
|
||||
doc = create_document(&IID_IXMLDOMDocument);
|
||||
doc2 = create_document(&IID_IXMLDOMDocument);
|
||||
doc3 = create_document(&IID_IXMLDOMDocument);
|
||||
|
||||
hr = IXMLDOMDocument_loadXML(doc, _bstr_(szTransformXML), &b);
|
||||
ok(hr == S_OK, "Failed to load document, hr %#x.\n", hr);
|
||||
hr = IXMLDOMDocument_loadXML(doc2, _bstr_(szTransformSSXML), &b);
|
||||
ok(hr == S_OK, "Failed to load document, hr %#x.\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);
|
||||
|
||||
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);
|
||||
|
||||
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);
|
||||
|
||||
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);
|
||||
|
||||
IXMLDOMDocument_Release(doc3);
|
||||
IXMLDOMDocument_Release(doc2);
|
||||
IXMLDOMDocument_Release(doc);
|
||||
free_bstrs();
|
||||
}
|
||||
|
||||
START_TEST(domdoc)
|
||||
{
|
||||
HRESULT hr;
|
||||
|
@ -12657,6 +12740,7 @@ START_TEST(domdoc)
|
|||
test_xmlns_attribute();
|
||||
test_url();
|
||||
test_merging_text();
|
||||
test_transformNodeToObject();
|
||||
|
||||
test_xsltemplate();
|
||||
test_xsltext();
|
||||
|
|
|
@ -1322,6 +1322,16 @@ static IXMLHttpRequest *create_xhr(void)
|
|||
return SUCCEEDED(hr) ? ret : NULL;
|
||||
}
|
||||
|
||||
static IServerXMLHTTPRequest *create_server_xhr(void)
|
||||
{
|
||||
IServerXMLHTTPRequest *ret;
|
||||
HRESULT hr;
|
||||
|
||||
hr = CoCreateInstance(&CLSID_ServerXMLHTTP30, NULL, CLSCTX_INPROC_SERVER, &IID_IServerXMLHTTPRequest, (void **)&ret);
|
||||
|
||||
return SUCCEEDED(hr) ? ret : NULL;
|
||||
}
|
||||
|
||||
static void set_safety_opt(IUnknown *unk, DWORD mask, DWORD opts)
|
||||
{
|
||||
IObjectSafety *obj_safety;
|
||||
|
@ -1714,6 +1724,28 @@ static void test_XMLHTTP(void)
|
|||
EXPECT_HR(hr, S_OK);
|
||||
|
||||
IObjectWithSite_Release(obj_site);
|
||||
|
||||
/* HEAD request */
|
||||
hr = IXMLHttpRequest_put_onreadystatechange(xhr, NULL);
|
||||
ok(hr == S_OK, "Failed to reset state change handler, hr %#x.\n", hr);
|
||||
|
||||
test_open(xhr, "HEAD", xmltestA, S_OK);
|
||||
|
||||
V_VT(&varbody) = VT_EMPTY;
|
||||
hr = IXMLHttpRequest_send(xhr, varbody);
|
||||
ok(hr == S_OK, "Failed to send HEAD request, hr %#x.\n", hr);
|
||||
|
||||
str = NULL;
|
||||
hr = IXMLHttpRequest_get_responseText(xhr, &str);
|
||||
ok(hr == S_OK, "Failed to get response text, hr %#x.\n", hr);
|
||||
ok(!*str, "Unexpected text %s.\n", wine_dbgstr_w(str));
|
||||
SysFreeString(str);
|
||||
|
||||
hr = IXMLHttpRequest_getAllResponseHeaders(xhr, &str);
|
||||
ok(hr == S_OK, "Failed to get response headers, hr %#x.\n", hr);
|
||||
ok(str && *str, "Expected response headers.\n");
|
||||
SysFreeString(str);
|
||||
|
||||
IXMLHttpRequest_Release(xhr);
|
||||
free_bstrs();
|
||||
}
|
||||
|
@ -1738,20 +1770,67 @@ static void test_safe_httpreq(void)
|
|||
free_bstrs();
|
||||
}
|
||||
|
||||
static void test_supporterrorinfo(void)
|
||||
{
|
||||
HRESULT hr;
|
||||
IXMLHttpRequest *xhr;
|
||||
IServerXMLHTTPRequest *server_xhr;
|
||||
ISupportErrorInfo *errorinfo, *errorinfo2;
|
||||
|
||||
xhr = create_xhr();
|
||||
|
||||
EXPECT_REF(xhr, 1);
|
||||
hr = IXMLHttpRequest_QueryInterface(xhr, &IID_ISupportErrorInfo, (void **)&errorinfo);
|
||||
ok(hr == S_OK, "Failed to get ISupportErrorInfo, hr %#x.\n", hr);
|
||||
EXPECT_REF(xhr, 2);
|
||||
|
||||
hr = IXMLHttpRequest_QueryInterface(xhr, &IID_ISupportErrorInfo, (void **)&errorinfo2);
|
||||
ok(hr == S_OK, "Failed to get ISupportErrorInfo, hr %#x.\n", hr);
|
||||
ok(errorinfo == errorinfo2, "Unexpected error info instance.\n");
|
||||
EXPECT_REF(xhr, 3);
|
||||
|
||||
ISupportErrorInfo_Release(errorinfo2);
|
||||
ISupportErrorInfo_Release(errorinfo);
|
||||
|
||||
IXMLHttpRequest_Release(xhr);
|
||||
|
||||
/* ServerXMLHTTP */
|
||||
server_xhr = create_server_xhr();
|
||||
|
||||
EXPECT_REF(server_xhr, 1);
|
||||
hr = IServerXMLHTTPRequest_QueryInterface(server_xhr, &IID_ISupportErrorInfo, (void **)&errorinfo);
|
||||
ok(hr == S_OK, "Failed to get ISupportErrorInfo, hr %#x.\n", hr);
|
||||
EXPECT_REF(server_xhr, 2);
|
||||
|
||||
hr = IServerXMLHTTPRequest_QueryInterface(server_xhr, &IID_ISupportErrorInfo, (void **)&errorinfo2);
|
||||
ok(hr == S_OK, "Failed to get ISupportErrorInfo, hr %#x.\n", hr);
|
||||
ok(errorinfo == errorinfo2, "Unexpected error info instance.\n");
|
||||
EXPECT_REF(server_xhr, 3);
|
||||
|
||||
ISupportErrorInfo_Release(errorinfo2);
|
||||
ISupportErrorInfo_Release(errorinfo);
|
||||
|
||||
IServerXMLHTTPRequest_Release(server_xhr);
|
||||
}
|
||||
|
||||
START_TEST(httpreq)
|
||||
{
|
||||
IXMLHttpRequest *xhr;
|
||||
|
||||
CoInitialize(NULL);
|
||||
|
||||
if((xhr = create_xhr())) {
|
||||
IXMLHttpRequest_Release(xhr);
|
||||
|
||||
test_XMLHTTP();
|
||||
test_safe_httpreq();
|
||||
}else {
|
||||
if (!(xhr = create_xhr()))
|
||||
{
|
||||
win_skip("IXMLHTTPRequest is not available\n");
|
||||
CoUninitialize();
|
||||
return;
|
||||
}
|
||||
|
||||
IXMLHttpRequest_Release(xhr);
|
||||
|
||||
test_XMLHTTP();
|
||||
test_safe_httpreq();
|
||||
test_supporterrorinfo();
|
||||
|
||||
CoUninitialize();
|
||||
}
|
||||
|
|
|
@ -656,26 +656,26 @@ static void test_collection_refs(void)
|
|||
LONG length;
|
||||
|
||||
schema1 = create_document(&IID_IXMLDOMDocument2);
|
||||
ok(schema1 != NULL, "Failed to create a document.\n");
|
||||
|
||||
cache1 = create_cache(&IID_IXMLDOMSchemaCollection);
|
||||
ok(cache1 != NULL, "Failed to create schema collection.\n");
|
||||
|
||||
if (!schema1 || !cache1)
|
||||
{
|
||||
if (schema1)
|
||||
IXMLDOMDocument2_Release(schema1);
|
||||
if (cache1)
|
||||
IXMLDOMSchemaCollection_Release(cache1);
|
||||
return;
|
||||
}
|
||||
|
||||
schema2 = create_document(&IID_IXMLDOMDocument2);
|
||||
schema3 = create_document(&IID_IXMLDOMDocument2);
|
||||
|
||||
cache1 = create_cache(&IID_IXMLDOMSchemaCollection);
|
||||
cache2 = create_cache(&IID_IXMLDOMSchemaCollection);
|
||||
cache3 = create_cache(&IID_IXMLDOMSchemaCollection);
|
||||
|
||||
if (!schema1 || !schema2 || !schema3 || !cache1 || !cache2 || !cache3)
|
||||
{
|
||||
if (schema1) IXMLDOMDocument2_Release(schema1);
|
||||
if (schema2) IXMLDOMDocument2_Release(schema2);
|
||||
if (schema3) IXMLDOMDocument2_Release(schema3);
|
||||
|
||||
if (cache1) IXMLDOMSchemaCollection_Release(cache1);
|
||||
if (cache2) IXMLDOMSchemaCollection_Release(cache2);
|
||||
if (cache3) IXMLDOMSchemaCollection_Release(cache2);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
ole_check(IXMLDOMDocument2_loadXML(schema1, _bstr_(xdr_schema1_xml), &b));
|
||||
ok(b == VARIANT_TRUE, "failed to load XML\n");
|
||||
|
||||
|
|
Loading…
Reference in a new issue