Jacek Caban : xmllite/tests: Added more value tests.

Alexandre Julliard julliard at winehq.org
Wed Mar 22 15:52:35 CDT 2017


Module: wine
Branch: master
Commit: 40a241469eac20f575f59b6b2a4472f10a696e7e
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=40a241469eac20f575f59b6b2a4472f10a696e7e

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Mar 21 16:19:49 2017 +0100

xmllite/tests: Added more value tests.

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 | 71 +++++++++++++++++++++++++--------------------
 1 file changed, 39 insertions(+), 32 deletions(-)

diff --git a/dlls/xmllite/tests/reader.c b/dlls/xmllite/tests/reader.c
index c9ae1db..56487d7 100644
--- a/dlls/xmllite/tests/reader.c
+++ b/dlls/xmllite/tests/reader.c
@@ -1140,7 +1140,10 @@ static void test_read_pi(void)
 
 struct nodes_test {
     const char *xml;
-    XmlNodeType types[20];
+    struct {
+        XmlNodeType type;
+        const char *value;
+    } nodes[20];
 };
 
 static const char misc_test_xml[] =
@@ -1164,22 +1167,22 @@ static const char misc_test_xml[] =
 static struct nodes_test misc_test = {
     misc_test_xml,
     {
-        XmlNodeType_Comment,
-        XmlNodeType_Comment,
-        XmlNodeType_ProcessingInstruction,
-        XmlNodeType_Comment,
-        XmlNodeType_Whitespace,
-        XmlNodeType_Comment,
-        XmlNodeType_Element,
-        XmlNodeType_Whitespace,
-        XmlNodeType_Element,
-        XmlNodeType_Text,
-        XmlNodeType_Comment,
-        XmlNodeType_Text,
-        XmlNodeType_ProcessingInstruction,
-        XmlNodeType_Whitespace,
-        XmlNodeType_EndElement,
-        XmlNodeType_None
+        {XmlNodeType_Comment, " comment1 "},
+        {XmlNodeType_Comment, " comment2 "},
+        {XmlNodeType_ProcessingInstruction, "pi1body "},
+        {XmlNodeType_Comment, " comment3 "},
+        {XmlNodeType_Whitespace, " \t \n \n"},
+        {XmlNodeType_Comment, " comment4 "},
+        {XmlNodeType_Element, ""},
+        {XmlNodeType_Whitespace, "\n\t"},
+        {XmlNodeType_Element, ""},
+        {XmlNodeType_Text, "text"},
+        {XmlNodeType_Comment, " comment "},
+        {XmlNodeType_Text, "text2"},
+        {XmlNodeType_ProcessingInstruction, "pibody "},
+        {XmlNodeType_Whitespace, "\n"},
+        {XmlNodeType_EndElement, ""},
+        {XmlNodeType_None, ""}
     }
 };
 
@@ -1187,37 +1190,41 @@ static void test_read_full(void)
 {
     struct nodes_test *test = &misc_test;
     IXmlReader *reader;
+    const WCHAR *value;
     XmlNodeType type;
     IStream *stream;
+    ULONG len;
     HRESULT hr;
     int i;
 
     hr = CreateXmlReader(&IID_IXmlReader, (void**)&reader, NULL);
     ok(hr == S_OK, "S_OK, got %08x\n", hr);
 
-    stream = create_stream_on_data(test->xml, strlen(test->xml)+1);
+    stream = create_stream_on_data(test->xml, strlen(test->xml));
     hr = IXmlReader_SetInput(reader, (IUnknown*)stream);
     ok(hr == S_OK, "got %08x\n", hr);
 
     i = 0;
     type = ~0u;
-    while (IXmlReader_Read(reader, &type) == S_OK)
+    do
     {
-        ok(test->types[i] != XmlNodeType_None, "%d: unexpected end of test data\n", i);
-        if (test->types[i] == XmlNodeType_None) break;
-        ok(type == test->types[i], "%d: got wrong type %d, expected %d\n", i, type, test->types[i]);
-        if (type == XmlNodeType_Whitespace)
-        {
-            const WCHAR *ptr;
-            UINT len = 0;
+        hr = IXmlReader_Read(reader, &type);
+        if (test->nodes[i].type != XmlNodeType_None)
+            ok(hr == S_OK, "Read returned %08x\n", hr);
+        else
+            ok(hr == S_FALSE, "Read returned %08x\n", hr);
+
+        ok(type == test->nodes[i].type, "%d: got wrong type %d, expected %d\n", i, type, test->nodes[i].type);
 
-            hr = IXmlReader_GetValue(reader, &ptr, &len);
-            ok(hr == S_OK, "%d: GetValue failed 0x%08x\n", i, hr);
-            ok(len > 0, "%d: wrong value length %d\n", i, len);
+        len = 0xdeadbeef;
+        hr = IXmlReader_GetValue(reader, &value, &len);
+        ok(hr == S_OK, "GetValue failed: %08x\n", hr);
+        if (test->nodes[i].value)
+        {
+            ok(!strcmp_wa(value, test->nodes[i].value), "value = %s\n", wine_dbgstr_w(value));
+            ok(len == strlen(test->nodes[i].value), "len = %u\n", len);
         }
-        i++;
-    }
-    ok(test->types[i] == XmlNodeType_None, "incomplete sequence, got %d\n", test->types[i]);
+    } while(test->nodes[i++].type != XmlNodeType_None);
 
     IStream_Release(stream);
     IXmlReader_Release(reader);




More information about the wine-cvs mailing list