From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/msxml3/tests/saxreader.c | 9 ------ dlls/msxml6/tests/saxreader.c | 57 +++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 9 deletions(-)
diff --git a/dlls/msxml3/tests/saxreader.c b/dlls/msxml3/tests/saxreader.c index aa9ea87237b..f156b40079b 100644 --- a/dlls/msxml3/tests/saxreader.c +++ b/dlls/msxml3/tests/saxreader.c @@ -2917,7 +2917,6 @@ static const struct enc_test_entry_t encoding_test_data[] = { { &CLSID_SAXXMLReader, "CLSID_SAXXMLReader", UTF8BOMTest, 0xc00ce56f, TRUE }, { &CLSID_SAXXMLReader30, "CLSID_SAXXMLReader30", UTF8BOMTest, 0xc00ce56f, TRUE }, { &CLSID_SAXXMLReader40, "CLSID_SAXXMLReader40", UTF8BOMTest, S_OK, FALSE }, - { &CLSID_SAXXMLReader60, "CLSID_SAXXMLReader60", UTF8BOMTest, S_OK, FALSE }, { 0 } };
@@ -4905,14 +4904,6 @@ static void test_saxreader_dispex(void)
IVBSAXXMLReader_Release(vbreader); ISAXXMLReader_Release(reader); - - if (is_clsid_supported(&CLSID_SAXXMLReader60, reader_support_data)) - { - hr = CoCreateInstance(&CLSID_SAXXMLReader60, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void**)&unk); - ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - test_obj_dispex(unk); - IUnknown_Release(unk); - } }
static void test_mxwriter_dispex(void) diff --git a/dlls/msxml6/tests/saxreader.c b/dlls/msxml6/tests/saxreader.c index 45587d79e67..b7b3a471e84 100644 --- a/dlls/msxml6/tests/saxreader.c +++ b/dlls/msxml6/tests/saxreader.c @@ -46,6 +46,7 @@ static struct class_support class_support[] = { { &CLSID_MXXMLWriter60, "MXXMLWriter60", &IID_IMXWriter }, { &CLSID_SAXAttributes60, "SAXAttributes60", &IID_IMXAttributes }, + { &CLSID_SAXXMLReader60, "SAXXMLReader60", &IID_ISAXXMLReader }, { NULL } };
@@ -2830,6 +2831,56 @@ static void test_mxwriter_indent(void) free_bstrs(); }
+static void test_saxreader_encoding(void) +{ + /* UTF-8 data with UTF-8 BOM and UTF-16 in prolog */ + static const CHAR UTF8BOMTest[] = + "\xEF\xBB\xBF<?xml version = \"1.0\" encoding = \"UTF-16\"?>\n" + "<a></a>\n"; + + static const CHAR testXmlA[] = "test.xml"; + + ISAXXMLReader *reader; + VARIANT input; + DWORD written; + HANDLE file; + HRESULT hr; + + hr = CoCreateInstance(&CLSID_SAXXMLReader60, NULL, CLSCTX_INPROC_SERVER, &IID_ISAXXMLReader, (void**)&reader); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + file = CreateFileA(testXmlA, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + ok(file != INVALID_HANDLE_VALUE, "Could not create file: %lu\n", GetLastError()); + WriteFile(file, UTF8BOMTest, sizeof(UTF8BOMTest)-1, &written, NULL); + CloseHandle(file); + + hr = ISAXXMLReader_parseURL(reader, L"test.xml"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + DeleteFileA(testXmlA); + + /* try BSTR input with no BOM or '<?xml' instruction */ + V_VT(&input) = VT_BSTR; + V_BSTR(&input) = _bstr_("<element></element>"); + hr = ISAXXMLReader_parse(reader, input); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + ISAXXMLReader_Release(reader); + + free_bstrs(); +} + +static void test_saxreader_dispex(void) +{ + IUnknown *unk; + HRESULT hr; + + hr = CoCreateInstance(&CLSID_SAXXMLReader60, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void**)&unk); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + test_obj_dispex(unk); + IUnknown_Release(unk); +} + START_TEST(saxreader) { HRESULT hr; @@ -2839,6 +2890,12 @@ START_TEST(saxreader)
get_class_support_data();
+ if (is_class_supported(&CLSID_SAXXMLReader60)) + { + test_saxreader_encoding(); + test_saxreader_dispex(); + } + if (is_class_supported(&CLSID_MXXMLWriter60)) { test_mxwriter_handlers();