From akhaldi@svn.reactos.org Sat Mar 5 10:36:23 2016
From: akhaldi@svn.reactos.org
To: ros-diffs@reactos.org
Subject: [ros-diffs] [akhaldi] 70886: [MSXML3_WINETEST] Sync with Wine Staging
1.9.4. CORE-10912
Date: Sat, 05 Mar 2016 10:36:23 +0000
Message-ID:
<167036579713.185962.11159557327138021083.generated@iserv.reactos.org>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="===============6908857603518626044=="
--===============6908857603518626044==
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Author: akhaldi
Date: Thu Mar 3 14:05:59 2016
New Revision: 70886
URL: http://svn.reactos.org/svn/reactos?rev=3D70886&view=3Drev
Log:
[MSXML3_WINETEST] Sync with Wine Staging 1.9.4. CORE-10912
Modified:
trunk/rostests/winetests/msxml3/domdoc.c
trunk/rostests/winetests/msxml3/httpreq.c
trunk/rostests/winetests/msxml3/saxreader.c
trunk/rostests/winetests/msxml3/schema.c
Modified: trunk/rostests/winetests/msxml3/domdoc.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msxml3/domdo=
c.c?rev=3D70886&r1=3D70885&r2=3D70886&view=3Ddiff
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/rostests/winetests/msxml3/domdoc.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/msxml3/domdoc.c [iso-8859-1] Thu Mar 3 14:05:59=
2016
@@ -489,7 +489,7 @@
" D1 field\n"
" \n"
" \n"
-" This is a description. \n"
+" This is a description=
. \n"
" \n"
" \n"
" This is a description with preserve=
d whitespace. \n"
@@ -3146,8 +3146,7 @@
{
r =3D IXMLDOMNode_get_text( nodeRoot, &str );
ok( r =3D=3D S_OK, "ret %08x\n", r );
- ok( compareIgnoreReturns(str, _bstr_("fn1.txt\n\n fn2.txt \n\nf1\n")=
), "wrong get_text: %s\n", wine_dbgstr_w(str));
- SysFreeString(str);
+ expect_bstr_eq_and_free(str, "fn1.txt\n \nfn2.txt\n \nf1");
=20
IXMLDOMNode_Release(nodeRoot);
}
@@ -4175,81 +4174,97 @@
ok_(__FILE__, line)(r =3D=3D S_OK, "=3D> %i: " #expr " returned %08x\n",=
__LINE__, r); \
}
=20
+#define helper_ole_check_ver(expr) { \
+ HRESULT r =3D expr; \
+ ok_(__FILE__, line)(r =3D=3D S_OK, "-> %i (%s): " #expr " returned %08x\=
n", __LINE__, ver, r); \
+}
+
#define helper_expect_list_and_release(list, expstr) { \
char *str =3D list_to_string(list); \
- ok_(__FILE__, line)(strcmp(str, expstr)=3D=3D0, "=3D> %i: Invalid node l=
ist: %s, expected %s\n", __LINE__, str, expstr); \
+ ok_(__FILE__, line)(strcmp(str, expstr)=3D=3D0, "=3D> %i (%s): Invalid n=
ode list: %s, expected %s\n", __LINE__, ver, str, expstr); \
if (list) IXMLDOMNodeList_Release(list); \
}
=20
#define helper_expect_bstr_and_release(bstr, str) { \
ok_(__FILE__, line)(lstrcmpW(bstr, _bstr_(str)) =3D=3D 0, \
- "=3D> %i: got %s\n", __LINE__, wine_dbgstr_w(bstr)); \
+ "=3D> %i (%s): got %s\n", __LINE__, ver, wine_dbgstr_w(bstr)); \
SysFreeString(bstr); \
}
=20
-#define check_ws_ignored(doc, str) _check_ws_ignored(__LINE__, doc, str)
-static inline void _check_ws_ignored(int line, IXMLDOMDocument2* doc, char c=
onst* str)
+#define check_ws_ignored(ver, doc, str) _check_ws_ignored(__LINE__, ver, doc=
, str)
+static inline void _check_ws_ignored(int line, const char *ver, IXMLDOMDocum=
ent2* doc, char const* str)
{
IXMLDOMNode *node1, *node2;
IXMLDOMNodeList *list;
BSTR bstr;
=20
- helper_ole_check(IXMLDOMDocument2_selectNodes(doc, _bstr_("//*[local-nam=
e()=3D'html']"), &list));
- helper_ole_check(IXMLDOMNodeList_get_item(list, 0, &node1));
- helper_ole_check(IXMLDOMNodeList_get_item(list, 1, &node2));
- helper_ole_check(IXMLDOMNodeList_reset(list));
+ helper_ole_check_ver(IXMLDOMDocument2_selectNodes(doc, _bstr_("//*[local=
-name()=3D'html']"), &list));
+ helper_ole_check_ver(IXMLDOMNodeList_get_item(list, 0, &node1));
+ helper_ole_check_ver(IXMLDOMNodeList_get_item(list, 1, &node2));
+ helper_ole_check_ver(IXMLDOMNodeList_reset(list));
helper_expect_list_and_release(list, "E1.E5.E1.E2.D1 E2.E5.E1.E2.D1");
=20
- helper_ole_check(IXMLDOMNode_get_childNodes(node1, &list));
- helper_expect_list_and_release(list, "T1.E1.E5.E1.E2.D1 E2.E1.E5.E1.E2.D=
1 E3.E1.E5.E1.E2.D1 T4.E1.E5.E1.E2.D1 E5.E1.E5.E1.E2.D1");
- helper_ole_check(IXMLDOMNode_get_text(node1, &bstr));
+ helper_ole_check_ver(IXMLDOMNode_get_childNodes(node1, &list));
+ helper_expect_list_and_release(list,
+ "[4]1.E1.E5.E1.E2.D1 T2.E1.E5.E1.E2.D1 E3.E1.E5.E1.E2.D1 "
+ "E4.E1.E5.E1.E2.D1 E5.E1.E5.E1.E2.D1 E6.E1.E5.E1.E2.D1");
+ helper_ole_check_ver(IXMLDOMNode_get_text(node1, &bstr));
if (str)
{
helper_expect_bstr_and_release(bstr, str);
}
else
{
- helper_expect_bstr_and_release(bstr, "This is a description.");
+ helper_expect_bstr_and_release(bstr, " This is a description.");
}
IXMLDOMNode_Release(node1);
=20
- helper_ole_check(IXMLDOMNode_get_childNodes(node2, &list));
- helper_expect_list_and_release(list, "T1.E2.E5.E1.E2.D1 E2.E2.E5.E1.E2.D=
1 T3.E2.E5.E1.E2.D1 E4.E2.E5.E1.E2.D1 T5.E2.E5.E1.E2.D1 E6.E2.E5.E1.E2.D1 T7.=
E2.E5.E1.E2.D1");
- helper_ole_check(IXMLDOMNode_get_text(node2, &bstr));
- helper_expect_bstr_and_release(bstr, "\n This is a descri=
ption with preserved whitespace. \n ");
+ helper_ole_check_ver(IXMLDOMNode_get_childNodes(node2, &list));
+ helper_expect_list_and_release(list,
+ "T1.E2.E5.E1.E2.D1 E2.E2.E5.E1.E2.D1 T3.E2.E5.E1.E2.D1 "
+ "E4.E2.E5.E1.E2.D1 T5.E2.E5.E1.E2.D1 E6.E2.E5.E1.E2.D1 T7.E2.E5.=
E1.E2.D1");
+ helper_ole_check_ver(IXMLDOMNode_get_text(node2, &bstr));
+ helper_expect_bstr_and_release(bstr,
+ "\n This is a description with preserved whitespa=
ce. \n ");
IXMLDOMNode_Release(node2);
}
=20
-#define check_ws_preserved(doc, str) _check_ws_preserved(__LINE__, doc, str)
-static inline void _check_ws_preserved(int line, IXMLDOMDocument2* doc, char=
const* str)
+#define check_ws_preserved(ver, doc, str) _check_ws_preserved(__LINE__, ver,=
doc, str)
+static inline void _check_ws_preserved(int line, const char *ver, IXMLDOMDoc=
ument2* doc, char const* str)
{
IXMLDOMNode *node1, *node2;
IXMLDOMNodeList *list;
BSTR bstr;
=20
- helper_ole_check(IXMLDOMDocument2_selectNodes(doc, _bstr_("//*[local-nam=
e()=3D'html']"), &list));
- helper_ole_check(IXMLDOMNodeList_get_item(list, 0, &node1));
- helper_ole_check(IXMLDOMNodeList_get_item(list, 1, &node2));
- helper_ole_check(IXMLDOMNodeList_reset(list));
+ helper_ole_check_ver(IXMLDOMDocument2_selectNodes(doc, _bstr_("//*[local=
-name()=3D'html']"), &list));
+ helper_ole_check_ver(IXMLDOMNodeList_get_item(list, 0, &node1));
+ helper_ole_check_ver(IXMLDOMNodeList_get_item(list, 1, &node2));
+ helper_ole_check_ver(IXMLDOMNodeList_reset(list));
helper_expect_list_and_release(list, "E2.E10.E2.E2.D1 E4.E10.E2.E2.D1");
=20
- helper_ole_check(IXMLDOMNode_get_childNodes(node1, &list));
- helper_expect_list_and_release(list, "T1.E2.E10.E2.E2.D1 E2.E2.E10.E2.E2=
.D1 T3.E2.E10.E2.E2.D1 E4.E2.E10.E2.E2.D1 T5.E2.E10.E2.E2.D1 E6.E2.E10.E2.E2.=
D1 T7.E2.E10.E2.E2.D1");
- helper_ole_check(IXMLDOMNode_get_text(node1, &bstr));
+ helper_ole_check_ver(IXMLDOMNode_get_childNodes(node1, &list));
+ helper_expect_list_and_release(list,
+ "T1.E2.E10.E2.E2.D1 [4]2.E2.E10.E2.E2.D1 T3.E2.E10.E2.E2.D1 "
+ "E4.E2.E10.E2.E2.D1 T5.E2.E10.E2.E2.D1 E6.E2.E10.E2.E2.D1 "
+ "E7.E2.E10.E2.E2.D1 E8.E2.E10.E2.E2.D1 T9.E2.E10.E2.E2.D1");
+ helper_ole_check_ver(IXMLDOMNode_get_text(node1, &bstr));
if (str)
{
helper_expect_bstr_and_release(bstr, str);
}
else
{
- helper_expect_bstr_and_release(bstr, "\n This is a de=
scription. \n ");
+ helper_expect_bstr_and_release(bstr, "\n This is a =
description. \n ");
}
IXMLDOMNode_Release(node1);
=20
- helper_ole_check(IXMLDOMNode_get_childNodes(node2, &list));
- helper_expect_list_and_release(list, "T1.E4.E10.E2.E2.D1 E2.E4.E10.E2.E2=
.D1 T3.E4.E10.E2.E2.D1 E4.E4.E10.E2.E2.D1 T5.E4.E10.E2.E2.D1 E6.E4.E10.E2.E2.=
D1 T7.E4.E10.E2.E2.D1");
- helper_ole_check(IXMLDOMNode_get_text(node2, &bstr));
- helper_expect_bstr_and_release(bstr, "\n This is a descri=
ption with preserved whitespace. \n ");
+ helper_ole_check_ver(IXMLDOMNode_get_childNodes(node2, &list));
+ helper_expect_list_and_release(list,
+ "T1.E4.E10.E2.E2.D1 E2.E4.E10.E2.E2.D1 T3.E4.E10.E2.E2.D1 "
+ "E4.E4.E10.E2.E2.D1 T5.E4.E10.E2.E2.D1 E6.E4.E10.E2.E2.D1 T7.E4.=
E10.E2.E2.D1");
+ helper_ole_check_ver(IXMLDOMNode_get_text(node2, &bstr));
+ helper_expect_bstr_and_release(bstr,
+ "\n This is a description with preserved whitespa=
ce. \n ");
IXMLDOMNode_Release(node2);
}
=20
@@ -4301,110 +4316,142 @@
IXMLDOMNodeList_Release(list);
}
=20
+struct whitespace_t {
+ const CLSID *clsid;
+ const char *name;
+};
+
+static const struct whitespace_t whitespace_test_data[] =3D {
+ { &CLSID_DOMDocument, "CLSID_DOMDocument" },
+ { &CLSID_DOMDocument2, "CLSID_DOMDocument2" },
+ { &CLSID_DOMDocument26, "CLSID_DOMDocument26" },
+ { &CLSID_DOMDocument30, "CLSID_DOMDocument30" },
+ { &CLSID_DOMDocument40, "CLSID_DOMDocument40" },
+ { &CLSID_DOMDocument60, "CLSID_DOMDocument60" },
+ { 0 }
+};
+
static void test_whitespace(void)
{
- IXMLDOMDocument2 *doc1, *doc2, *doc3, *doc4;
- IXMLDOMNodeList *list;
- IXMLDOMElement *root;
- VARIANT_BOOL b;
- HRESULT hr;
- LONG len;
-
- if (!is_clsid_supported(&CLSID_DOMDocument2, &IID_IXMLDOMDocument2)) ret=
urn;
- doc1 =3D create_document(&IID_IXMLDOMDocument2);
- doc2 =3D create_document(&IID_IXMLDOMDocument2);
-
- ole_check(IXMLDOMDocument2_put_preserveWhiteSpace(doc2, VARIANT_TRUE));
- ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc1, &b));
- ok(b =3D=3D VARIANT_FALSE, "expected false\n");
- ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc2, &b));
- ok(b =3D=3D VARIANT_TRUE, "expected true\n");
-
- ole_check(IXMLDOMDocument2_loadXML(doc1, _bstr_(szExampleXML), &b));
- ok(b =3D=3D VARIANT_TRUE, "failed to load XML string\n");
- ole_check(IXMLDOMDocument2_loadXML(doc2, _bstr_(szExampleXML), &b));
- ok(b =3D=3D 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")));
-
- check_ws_ignored(doc1, NULL);
- check_ws_preserved(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));
-
- ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc3, &b));
- ok(b =3D=3D VARIANT_FALSE, "expected false\n");
- ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc4, &b));
- ok(b =3D=3D VARIANT_TRUE, "expected true\n");
-
- check_ws_ignored(doc3, NULL);
- check_ws_preserved(doc4, NULL);
-
- /* setting after loading xml affects trimming of leading/trailing ws onl=
y */
- ole_check(IXMLDOMDocument2_put_preserveWhiteSpace(doc1, VARIANT_TRUE));
- ole_check(IXMLDOMDocument2_put_preserveWhiteSpace(doc2, VARIANT_FALSE));
-
- /* the trailing "\n " isn't there, because it was ws-only nod=
e */
- check_ws_ignored(doc1, "\n This is a description. ");
- check_ws_preserved(doc2, "This is a description.");
-
- /* it takes effect on reload */
- ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc1, &b));
- ok(b =3D=3D VARIANT_TRUE, "expected true\n");
- ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc2, &b));
- ok(b =3D=3D VARIANT_FALSE, "expected false\n");
-
- ole_check(IXMLDOMDocument2_loadXML(doc1, _bstr_(szExampleXML), &b));
- ok(b =3D=3D VARIANT_TRUE, "failed to load XML string\n");
- ole_check(IXMLDOMDocument2_loadXML(doc2, _bstr_(szExampleXML), &b));
- ok(b =3D=3D VARIANT_TRUE, "failed to load XML string\n");
-
- check_ws_preserved(doc1, NULL);
- check_ws_ignored(doc2, NULL);
-
- /* other instances follow suit */
- ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc3, &b));
- ok(b =3D=3D VARIANT_TRUE, "expected true\n");
- ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc4, &b));
- ok(b =3D=3D VARIANT_FALSE, "expected false\n");
-
- check_ws_preserved(doc3, NULL);
- check_ws_ignored(doc4, NULL);
-
- IXMLDOMDocument2_Release(doc2);
- IXMLDOMDocument2_Release(doc3);
- IXMLDOMDocument2_Release(doc4);
-
- /* text with char references */
- test_preserve_charref(doc1, VARIANT_TRUE);
- test_preserve_charref(doc1, VARIANT_FALSE);
-
- /* formatting whitespaces */
- hr =3D IXMLDOMDocument2_put_preserveWhiteSpace(doc1, VARIANT_FALSE);
- ok(hr =3D=3D S_OK, "got 0x%08x\n", hr);
-
- hr =3D IXMLDOMDocument2_loadXML(doc1, _bstr_(complete7), &b);
- ok(hr =3D=3D S_OK, "got 0x%08x\n", hr);
- ok(b =3D=3D VARIANT_TRUE, "for %x\n", b);
-
- hr =3D IXMLDOMDocument2_get_documentElement(doc1, &root);
- ok(hr =3D=3D S_OK, "got 0x%08x\n", hr);
- hr =3D IXMLDOMElement_get_childNodes(root, &list);
- ok(hr =3D=3D S_OK, "got 0x%08x\n", hr);
- len =3D 0;
- hr =3D IXMLDOMNodeList_get_length(list, &len);
- ok(hr =3D=3D S_OK, "got 0x%08x\n", hr);
- ok(len =3D=3D 3, "got %d\n", len);
- IXMLDOMNodeList_Release(list);
- IXMLDOMElement_Release(root);
-
- IXMLDOMDocument2_Release(doc1);
-
- free_bstrs();
+ const struct whitespace_t *class_ptr =3D whitespace_test_data;
+
+ while (class_ptr->clsid)
+ {
+ IXMLDOMDocument2 *doc1, *doc2, *doc3, *doc4;
+ IXMLDOMNodeList *list;
+ IXMLDOMElement *root;
+ VARIANT_BOOL b;
+ HRESULT hr;
+ LONG len;
+
+ if (!is_clsid_supported(class_ptr->clsid, &IID_IXMLDOMDocument2))
+ {
+ class_ptr++;
+ continue;
+ }
+
+ hr =3D CoCreateInstance(class_ptr->clsid, NULL, CLSCTX_INPROC_SERVER,
+ &IID_IXMLDOMDocument2, (void**)&doc1);
+ ok(hr =3D=3D S_OK, "got 0x%08x\n", hr);
+
+ hr =3D CoCreateInstance(class_ptr->clsid, NULL, CLSCTX_INPROC_SERVER,
+ &IID_IXMLDOMDocument2, (void**)&doc2);
+ ok(hr =3D=3D S_OK, "got 0x%08x\n", hr);
+
+ ole_check(IXMLDOMDocument2_put_preserveWhiteSpace(doc2, VARIANT_TRUE=
));
+ ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc1, &b));
+ ok(b =3D=3D VARIANT_FALSE, "expected false\n");
+ ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc2, &b));
+ ok(b =3D=3D VARIANT_TRUE, "expected true\n");
+
+ ole_check(IXMLDOMDocument2_loadXML(doc1, _bstr_(szExampleXML), &b));
+ ok(b =3D=3D VARIANT_TRUE, "failed to load XML string\n");
+ ole_check(IXMLDOMDocument2_loadXML(doc2, _bstr_(szExampleXML), &b));
+ ok(b =3D=3D VARIANT_TRUE, "failed to load XML string\n");
+
+ /* switch to XPath */
+ ole_check(IXMLDOMDocument2_setProperty(doc1, _bstr_("SelectionLangua=
ge"), _variantbstr_("XPath")));
+ ole_check(IXMLDOMDocument2_setProperty(doc2, _bstr_("SelectionLangua=
ge"), _variantbstr_("XPath")));
+
+ 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_IXMLDOMDocument=
2, (void**) &doc3));
+ ole_check(IXMLDOMDocument2_QueryInterface(doc2, &IID_IXMLDOMDocument=
2, (void**) &doc4));
+
+ ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc3, &b));
+ ok(b =3D=3D VARIANT_FALSE, "expected false\n");
+ ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc4, &b));
+ ok(b =3D=3D 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_FALS=
E));
+
+ /* 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));
+ ok(b =3D=3D VARIANT_TRUE, "expected true\n");
+ ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc2, &b));
+ ok(b =3D=3D VARIANT_FALSE, "expected false\n");
+
+ ole_check(IXMLDOMDocument2_loadXML(doc1, _bstr_(szExampleXML), &b));
+ ok(b =3D=3D VARIANT_TRUE, "failed to load XML string\n");
+ ole_check(IXMLDOMDocument2_loadXML(doc2, _bstr_(szExampleXML), &b));
+ ok(b =3D=3D 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));
+ ok(b =3D=3D VARIANT_TRUE, "expected true\n");
+ ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc4, &b));
+ ok(b =3D=3D VARIANT_FALSE, "expected false\n");
+
+ check_ws_preserved(class_ptr->name, doc3, NULL);
+ check_ws_ignored(class_ptr->name, doc4, NULL);
+
+ IXMLDOMDocument2_Release(doc2);
+ IXMLDOMDocument2_Release(doc3);
+ IXMLDOMDocument2_Release(doc4);
+
+ /* text with char references */
+ test_preserve_charref(doc1, VARIANT_TRUE);
+ test_preserve_charref(doc1, VARIANT_FALSE);
+
+ /* formatting whitespaces */
+ hr =3D IXMLDOMDocument2_put_preserveWhiteSpace(doc1, VARIANT_FALSE);
+ ok(hr =3D=3D S_OK, "got 0x%08x\n", hr);
+
+ hr =3D IXMLDOMDocument2_loadXML(doc1, _bstr_(complete7), &b);
+ ok(hr =3D=3D S_OK, "got 0x%08x\n", hr);
+ ok(b =3D=3D VARIANT_TRUE, "for %x\n", b);
+
+ hr =3D IXMLDOMDocument2_get_documentElement(doc1, &root);
+ ok(hr =3D=3D S_OK, "got 0x%08x\n", hr);
+ hr =3D IXMLDOMElement_get_childNodes(root, &list);
+ ok(hr =3D=3D S_OK, "got 0x%08x\n", hr);
+ len =3D 0;
+ hr =3D IXMLDOMNodeList_get_length(list, &len);
+ ok(hr =3D=3D S_OK, "got 0x%08x\n", hr);
+ ok(len =3D=3D 3, "got %d\n", len);
+ IXMLDOMNodeList_Release(list);
+ IXMLDOMElement_Release(root);
+
+ IXMLDOMDocument2_Release(doc1);
+
+ free_bstrs();
+
+ class_ptr++;
+ }
}
=20
typedef struct {
@@ -4640,7 +4687,7 @@
ole_check(IXMLDOMNode_selectNodes(elem1Node, _bstr_("//test:c"), &list));
expect_list_and_release(list, "E3.E3.E2.D1 E3.E4.E2.D1");
ole_check(IXMLDOMNode_selectNodes(elem1Node, _bstr_(".//test:x"), &list)=
);
- expect_list_and_release(list, "E5.E1.E5.E1.E2.D1 E6.E2.E5.E1.E2.D1");
+ expect_list_and_release(list, "E6.E1.E5.E1.E2.D1 E6.E2.E5.E1.E2.D1");
=20
/* SelectionNamespaces syntax error - the namespaces doesn't work anymor=
e but the value is stored */
ole_expect(IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionNamespaces=
"),
@@ -4812,7 +4859,8 @@
=20
static void test_cloneNode(void )
{
- IXMLDOMDocument *doc, *doc2;
+ IXMLDOMDocument2 *doc, *doc_clone;
+ IXMLDOMDocument *doc2;
VARIANT_BOOL b;
IXMLDOMNodeList *pList;
IXMLDOMNamedNodeMap *mapAttr;
@@ -4821,14 +4869,52 @@
IXMLDOMNode *node, *attr;
IXMLDOMNode *node_clone;
IXMLDOMNode *node_first;
+ VARIANT v;
HRESULT hr;
=20
- doc =3D create_document(&IID_IXMLDOMDocument);
-
- ole_check(IXMLDOMDocument_loadXML(doc, _bstr_(complete4A), &b));
+ doc =3D create_document(&IID_IXMLDOMDocument2);
+
+ hr =3D IXMLDOMDocument2_loadXML(doc, _bstr_(complete4A), &b);
+ ok(hr =3D=3D S_OK, "got 0x%08x\n", hr);
ok(b =3D=3D VARIANT_TRUE, "failed to load XML string\n");
=20
- hr =3D IXMLDOMDocument_selectSingleNode(doc, _bstr_("lc/pr"), &node);
+ hr =3D IXMLDOMDocument2_getProperty(doc, _bstr_("SelectionLanguage"), &v=
);
+ ok(hr =3D=3D S_OK, "got 0x%08x\n", hr);
+ ok(!lstrcmpW(V_BSTR(&v), _bstr_("XSLPattern")), "got prop value %s\n", w=
ine_dbgstr_w(V_BSTR(&v)));
+ VariantClear(&v);
+
+ V_BSTR(&v) =3D _bstr_("XPath");
+ V_VT(&v) =3D VT_BSTR;
+ hr =3D IXMLDOMDocument2_setProperty(doc, _bstr_("SelectionLanguage"), v);
+ ok(hr =3D=3D S_OK, "got 0x%08x\n", hr);
+ VariantClear(&v);
+
+ /* clone document node */
+ hr =3D IXMLDOMDocument2_cloneNode(doc, VARIANT_TRUE, &node);
+ ok( hr =3D=3D S_OK, "ret %08x\n", hr );
+ ok( node !=3D NULL, "node %p\n", node );
+
+ hr =3D IXMLDOMNode_get_childNodes(node, &pList);
+ ok( hr =3D=3D S_OK, "ret %08x\n", hr );
+ length =3D 0;
+ hr =3D IXMLDOMNodeList_get_length(pList, &length);
+ ok( hr =3D=3D S_OK, "ret %08x\n", hr );
+ ok(length =3D=3D 2, "got %d\n", length);
+ IXMLDOMNodeList_Release(pList);
+
+ hr =3D IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMDocument2, (void**)&=
doc_clone);
+ ok(hr =3D=3D S_OK, "got 0x%08x\n", hr);
+
+ /* cloned document inherits properties */
+ hr =3D IXMLDOMDocument2_getProperty(doc_clone, _bstr_("SelectionLanguage=
"), &v);
+ ok(hr =3D=3D S_OK, "got 0x%08x\n", hr);
+ ok(!lstrcmpW(V_BSTR(&v), _bstr_("XPath")), "got prop value %s\n", wine_d=
bgstr_w(V_BSTR(&v)));
+ VariantClear(&v);
+
+ IXMLDOMDocument2_Release(doc_clone);
+ IXMLDOMNode_Release(node);
+
+ hr =3D IXMLDOMDocument2_selectSingleNode(doc, _bstr_("lc/pr"), &node);
ok( hr =3D=3D S_OK, "ret %08x\n", hr );
ok( node !=3D NULL, "node %p\n", node );
=20
@@ -4916,7 +5002,7 @@
IXMLDOMNode_Release(node_clone);
=20
IXMLDOMNode_Release(node);
- IXMLDOMDocument_Release(doc);
+ IXMLDOMDocument2_Release(doc);
free_bstrs();
}
=20
@@ -6932,7 +7018,7 @@
=20
static const xslpattern_test_t xslpattern_test_no_ns[] =3D {
/* prefixes don't need to be registered, you may use them as they are in=
the doc */
- { "//bar:x", "E5.E1.E5.E1.E2.D1 E6.E2.E5.E1.E2.D1" },
+ { "//bar:x", "E6.E1.E5.E1.E2.D1 E6.E2.E5.E1.E2.D1" },
/* prefixes must be explicitly specified in the name */
{ "//foo:elem", "" },
{ "//foo:c", "E3.E4.E2.D1" },
Modified: trunk/rostests/winetests/msxml3/httpreq.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msxml3/httpr=
eq.c?rev=3D70886&r1=3D70885&r2=3D70886&view=3Ddiff
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/rostests/winetests/msxml3/httpreq.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/msxml3/httpreq.c [iso-8859-1] Thu Mar 3 14:05:5=
9 2016
@@ -1690,6 +1690,7 @@
hr =3D GetHGlobalFromStream((IStream*)V_UNKNOWN(&varbody), &g);
EXPECT_HR(hr, S_OK);
ok(g !=3D NULL, "got %p\n", g);
+ VariantClear(&varbody);
=20
IDispatch_Release(event);
=20
@@ -1757,6 +1758,7 @@
test_open(xhr, "GET", "http://www.test.winehq.org/tests/hello.html", E_A=
CCESSDENIED);
=20
IXMLHttpRequest_Release(xhr);
+ free_bstrs();
}
=20
START_TEST(httpreq)
Modified: trunk/rostests/winetests/msxml3/saxreader.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msxml3/saxre=
ader.c?rev=3D70886&r1=3D70885&r2=3D70886&view=3Ddiff
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/rostests/winetests/msxml3/saxreader.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/msxml3/saxreader.c [iso-8859-1] Thu Mar 3 14:05=
:59 2016
@@ -302,7 +302,10 @@
SysFreeString(call_seq->sequence[i].attributes[j].uriW);
SysFreeString(call_seq->sequence[i].attributes[j].localW);
SysFreeString(call_seq->sequence[i].attributes[j].qnameW);
+ SysFreeString(call_seq->sequence[i].attributes[j].valueW);
}
+ HeapFree(GetProcessHeap(), 0, call_seq->sequence[i].attributes);
+ call_seq->sequence[i].attr_count =3D 0;
=20
SysFreeString(call_seq->sequence[i].arg1W);
SysFreeString(call_seq->sequence[i].arg2W);
@@ -2868,9 +2871,7 @@
CloseHandle(file);
=20
hr =3D ISAXXMLReader_parseURL(reader, testXmlW);
- if (entry->todo)
- todo_wine ok(hr =3D=3D entry->hr, "Expected 0x%08x, got 0x%08x. =
CLSID %s\n", entry->hr, hr, entry->clsid);
- else
+ todo_wine_if(entry->todo)
ok(hr =3D=3D entry->hr, "Expected 0x%08x, got 0x%08x. CLSID %s\n=
", entry->hr, hr, entry->clsid);
=20
DeleteFileA(testXmlA);
Modified: trunk/rostests/winetests/msxml3/schema.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msxml3/schem=
a.c?rev=3D70886&r1=3D70885&r2=3D70886&view=3Ddiff
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/rostests/winetests/msxml3/schema.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/msxml3/schema.c [iso-8859-1] Thu Mar 3 14:05:59=
2016
@@ -1324,15 +1324,13 @@
EXPECT_HR(hr, S_FALSE);
ok(V_VT(&type) =3D=3D VT_NULL, "%s: got type %i\n", ptr->query, =
V_VT(&type));
}
+ VariantClear(&type);
=20
VariantClear(&v);
hr =3D IXMLDOMNode_get_nodeTypedValue(node, &v);
EXPECT_HR(hr, S_OK);
=20
- if (ptr->todo)
- todo_wine
- ok(V_VT(&v) =3D=3D ptr->type_schema, "%s: got variant type %i\n"=
, ptr->query, V_VT(&v));
- else
+ todo_wine_if(ptr->todo)
ok(V_VT(&v) =3D=3D ptr->type_schema, "%s: got variant type %i\n"=
, ptr->query, V_VT(&v));
=20
switch (ptr->type_schema)
--===============6908857603518626044==--