Jacek Caban : xmllite/tests: Added tests for returned string pointers.
Alexandre Julliard
julliard at winehq.org
Thu Mar 30 15:18:02 CDT 2017
Module: wine
Branch: master
Commit: 261aa667d4e71eae52953d76f635fa4941d17afd
URL: http://source.winehq.org/git/wine.git/?a=commit;h=261aa667d4e71eae52953d76f635fa4941d17afd
Author: Jacek Caban <jacek at codeweavers.com>
Date: Wed Mar 29 20:51:47 2017 +0200
xmllite/tests: Added tests for returned string pointers.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/xmllite/tests/reader.c | 112 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 112 insertions(+)
diff --git a/dlls/xmllite/tests/reader.c b/dlls/xmllite/tests/reader.c
index 0e8a0f5..666432e 100644
--- a/dlls/xmllite/tests/reader.c
+++ b/dlls/xmllite/tests/reader.c
@@ -2495,6 +2495,117 @@ static void test_reader_position(void)
IXmlReader_Release(reader);
}
+static void test_string_pointers(void)
+{
+ const WCHAR *ns, *nsq, *empty, *xmlns_ns, *xmlns_name, *name, *p, *q, *xml, *ptr;
+ IXmlReader *reader;
+ HRESULT hr;
+
+ hr = CreateXmlReader(&IID_IXmlReader, (void **)&reader, NULL);
+ ok(hr == S_OK, "S_OK, got %08x\n", hr);
+
+ set_input_string(reader, "<elem xmlns=\"myns\">myns<elem2 /></elem>");
+
+ read_node(reader, XmlNodeType_Element);
+ empty = reader_value(reader, "");
+ ok(empty == reader_prefix(reader, ""), "empty != prefix\n");
+ name = reader_name(reader, "elem");
+ ok(name == reader_qname(reader, "elem"), "name != qname\n");
+ ns = reader_namespace(reader, "myns");
+
+ next_attribute(reader);
+ ptr = reader_value(reader, "myns");
+ if (ns != ptr)
+ {
+ win_skip("attr value is different than namespace pointer, assuming old xmllite\n");
+ IXmlReader_Release(reader);
+ return;
+ }
+ ok(ns == ptr, "ns != value\n");
+ ok(empty == reader_prefix(reader, ""), "empty != prefix\n");
+ xmlns_ns = reader_namespace(reader, "http://www.w3.org/2000/xmlns/");
+ xmlns_name = reader_name(reader, "xmlns");
+ ok(xmlns_name == reader_qname(reader, "xmlns"), "xmlns_name != qname\n");
+
+ read_node(reader, XmlNodeType_Text);
+ ok(ns != reader_value(reader, "myns"), "ns == value\n");
+ ok(empty == reader_prefix(reader, ""), "empty != prefix\n");
+ ok(empty == reader_namespace(reader, ""), "empty != namespace\n");
+ ok(empty == reader_name(reader, ""), "empty != name\n");
+ ok(empty == reader_qname(reader, ""), "empty != qname\n");
+
+ read_node(reader, XmlNodeType_Element);
+ ok(empty == reader_prefix(reader, ""), "empty != prefix\n");
+ ok(ns == reader_namespace(reader, "myns"), "empty != namespace\n");
+
+ read_node(reader, XmlNodeType_EndElement);
+ ok(empty == reader_prefix(reader, ""), "empty != prefix\n");
+ ok(name == reader_name(reader, "elem"), "empty != name\n");
+ ok(name == reader_qname(reader, "elem"), "empty != qname\n");
+ ok(ns == reader_namespace(reader, "myns"), "empty != namespace\n");
+
+ set_input_string(reader, "<elem xmlns:p=\"myns\" xmlns:q=\"mynsq\"><p:elem2 q:attr=\"\"></p:elem2></elem>");
+
+ read_node(reader, XmlNodeType_Element);
+ ok(empty == reader_prefix(reader, ""), "empty != prefix\n");
+ name = reader_name(reader, "elem");
+ ok(empty == reader_namespace(reader, ""), "empty != namespace\n");
+
+ next_attribute(reader);
+ ns = reader_value(reader, "myns");
+ ok(xmlns_name == reader_prefix(reader, "xmlns"), "xmlns_name != prefix\n");
+ p = reader_name(reader, "p");
+ ok(xmlns_ns == reader_namespace(reader, "http://www.w3.org/2000/xmlns/"), "xmlns_ns != namespace\n");
+
+ next_attribute(reader);
+ nsq = reader_value(reader, "mynsq");
+ ok(xmlns_name == reader_prefix(reader, "xmlns"), "xmlns_name != prefix\n");
+ q = reader_name(reader, "q");
+ ok(xmlns_ns == reader_namespace(reader, "http://www.w3.org/2000/xmlns/"), "xmlns_ns != namespace\n");
+
+ read_node(reader, XmlNodeType_Element);
+ ptr = reader_prefix(reader, "p"); todo_wine ok(p == ptr, "p != prefix\n");
+ ok(ns == reader_namespace(reader, "myns"), "empty != namespace\n");
+ name = reader_qname(reader, "p:elem2");
+
+ next_attribute(reader);
+ ok(empty != reader_value(reader, ""), "empty == value\n");
+ ptr = reader_prefix(reader, "q"); todo_wine ok(q == ptr, "q != prefix\n");
+ ok(nsq == reader_namespace(reader, "mynsq"), "nsq != namespace\n");
+
+ read_node(reader, XmlNodeType_EndElement);
+ ptr = reader_qname(reader, "p:elem2"); todo_wine ok(name != ptr, "q == qname\n");
+
+ set_input_string(reader, "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n");
+
+ read_node(reader, XmlNodeType_XmlDeclaration);
+ ok(empty == reader_value(reader, ""), "empty != value\n");
+ ok(empty == reader_prefix(reader, ""), "empty != prefix\n");
+ xml = reader_name(reader, "xml");
+ ptr = reader_qname(reader, "xml"); todo_wine ok(xml == ptr, "xml != qname\n");
+ ok(empty == reader_namespace(reader, ""), "empty != namespace\n");
+
+ next_attribute(reader);
+ ok(empty == reader_prefix(reader, ""), "empty != prefix\n");
+ ok(empty == reader_namespace(reader, ""), "empty != namespace\n");
+
+ set_input_string(reader, "<elem xmlns:p=\"myns\"><p:elem2 attr=\"\" /></elem>");
+
+ read_node(reader, XmlNodeType_Element);
+ next_attribute(reader);
+ read_value_char(reader, 'm');
+ IXmlReader_GetValue(reader, &p, NULL);
+ todo_wine
+ ok(!strcmp_wa(p, "yns"), "value = %s\n", wine_dbgstr_w(p));
+
+ read_node(reader, XmlNodeType_Element);
+ ns = reader_namespace(reader, "myns");
+ todo_wine
+ ok(ns+1 == p, "ns+1 != p\n");
+
+ IXmlReader_Release(reader);
+}
+
START_TEST(reader)
{
test_reader_create();
@@ -2521,4 +2632,5 @@ START_TEST(reader)
test_endoffile();
test_max_element_depth();
test_reader_position();
+ test_string_pointers();
}
More information about the wine-cvs
mailing list