From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/msxml3/tests/saxreader.c | 41 +++++++++++++++++++++++++++++++++++ dlls/msxml6/tests/saxreader.c | 24 ++++++++++++++++++++ 2 files changed, 65 insertions(+)
diff --git a/dlls/msxml3/tests/saxreader.c b/dlls/msxml3/tests/saxreader.c index cba3e5c6a63..06c0ad30037 100644 --- a/dlls/msxml3/tests/saxreader.c +++ b/dlls/msxml3/tests/saxreader.c @@ -595,6 +595,9 @@ static const char test2_cdata_xml[] = static const char test3_cdata_xml[] = "<?xml version=\"1.0\" ?><a><![CDATA[Some text data]]></a>";
+static const char test_pi_xml[] = +"<?xml version=\"1.0\" ?><a><?t some text ?></a>"; + static struct call_entry content_handler_test1[] = { { CH_PUTDOCUMENTLOCATOR, 0, 0, S_OK }, { CH_STARTDOCUMENT, 0, 0, S_OK }, @@ -928,6 +931,28 @@ static struct call_entry cdata_test3[] = { { CH_ENDTEST } };
+static struct call_entry pi_test[] = +{ + { CH_PUTDOCUMENTLOCATOR, 0, 0, S_OK }, + { CH_STARTDOCUMENT, 0, 0, S_OK }, + { CH_STARTELEMENT, 1, 26, S_OK, "", "a", "a" }, + { CH_PROCESSINGINSTRUCTION, 1, 30, S_OK, "t", "some text " }, + { CH_ENDELEMENT, 1, 44, S_OK, "", "a", "a" }, + { CH_ENDDOCUMENT, 0, 0, S_OK }, + { CH_ENDTEST } +}; + +static struct call_entry pi_test_v4[] = +{ + { CH_PUTDOCUMENTLOCATOR, 1, 0, S_OK }, + { CH_STARTDOCUMENT, 1, 22, S_OK }, + { CH_STARTELEMENT, 1, 25, S_OK, "", "a", "a" }, + { CH_PROCESSINGINSTRUCTION, 1, 41, S_OK, "t", "some text " }, + { CH_ENDELEMENT, 1, 45, S_OK, "", "a", "a" }, + { CH_ENDDOCUMENT, 1, 45, S_OK }, + { CH_ENDTEST } +}; + /* this is what MSXML6 does */ static struct call_entry cdata_test_alt[] = { { CH_PUTDOCUMENTLOCATOR, 1, 0, S_OK }, @@ -2513,6 +2538,22 @@ static void test_saxreader(void)
IStream_Release(stream);
+ /* PI */ + V_VT(&var) = VT_UNKNOWN; + V_UNKNOWN(&var) = (IUnknown *)create_test_stream(test_pi_xml, -1); + + if (IsEqualGUID(table->clsid, &CLSID_SAXXMLReader40)) + test_seq = pi_test_v4; + else + test_seq = pi_test; + + set_expected_seq(test_seq); + hr = ISAXXMLReader_parse(reader, var); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + sprintf(seqname, "%s: pi test", table->name); + ok_sequence(sequences, CONTENT_HANDLER_INDEX, test_seq, seqname, TRUE); + VariantClear(&var); + ISAXXMLReader_Release(reader); table++; } diff --git a/dlls/msxml6/tests/saxreader.c b/dlls/msxml6/tests/saxreader.c index 3db2619e5ad..6daff9f400d 100644 --- a/dlls/msxml6/tests/saxreader.c +++ b/dlls/msxml6/tests/saxreader.c @@ -534,6 +534,9 @@ static const char test2_cdata_xml[] = static const char test3_cdata_xml[] = "<?xml version=\"1.0\" ?><a><![CDATA[Some text data]]></a>";
+static const char test_pi_xml[] = +"<?xml version=\"1.0\" ?><a><?t some text ?></a>"; + struct class_support { const GUID *clsid; @@ -3791,6 +3794,17 @@ static struct call_entry cdata_test3_alt[] = { CH_ENDTEST } };
+static struct call_entry pi_test[] = +{ + { CH_PUTDOCUMENTLOCATOR, 1, 0, S_OK }, + { CH_STARTDOCUMENT, 1, 22, S_OK }, + { CH_STARTELEMENT, 1, 25, S_OK, "", "a", "a" }, + { CH_PROCESSINGINSTRUCTION, 1, 41, S_OK, "t", "some text " }, + { CH_ENDELEMENT, 1, 45, S_OK, "", "a", "a" }, + { CH_ENDDOCUMENT, 1, 45, S_OK }, + { CH_ENDTEST } +}; + static int read_cnt;
static HRESULT WINAPI instream_Read(IStream *iface, void *pv, ULONG cb, ULONG *pcbRead) @@ -4579,6 +4593,16 @@ static void test_saxreader(void)
IStream_Release(stream);
+ /* PI */ + V_VT(&var) = VT_UNKNOWN; + V_UNKNOWN(&var) = (IUnknown *)create_test_stream(test_pi_xml, -1); + test_seq = pi_test; + set_expected_seq(test_seq); + hr = ISAXXMLReader_parse(reader, var); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok_sequence(sequences, CONTENT_HANDLER_INDEX, test_seq, "pi test 1", TRUE); + VariantClear(&var); + ISAXXMLReader_Release(reader);
free_bstrs();