[MSXML3_WINETEST] Sync with Wine Staging 1.9.11. CORE-11368

svn path=/trunk/; revision=71577
This commit is contained in:
Amine Khaldi 2016-06-07 10:30:15 +00:00
parent 34ca173317
commit 820f0a6196
5 changed files with 140 additions and 16 deletions

View file

@ -6742,9 +6742,9 @@ static void test_TransformWithLoadingLocalFile(void)
BSTR sPart1 = _bstr_(szBasicTransformSSXMLPart1);
BSTR sPart2 = _bstr_(szBasicTransformSSXMLPart2);
BSTR sFileName = _bstr_(lpPathBuffer);
int nLegnth = lstrlenW(sPart1) + lstrlenW(sPart2) + lstrlenW(sFileName) + 1;
int nLength = lstrlenW(sPart1) + lstrlenW(sPart2) + lstrlenW(sFileName) + 1;
sXSL = SysAllocStringLen(NULL, nLegnth);
sXSL = SysAllocStringLen(NULL, nLength);
lstrcpyW(sXSL, sPart1);
lstrcatW(sXSL, sFileName);
lstrcatW(sXSL, sPart2);
@ -9297,10 +9297,12 @@ static void test_get_attributes(void)
{
const get_attributes_t *entry = get_attributes;
IXMLDOMNamedNodeMap *map;
IXMLDOMDocument *doc;
IXMLDOMDocument *doc, *doc2;
IXMLDOMNode *node, *node2;
IXMLDOMElement *elem;
VARIANT_BOOL b;
HRESULT hr;
VARIANT v;
BSTR str;
LONG length;
@ -9472,6 +9474,39 @@ static void test_get_attributes(void)
IXMLDOMNamedNodeMap_Release(map);
/* 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);
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);
hr = IXMLDOMElement_get_attributes(elem, &map);
ok(hr == S_OK, "get_attributes failed: %08x\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);
doc2 = create_document(&IID_IXMLDOMDocument);
hr = IXMLDOMDocument_appendChild(doc2, (IXMLDOMNode*)elem, &node);
ok(hr == S_OK, "appendChild failed: %08x\n", hr);
ok(node == (IXMLDOMNode*)elem, "node != elem\n");
IXMLDOMNode_Release(node);
IXMLDOMElement_Release(elem);
IXMLDOMDocument_Release(doc2);
length = 0;
hr = IXMLDOMNamedNodeMap_get_length(map, &length);
ok(hr == S_OK, "got %08x\n", hr);
ok(length == 1, "got %d\n", length);
IXMLDOMNamedNodeMap_Release(map);
while (entry->type)
{
VARIANT var;

View file

@ -49,9 +49,10 @@
#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);
IUnknown_Release(obj);
ok_(__FILE__,line)(rc-1 == ref, "expected refcount %d, got %d\n", ref, rc-1);
ULONG rc;
IUnknown_AddRef(obj);
rc = IUnknown_Release(obj);
ok_(__FILE__, line)(rc == ref, "expected refcount %d, got %d\n", ref, rc);
}
DEFINE_GUID(SID_SContainerDispatch, 0xb722be00, 0x4e68, 0x101b, 0xa2, 0xbc, 0x00, 0xaa, 0x00, 0x40, 0x47, 0x70);

View file

@ -47,9 +47,10 @@ static const WCHAR emptyW[] = {0};
#define EXPECT_REF(obj,ref) _expect_ref((IUnknown*)obj, ref, __LINE__)
static void _expect_ref(IUnknown* obj, ULONG ref, int line)
{
ULONG rc = IUnknown_AddRef(obj);
IUnknown_Release(obj);
ok_(__FILE__,line)(rc-1 == ref, "expected refcount %d, got %d\n", ref, rc-1);
ULONG rc;
IUnknown_AddRef(obj);
rc = IUnknown_Release(obj);
ok_(__FILE__, line)(rc == ref, "expected refcount %d, got %d\n", ref, rc);
}
static LONG get_refcount(void *iface)
@ -2931,7 +2932,6 @@ static void test_mxwriter_handlers(void)
ok(hr == S_OK, "%s, expected S_OK, got %08x\n", wine_dbgstr_guid(riids[i]), hr);
ok(writer2 == writer, "got %p, expected %p\n", writer2, writer);
EXPECT_REF(writer, 3);
EXPECT_REF(writer2, 3);
IMXWriter_Release(writer2);
IUnknown_Release(handler);
}
@ -3309,7 +3309,6 @@ static void test_mxwriter_flush(void)
pos2.QuadPart = 0;
hr = IStream_Seek(stream, pos, STREAM_SEEK_CUR, &pos2);
EXPECT_HR(hr, S_OK);
todo_wine
ok(pos2.QuadPart != 0, "unexpected stream beginning\n");
hr = IMXWriter_get_output(writer, NULL);
@ -4150,7 +4149,6 @@ static void test_mxwriter_stream(void)
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);
VariantClear(&dest);
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);
@ -4795,6 +4793,7 @@ static void test_mxwriter_dtd(void)
ISAXLexicalHandler *lexical;
IVBSAXDeclHandler *vbdecl;
ISAXDeclHandler *decl;
ISAXDTDHandler *dtd;
IMXWriter *writer;
VARIANT dest;
HRESULT hr;
@ -4993,6 +4992,9 @@ static void test_mxwriter_dtd(void)
hr = IVBSAXDeclHandler_externalEntityDecl(vbdecl, NULL, NULL, NULL);
ok(hr == E_POINTER, "got 0x%08x\n", hr);
hr = ISAXDeclHandler_externalEntityDecl(decl, _bstr_("name"), 0, NULL, 0, NULL, 0);
ok(hr == E_INVALIDARG, "got 0x%08x\n", hr);
hr = ISAXDeclHandler_externalEntityDecl(decl, _bstr_("name"), -1, NULL, 0, NULL, 0);
ok(hr == E_INVALIDARG, "got 0x%08x\n", hr);
@ -5000,13 +5002,61 @@ static void test_mxwriter_dtd(void)
_bstr_("sysid"), strlen("sysid"));
ok(hr == S_OK, "got 0x%08x\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);
hr = ISAXDeclHandler_externalEntityDecl(decl, _bstr_("name"), strlen("name"), _bstr_("pubid"), strlen("pubid"),
NULL, 0);
ok(hr == E_INVALIDARG, "got 0x%08x\n", hr);
V_VT(&dest) = VT_EMPTY;
hr = IMXWriter_get_output(writer, &dest);
ok(hr == S_OK, "got 0x%08x\n", hr);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
ok(!lstrcmpW(_bstr_("<!ENTITY name PUBLIC \"pubid\" \"sysid\">\r\n"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
ok(!lstrcmpW(_bstr_(
"<!ENTITY name PUBLIC \"pubid\" \"sysid\">\r\n"
"<!ENTITY name SYSTEM \"sysid\">\r\n"),
V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
/* notation declaration */
hr = IMXWriter_QueryInterface(writer, &IID_ISAXDTDHandler, (void**)&dtd);
ok(hr == S_OK, "got 0x%08x\n", hr);
V_VT(&dest) = VT_EMPTY;
hr = IMXWriter_put_output(writer, dest);
ok(hr == S_OK, "got 0x%08x\n", hr);
hr = ISAXDTDHandler_notationDecl(dtd, NULL, 0, NULL, 0, NULL, 0);
ok(hr == E_INVALIDARG, "got 0x%08x\n", hr);
hr = ISAXDTDHandler_notationDecl(dtd, _bstr_("name"), strlen("name"), NULL, 0, NULL, 0);
ok(hr == E_INVALIDARG, "got 0x%08x\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);
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);
hr = ISAXDTDHandler_notationDecl(dtd, _bstr_("name"), strlen("name"), NULL, 0, _bstr_("sysid"), strlen("sysid"));
ok(hr == S_OK, "got 0x%08x\n", hr);
hr = IMXWriter_get_output(writer, &dest);
ok(hr == S_OK, "got 0x%08x\n", hr);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
ok(!lstrcmpW(_bstr_(
"<!NOTATION name"
"<!NOTATION name PUBLIC \"pubid\">\r\n"
"<!NOTATION name PUBLIC \"pubid\" \"sysid\">\r\n"
"<!NOTATION name SYSTEM \"sysid\">\r\n"),
V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
ISAXDTDHandler_Release(dtd);
ISAXContentHandler_Release(content);
ISAXLexicalHandler_Release(lexical);
IVBSAXLexicalHandler_Release(vblexical);
@ -5586,7 +5636,7 @@ START_TEST(saxreader)
if(FAILED(hr))
{
skip("Failed to create SAXXMLReader instance\n");
win_skip("Failed to create SAXXMLReader instance\n");
CoUninitialize();
return;
}
@ -5636,7 +5686,7 @@ START_TEST(saxreader)
test_mxattr_dispex();
}
else
skip("SAXAttributes not supported\n");
win_skip("SAXAttributes not supported\n");
CoUninitialize();
}

View file

@ -514,6 +514,7 @@ static void test_schema_refs(void)
VARIANT_BOOL b;
BSTR str;
LONG len;
HRESULT hr;
doc = create_document(&IID_IXMLDOMDocument2);
if (!doc)
@ -565,6 +566,24 @@ static void test_schema_refs(void)
ole_check(IXMLDOMSchemaCollection_get_length(cache, &len));
ok(len == 0, "got %d\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);
len = -1;
hr = IXMLDOMSchemaCollection_get_length(cache, &len);
ok(hr == S_OK, "got 0x%08x\n", hr);
ok(len == 1, "got %d\n", len);
hr = IXMLDOMSchemaCollection_remove(cache, NULL);
ok(hr == S_OK, "got 0x%08x\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);
str = SysAllocString(xdr_schema_uri);
ole_check(IXMLDOMSchemaCollection_add(cache, str, _variantdoc_(doc)));
@ -1638,6 +1657,24 @@ static void test_remove(void)
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)
{
HRESULT r;
@ -1655,6 +1692,7 @@ START_TEST(schema)
test_dispex();
test_get();
test_remove();
test_ifaces();
CoUninitialize();
}

View file

@ -520,7 +520,7 @@ static BOOL test_try_xmldoc(void)
&IID_IXMLDocument, (LPVOID*)&doc);
if (FAILED(hr))
{
skip("Failed to create XMLDocument instance\n");
win_skip("Failed to create XMLDocument instance\n");
return FALSE;
}