Author: akhaldi
Date: Sat Sep 28 15:43:21 2013
New Revision: 60440
URL:
http://svn.reactos.org/svn/reactos?rev=60440&view=rev
Log:
[XMLLITE_WINETEST]
* Sync with Wine 1.7.1.
CORE-7469
Modified:
trunk/rostests/winetests/xmllite/CMakeLists.txt
trunk/rostests/winetests/xmllite/reader.c
Modified: trunk/rostests/winetests/xmllite/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/xmllite/CMakeLi…
==============================================================================
--- trunk/rostests/winetests/xmllite/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/rostests/winetests/xmllite/CMakeLists.txt [iso-8859-1] Sat Sep 28 15:43:21 2013
@@ -1,19 +1,10 @@
-
-add_definitions(-D__ROS_LONG64__)
list(APPEND SOURCE
reader.c
writer.c
testlist.c)
-if(NOT MSVC)
- # FIXME:
http://www.cmake.org/Bug/view.php?id=12998
- #allow_warnings(xmllite_winetest)
- set_source_files_properties(${SOURCE} PROPERTIES COMPILE_FLAGS
"-Wno-error")
-endif()
-
add_executable(xmllite_winetest ${SOURCE})
-target_link_libraries(xmllite_winetest wine uuid)
set_module_type(xmllite_winetest win32cui)
-add_importlibs(xmllite_winetest xmllite ole32 msvcrt kernel32 ntdll)
+add_importlibs(xmllite_winetest ole32 msvcrt kernel32)
add_cd_file(TARGET xmllite_winetest DESTINATION reactos/bin FOR all)
Modified: trunk/rostests/winetests/xmllite/reader.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/xmllite/reader.…
==============================================================================
--- trunk/rostests/winetests/xmllite/reader.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/xmllite/reader.c [iso-8859-1] Sat Sep 28 15:43:21 2013
@@ -747,7 +747,6 @@
hr = IXmlReader_GetDepth(reader, &count);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
-todo_wine
ok(count == 1, "Expected 1, got %d\n", count);
hr = IXmlReader_MoveToElement(reader);
@@ -776,6 +775,7 @@
const char *value;
HRESULT hr;
HRESULT hr_broken; /* this is set to older version results */
+ int todo : 1;
};
static struct test_entry comment_tests[] = {
@@ -1053,18 +1053,16 @@
str = NULL;
hr = IXmlReader_GetLocalName(reader, &str, &len);
ok(hr == S_OK, "got 0x%08x\n", hr);
-todo_wine {
ok(len == lstrlenW(sysW), "got %u\n", len);
ok(!lstrcmpW(str, sysW), "got %s\n", wine_dbgstr_w(str));
-}
+
len = 0;
str = NULL;
hr = IXmlReader_GetValue(reader, &str, &len);
ok(hr == S_OK, "got 0x%08x\n", hr);
-todo_wine {
ok(len == lstrlenW(sysvalW), "got %u\n", len);
ok(!lstrcmpW(str, sysvalW), "got %s\n", wine_dbgstr_w(str));
-}
+
hr = IXmlReader_MoveToElement(reader);
ok(hr == S_OK, "got 0x%08x\n", hr);
@@ -1072,9 +1070,10 @@
str = NULL;
hr = IXmlReader_GetLocalName(reader, &str, &len);
ok(hr == S_OK, "got 0x%08x\n", hr);
+todo_wine {
ok(len == lstrlenW(dtdnameW), "got %u\n", len);
ok(!lstrcmpW(str, dtdnameW), "got %s\n", wine_dbgstr_w(str));
-
+}
len = 0;
str = NULL;
hr = IXmlReader_GetQualifiedName(reader, &str, &len);
@@ -1170,16 +1169,20 @@
ok(hr == S_OK, "got %08x\n", hr);
ok(depth == 0, "got %d\n", depth);
+ type = XmlNodeType_None;
hr = IXmlReader_Read(reader, &type);
ok(hr == S_OK, "got %08x\n", hr);
+ ok(type == XmlNodeType_Element, "got %d\n", type);
depth = 1;
hr = IXmlReader_GetDepth(reader, &depth);
ok(hr == S_OK, "got %08x\n", hr);
ok(depth == 0, "got %d\n", depth);
+ type = XmlNodeType_None;
hr = IXmlReader_Read(reader, &type);
ok(hr == S_OK, "got %08x\n", hr);
+ ok(type == XmlNodeType_Element, "got %d\n", type);
depth = 0;
hr = IXmlReader_GetDepth(reader, &depth);
@@ -1322,6 +1325,9 @@
static struct test_entry cdata_tests[] = {
{ "<a><![CDATA[ ]]data ]]></a>", "", "
]]data ", S_OK },
{ "<a><![CDATA[<![CDATA[ data ]]]]></a>",
"", "<![CDATA[ data ]]", S_OK },
+ { "<a><![CDATA[\n \r\n \n\n ]]></a>", "",
"\n \n \n\n ", S_OK, S_OK, 1 },
+ { "<a><![CDATA[\r \r\r\n \n\n ]]></a>", "",
"\n \n\n \n\n ", S_OK, S_OK, 1 },
+ { "<a><![CDATA[\r\r \n\r \r \n\n ]]></a>", "",
"\n\n \n\n \n \n\n ", S_OK },
{ NULL }
};
@@ -1365,15 +1371,122 @@
ok(type == XmlNodeType_CDATA, "got %d for %s\n", type,
test->xml);
+ str_exp = a2w(test->name);
+
len = 1;
str = NULL;
hr = IXmlReader_GetLocalName(reader, &str, &len);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(len == strlen(test->name), "got %u\n", len);
+ ok(!lstrcmpW(str, str_exp), "got %s\n", wine_dbgstr_w(str));
+
+ str = NULL;
+ hr = IXmlReader_GetLocalName(reader, &str, NULL);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(!lstrcmpW(str, str_exp), "got %s\n", wine_dbgstr_w(str));
+
+ free_str(str_exp);
+
+ len = 1;
+ str = NULL;
+ hr = IXmlReader_GetQualifiedName(reader, &str, &len);
ok(hr == S_OK, "got 0x%08x\n", hr);
ok(len == strlen(test->name), "got %u\n", len);
str_exp = a2w(test->name);
ok(!lstrcmpW(str, str_exp), "got %s\n", wine_dbgstr_w(str));
free_str(str_exp);
+ /* value */
+ len = 1;
+ str = NULL;
+ hr = IXmlReader_GetValue(reader, &str, &len);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+
+ str_exp = a2w(test->value);
+ if (test->todo)
+ {
+ todo_wine {
+ ok(len == strlen(test->value), "got %u\n", len);
+ ok(!lstrcmpW(str, str_exp), "got %s\n", wine_dbgstr_w(str));
+ }
+ }
+ else
+ {
+ ok(len == strlen(test->value), "got %u\n", len);
+ ok(!lstrcmpW(str, str_exp), "got %s\n", wine_dbgstr_w(str));
+ }
+ free_str(str_exp);
+ }
+
+ IStream_Release(stream);
+ test++;
+ }
+
+ IXmlReader_Release(reader);
+}
+
+static struct test_entry text_tests[] = {
+ { "<a>simple text</a>", "", "simple text",
S_OK },
+ { "<a>text ]]> text</a>", "", "",
WC_E_CDSECTEND },
+ { NULL }
+};
+
+static void test_read_text(void)
+{
+ struct test_entry *test = text_tests;
+ IXmlReader *reader;
+ HRESULT hr;
+
+ hr = pCreateXmlReader(&IID_IXmlReader, (void**)&reader, NULL);
+ ok(hr == S_OK, "S_OK, got %08x\n", hr);
+
+ while (test->xml)
+ {
+ XmlNodeType type;
+ IStream *stream;
+
+ stream = create_stream_on_data(test->xml, strlen(test->xml)+1);
+ hr = IXmlReader_SetInput(reader, (IUnknown*)stream);
+ ok(hr == S_OK, "got %08x\n", hr);
+
+ type = XmlNodeType_None;
+ hr = IXmlReader_Read(reader, &type);
+
+ /* read one more to get to CDATA */
+ if (type == XmlNodeType_Element)
+ {
+ type = XmlNodeType_None;
+ hr = IXmlReader_Read(reader, &type);
+ }
+
+ if (test->hr_broken)
+ ok(hr == test->hr || broken(hr == test->hr_broken), "got %08x for
%s\n", hr, test->xml);
+ else
+ ok(hr == test->hr, "got %08x for %s\n", hr, test->xml);
+ if (hr == S_OK)
+ {
+ const WCHAR *str;
+ WCHAR *str_exp;
+ UINT len;
+
+ ok(type == XmlNodeType_Text, "got %d for %s\n", type,
test->xml);
+
+ str_exp = a2w(test->name);
+
+ len = 1;
+ str = NULL;
+ hr = IXmlReader_GetLocalName(reader, &str, &len);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(len == strlen(test->name), "got %u\n", len);
+ ok(!lstrcmpW(str, str_exp), "got %s\n", wine_dbgstr_w(str));
+
+ str = NULL;
+ hr = IXmlReader_GetLocalName(reader, &str, NULL);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(!lstrcmpW(str, str_exp), "got %s\n", wine_dbgstr_w(str));
+
+ free_str(str_exp);
+
len = 1;
str = NULL;
hr = IXmlReader_GetQualifiedName(reader, &str, &len);
@@ -1383,6 +1496,159 @@
ok(!lstrcmpW(str, str_exp), "got %s\n", wine_dbgstr_w(str));
free_str(str_exp);
+ /* value */
+ len = 1;
+ str = NULL;
+ hr = IXmlReader_GetValue(reader, &str, &len);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+
+ str_exp = a2w(test->value);
+ if (test->todo)
+ {
+ todo_wine {
+ ok(len == strlen(test->value), "got %u\n", len);
+ ok(!lstrcmpW(str, str_exp), "got %s\n", wine_dbgstr_w(str));
+ }
+ }
+ else
+ {
+ ok(len == strlen(test->value), "got %u\n", len);
+ ok(!lstrcmpW(str, str_exp), "got %s\n", wine_dbgstr_w(str));
+ }
+ free_str(str_exp);
+ }
+
+ IStream_Release(stream);
+ test++;
+ }
+
+ IXmlReader_Release(reader);
+}
+
+struct test_entry_empty {
+ const char *xml;
+ BOOL empty;
+};
+
+static struct test_entry_empty empty_element_tests[] = {
+ { "<a></a>", FALSE },
+ { "<a/>", TRUE },
+ { NULL }
+};
+
+static void test_isemptyelement(void)
+{
+ struct test_entry_empty *test = empty_element_tests;
+ IXmlReader *reader;
+ HRESULT hr;
+
+ hr = pCreateXmlReader(&IID_IXmlReader, (void**)&reader, NULL);
+ ok(hr == S_OK, "S_OK, got %08x\n", hr);
+
+ while (test->xml)
+ {
+ XmlNodeType type;
+ IStream *stream;
+ BOOL ret;
+
+ stream = create_stream_on_data(test->xml, strlen(test->xml)+1);
+ hr = IXmlReader_SetInput(reader, (IUnknown*)stream);
+ ok(hr == S_OK, "got %08x\n", hr);
+
+ type = XmlNodeType_None;
+ hr = IXmlReader_Read(reader, &type);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(type == XmlNodeType_Element, "got %d\n", type);
+
+ ret = IXmlReader_IsEmptyElement(reader);
+ ok(ret == test->empty, "got %d, expected %d. xml=%s\n", ret,
test->empty, test->xml);
+
+ IStream_Release(stream);
+ test++;
+ }
+
+ IXmlReader_Release(reader);
+}
+
+static struct test_entry attributes_tests[] = {
+ { "<a attr1=\"attrvalue\"/>", "attr1",
"attrvalue", S_OK },
+ { "<a attr1=\"a\'\'ttrvalue\"/>",
"attr1", "a\'\'ttrvalue", S_OK },
+ { "<a attr1=\'a\"ttrvalue\'/>", "attr1",
"a\"ttrvalue", S_OK },
+ { "<a attr1=\' \'/>", "attr1", " ", S_OK
},
+ { "<a attr1=\" \"/>", "attr1", " ",
S_OK },
+ { "<a attr1=\"\r\n \r \n \t\n\r\"/>", "attr1",
" ", S_OK },
+ { "<a attr1=\" val \"/>", "attr1", " val
", S_OK },
+ { "<a attr1=\"\r\n\tval\n\"/>", "attr1", "
val ", S_OK },
+ { "<a attr1=\"val \"/>", "attr1",
"val ", S_OK },
+ { "<a attr1=\"val \"/>", "attr1",
"val ", S_OK },
+ { "<a
attr1=\"<>&'"\"/>",
"attr1", "<>&\'\"", S_OK },
+ { "<a attr1=\"&entname;\"/>", NULL, NULL,
WC_E_UNDECLAREDENTITY },
+ { "<a attr1=\"val\"/>", NULL, NULL,
WC_E_XMLCHARACTER },
+ { "<a attr1=\"val &#a;\"/>", NULL, NULL, WC_E_DIGIT,
WC_E_SEMICOLON },
+ { "<a attr1=\"val a;\"/>", NULL, NULL,
WC_E_SEMICOLON },
+ { "<a attr1=\"val g;\"/>", NULL, NULL,
WC_E_SEMICOLON },
+ { "<a attr1=\"val &#xg;\"/>", NULL, NULL,
WC_E_HEXDIGIT, WC_E_SEMICOLON },
+ { "<a attr1=attrvalue/>", NULL, NULL, WC_E_QUOTE },
+ { "<a attr1=\"attr<value\"/>", NULL, NULL, WC_E_LESSTHAN
},
+ { "<a attr1=\"&entname\"/>", NULL, NULL, WC_E_SEMICOLON
},
+ { NULL }
+};
+
+static void test_read_attribute(void)
+{
+ struct test_entry *test = attributes_tests;
+ IXmlReader *reader;
+ HRESULT hr;
+
+ hr = pCreateXmlReader(&IID_IXmlReader, (void**)&reader, NULL);
+ ok(hr == S_OK, "S_OK, got %08x\n", hr);
+
+ while (test->xml)
+ {
+ XmlNodeType type;
+ IStream *stream;
+
+ stream = create_stream_on_data(test->xml, strlen(test->xml)+1);
+ hr = IXmlReader_SetInput(reader, (IUnknown*)stream);
+ ok(hr == S_OK, "got %08x\n", hr);
+
+ type = XmlNodeType_None;
+ hr = IXmlReader_Read(reader, &type);
+
+ if (test->hr_broken)
+ ok(hr == test->hr || broken(hr == test->hr_broken), "got %08x for
%s\n", hr, test->xml);
+ else
+ ok(hr == test->hr, "got %08x for %s\n", hr, test->xml);
+ if (hr == S_OK)
+ {
+ const WCHAR *str;
+ WCHAR *str_exp;
+ UINT len;
+
+ ok(type == XmlNodeType_Element, "got %d for %s\n", type,
test->xml);
+
+ hr = IXmlReader_MoveToFirstAttribute(reader);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+
+ len = 1;
+ str = NULL;
+ hr = IXmlReader_GetLocalName(reader, &str, &len);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(len == strlen(test->name), "got %u\n", len);
+ str_exp = a2w(test->name);
+ ok(!lstrcmpW(str, str_exp), "got %s\n", wine_dbgstr_w(str));
+ free_str(str_exp);
+
+ len = 1;
+ str = NULL;
+ hr = IXmlReader_GetQualifiedName(reader, &str, &len);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ todo_wine {
+ ok(len == strlen(test->name), "got %u\n", len);
+ str_exp = a2w(test->name);
+ ok(!lstrcmpW(str, str_exp), "got %s\n", wine_dbgstr_w(str));
+ free_str(str_exp);
+ }
/* value */
len = 1;
str = NULL;
@@ -1417,11 +1683,14 @@
test_reader_create();
test_readerinput();
test_reader_state();
+ test_read_attribute();
test_read_cdata();
test_read_comment();
test_read_pi();
test_read_dtd();
test_read_element();
+ test_isemptyelement();
+ test_read_text();
test_read_full();
test_read_pending();
test_readvaluechunk();